Tiểu luận Phân tích và thiết kế thuật toán B-TREES

23 1K 11
Tiểu luận Phân tích và thiết kế thuật toán B-TREES

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC HUẾ ĐẠI HỌC KHOA HỌC HUẾ KHOA CÔNG NGHỆ THÔNG TIN ***** TIỂU LUẬN PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN Đề tài : GVHD: TS. Hoàng Quang LỚP: Khoa học máy tính 2012 -2014 HVTH: Nhóm 7 Sử Minh Đạt Phan Nguyễn Ý Nhi Cung Nguyễn Phước Tài Trần Hữu Tấn Lê Thị Thanh Thủy B-TREES Huế, 10/2014 Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 2 B-TREES CHƯƠNG 18: B-TREES Tổng quan B-trees là những cây tìm kiếm cân bằng được thiết kế để làm việc tốt trên những ổ đĩa từ tính hay những thiết bị lưu trữ phụ được truy xuất trực tiếp khác. B-tree tương tự như cây đỏ-đen (chương 13), nhưng chúng tối ưu hóa hơn cho những thao tác vào ra dữ liệu trên ổ đĩa. Nhiều hệ thống cơ sở dữ liệu sử dụng B-tree, hay biến thể của B-tree để lưu trữ thông tin. B-tree khác cây đỏ-đen ở chỗ một nút của B-tree có thể có một đến hàng ngàn nút con. Nói cách khác, một yếu tố nhánh của B-tree có thể khá rộng, mặc dù nó thường được quy định bởi đặc điểm của ổ đĩa được sử dụng. B-tree tương tự với cây đỏ-đen ở chỗ mọi B-tree có n nút đều có chiều cao là O(lg n), mặc dù chiều cao của một B-tree có thể xem như ít hơn chiều cao của cây đỏ-đen bởi vì yếu tố nhánh của nó có thể rộng hơn. Vì vậy, B-tree cũng có thể sử dụng để thực thi nhiều tác vụ động có độ phức tạp O(lg n). Theo cách hiểu thông thường, B-tree có thể tổng quát hóa những cây nhị phân tìm kiếm. Hình 18.1 thể hiện một B-tree đơn giản. Nếu một nút x bên trong B-tree chứa n[x] khóa thì x có n[x] + 1 con. Những khóa trong nút x được sử dụng như những điểm phân chia vùng khóa của nút x thành n[x] + 1 vùng con, mỗi vùng con này được xử lý như một nút con của nút x. Khi tìm kiếm một khóa trên B-tree, chúng ta thực hiện n[x] + 1 cách dựa trên việc so sánh với n[x] khóa được lưu trữ ở nút x. Cấu trúc của các nút lá khác nhau với các nút thường (chúng ta sẽ khảo sát những sự khác nhau đó ở phần 18.1). Hình 18.1: Một B-tree có khóa là các phụ âm tiếng anh. Một nút x bên trong chứa n[x] khóa tương ứng với n[x]+1 nút con. Tất cả các nút con có cùng một độ cao giống nhau trong cây. Những nút tô màu nhạt sẽ được khảo sát để tìm kiếm ký tự R. Phần 18.1 sẽ định nghĩa chính xác B-tree là gì và chứng minh rằng chiều cao của B-tree sẽ tăng dần theo hàm logarit số lượng nút con của nó. Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 3 B-TREES Phần 18.2 sẽ mô tả bằng cách nào để tìm kiếm một khóa và chèn một khóa vào B-tree, và phần 18.3 trình bày việc xóa một khóa. Tuy nhiên, trước khi tiến hành chúng ta cần phải biết tại sao cấu trúc dữ liệu được thiết kế để làm việc trên đĩa từ được đánh giá khác biệt hơn cấu trúc dữ liệu được thiết kế để làm việc trên bộ nhớ chính truy xuất ngẫu nhiên. Những cấu trúc dữ liệu trên bộ nhớ thứ cấp Có nhiều công nghệ khác nhau được sử dụng để cung cấp dung lượng nhớ bên trong hệ thống máy tính. Bộ nhớ chính của một hệ thống máy tính thông thường bao gồm nhiều chip nhớ silicon. Công nghệ này là điển hình cho hai giải pháp lưu trữ quan trọng có chi phí lưu trữ trên mỗi bit đắt hơn nhiều so với công nghệ lưu trữ từ tính như là băng từ hay đĩa từ. Hầu hết những hệ thống máy tính đều có bộ nhớ thứ cấp dựa trên các đĩa từ tính; dung lượng của những bộ nhớ thứ cấp như vậy thường lớn hơn dung lượng của bộ nhớ chính ít nhất là hai lần đơn vị độ lớn. Hình 18.2(a) minh họa một ổ đĩa thông thường. Nó bao gồm nhiều đĩa (platter) quay xung quanh một trục thẳng đứng (spindle) với một tốc độ ổn định. Bề mặt của mỗi đĩa được bao phủ bởi một lớp từ tính. Mỗi đĩa được đọc và ghi bởi một đầu đọc ghi (head) ở cuối một cần điều khiển (arm). Những cần điều khiển này được gắn với nhau thành một khối và chúng di chuyển những đầu đọc ghi hướng đến hay đi ra xa đĩa từ. Khi một đầu đọc ghi dừng lại, bề mặt được tiếp xúc bên dưới nó được gọi là một rãnh từ (track). Các đầu đọc ghi được canh chỉnh theo phương dọc ở mọi lúc vì vậy một tập các rãnh từ ở bên dưới chúng được truy xuất đồng thời. Hình 18.2(b) minh họa một tập các rãnh từ như thế mà chúng được gọi là một hình trụ đồng tâm (cylinder). Hình 18.2: (a) Một ổ đĩa từ thông thường. Nó được tạo nên bởi nhiều đĩa quay xung quanh một trục thẳng đứng. Mỗi đĩa được đọc và ghi bởi một đầu đọc ở cuối một cần điều khiển. Những cần điều khiển gắn kết với nhau vì vậy chúng di chuyển đồng bộ các đầu đọc ghi. Ở đây, những cần điều khiển Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 4 B-TREES quay xung quanh một trục hình trụ. Một rãnh từ là bề mặt tiếp xúc bởi đầu đọc ghi khi nó dừng lại. (b) Một hình trụ đồng tâm bao gồm một tập các rãnh từ trên đĩa theo phương dọc. Mặt dù những ổ đĩa rẻ hơn và có dung lượng lớn hơn bộ nhớ chính nhưng chúng chậm hơn nhiều bởi vì chúng có nhiều bộ phận di chuyển. Có hai thành phần di chuyển cơ học đó là: sự quay của đĩa và sự chuyển động của cần điều khiển. Theo đó, những ổ đĩa được sản xuất có tốc độ quay khoảng 5400-15000 vòng mỗi phút (RPM), thường tốc độ quay 7200 RPM là phổ biến. Dù 7200 RPM xem ra có vẻ nhanh, tức là mỗi vòng mất khoảng 8.33 lần một phần nghìn giây, tính ra thời gian đó gần bằng 5 lần thời gian truy xuất của bộ nhớ silicon thông thường với 100 lần một phần tỉ giây. Nói cách khác, nếu chúng ta phải chờ một vòng quay đầy đủ của một phần tử đặc thù nào đó để tiếp xúc dưới đầu đọc ghi, chúng ta có thể truy xuất bộ nhớ chính hầu như gần 100,000 lần trong suốt khoảng thời gian ngắn đó! Tính trung bình chúng ta phải chờ chỉ một nữa vòng quay, nhưng như thế sự khác biệt về thời gian truy xuất giữa bộ nhớ silicon và các ổ đĩa từ đã là khổng lồ. Sự di chuyển các cần điều khiển cũng mất một lượng thời gian. Theo đó, thời gian truy xuất trung bình của các ổ đĩa được sản xuất nằm trong khoảng từ 3 đến 9 lần một phần nghìn giây. Để bù lại khoảng thời gian hao phí cho những chuyển động cơ học đó, các ổ đĩa truy xuất không chỉ một phần tử mà có thể nhiều phần tử tại một thời điểm. Thông tin được chia thành một số lượng các trang có kích thước bằng nhau tính bằng bít mà xuất hiện liên tiếp nhau bên trong các hình trụ đồng tâm, và mỗi đĩa sẽ đọc hoặc ghi với toàn bộ một hay nhiều trang như thế. Với một đĩa thông thường, một trang có thể có chiều dài từ 2 11 đến 2 14 byte. Mỗi một lần đầu đọc ghi xác định vị trí chính xác cần đến, đĩa sẽ quay đến điểm bắt đầu của trang yêu cầu, việc đọc hoặc ghi một đĩa từ là hoàn toàn điện tử (ngoại trừ sự quay của đĩa), theo đó một lượng lớn dữ liệu có thể được đọc hoặc ghi một cách nhanh chóng. Việc truy xuất và đọc một trang thông tin từ đĩa thường mất nhiều thời gian hơn việc máy tính khảo sát tất cả thông tin đọc được. Vì lý do trên, trong chương này chúng ta sẽ tập trung vào hai yếu tố tách biệt chính của thời gian thực hiện đó là: • Số lần truy xuất đĩa • Và thời gian chiếm CPU. Số lần truy xuất đĩa được đo lường với thuật ngữ số lượng trang thông tin cần được đọc hoặc ghi từ đĩa. Chúng ta lưu ý rằng thời gian truy xuất đĩa không phải hằng số, nó tùy thuộc vào khoảng cách giữa rãnh hiện tại và rãnh yêu cầu và cũng như là tình trạng khởi điểm quay của đĩa. Dù sao chúng ta sẽ Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 5 B-TREES sử dụng số lượng trang đọc hoặc ghi như là một đại lượng đầu tiên xấp xỉ gần đúng với tổng thời gian hao phí cho việc truy xuất đĩa. Trong một ứng dụng tiêu biểu về B-tree, dữ liệu mà không chứa đủ trong bộ nhớ chính vẫn có thể được xử lý cùng một lúc. Thuật toán B-tree sao chép các trang được chọn từ đĩa vào trong bộ nhớ chính khi cần thiết và ghi trở lại vào đĩa những trang đã bị thay đổi. Thuật toán B-tree được thiết kế để chỉ một số lượng trang cố định nằm bên trong bộ nhớ chính tại bất cứ thời điểm nào; vì vậy kích cỡ của bộ nhớ chính không giới hạn kích cỡ dữ liệu có thể xử lý của B-tree. Chúng ta mô hình hóa những thao tác vận hành đĩa với đoạn giả mã như sau. Gọi x là một con trỏ trỏ đến một đối tượng. Nếu đối tượng đó hiện tại ở trong bộ nhớ chính của máy tính thì chúng ta có thể yêu cầu đến những trường của đối tượng này, ví dụ như trường key[x]. Tuy nhiên, nếu đối tượng chỉ dẫn bởi x vẫn còn nằm trên đĩa thì chúng ta phải thực thi thao tác DISK- READ(x) để đọc đối tượng x vào bộ nhớ chính trước khi chúng ta yêu cầu những trường của nó. (Ta giả sử rằng nếu x đã sẵn sàng trong bộ nhớ chính, thì thao tác DISK-READ(x) không truy xuất đĩa hay nói cách khác thao tác không được thực hiện “no-op”). Tương tự như vậy, thao tác DISK-WRITE(x) được sử dụng để lưu trữ bất cứ thay đổi nào tác động đến các trường của đối tượng x. Theo đó, một quy trình tiêu biểu cho quá trình làm việc với một đối tượng như sau: • Gán x là một con trỏ trỏ đến một đối tượng • DISK-READ(x) • Các thao tác truy xuất và/hoặc chỉnh sửa các trường của x • DISK-WRITE(x): thao tác này sẽ bỏ qua nếu không có bất kỳ trường nào của x bị thay đổi. • Những thao tác truy xuất khác nhưng không chỉnh sửa các trường của x. Hệ thống chỉ có thể giữ một số lượng hạn chế các trang bên trong bộ nhớ chính ở bất cứ thời điểm nào. Chúng ta có thể giả định rằng các trang không còn sử dụng nữa sẽ bị đẩy ra khỏi bộ nhớ chính bởi hệ thống; thuật toán B-tree sẽ lờ đi những trang này. Vì trong hầu hết các hệ thống, thời gian thực thi của thuật toán B-tree được quyết định chính bởi số lượng các thao tác DISK-READ và DISK- WRITE được thực hiện, điều này cho thấy việc sử dụng những thao tác trên càng hiệu quả sẽ dẫn đến việc đọc và ghi thông tin càng nhiều. Vì vậy, một nút của B-tree thường có kích thước rộng bằng với toàn bộ một trang trên đĩa. Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 6 B-TREES Do đó số lượng nút con của nó có thể bị giới hạn bởi kích thước một trang trên đĩa. Với một B-tree lưu trữ trên đĩa, số các yếu tố nhánh của nó thường sử dụng khoảng từ 50 đến 2000, tùy thuộc vào kích thước của một khóa mà có liên quan đến kích thước của một trang. Một yếu tố nhánh lớn được rút ngắn cả về chiều cao của cây và số lần truy xuất đĩa được yêu cầu để tìm bất kỳ một khóa nào đó. Hình 18.3 thể hiện một B-tree với 1001 yếu tố nhánh và có chiều cao 2 mà có thể lưu trữ trên một tỉ khóa; tuy thế, do nút gốc có thể được nạp thường trực vào bộ nhớ chính nên hầu như chỉ yêu cầu hai lần truy xuất đĩa để tìm ra bất cứ khóa nào trên cây này! Hình 18.3: Một B-tree có chiều cao 2 chứa trên một tỉ khóa. Mỗi nút thường và nút lá chứa 1000 khóa. Có 1001 nút có chiều cao là 1 và trên một triệu nút có chiều cao 2. Số khóa của nút x là giá trị bên trong nút x đó là n[x]. 18.1. Định nghĩa B-trees Để đơn giản, chúng ta giả sử có các cây nhị phân tìm kiếm và các cây đỏ đen mà bất cứ thông tin đi kèm nào kết hợp với một khoá được lưu trữ trong cùng một nút với khóa đó. Trong thực tế, có thể lưu trữ mỗi khóa như là một con trỏ trỏ đến một trang nhớ khác chứa thông tin đi kèm của khoá đó. Trong chương này, toàn bộ phần giả mã ngầm định rằng thông tin đi kèm của một khoá, hay là con trỏ trỏ đến thông tin đi kèm đó, sẽ luôn đi cùng với khoá này bất cứ khi nào nó được di chuyển từ nút này sang nút khác. Một biến thể thông thường của B-tree là cây B + -tree. Cây này lưu trữ các thông tin đi kèm tại các nút lá và chỉ lưu trữ các khoá và các con trỏ con trong các nút thường, vì vậy làm cực đại hoá yếu tố nhánh của các nút thường. Một B-tree T là một cây có gốc (gốc của nó là root[T]) có các tính chất sau: 1. Mỗi nút x có các trường sau đây: a. n[x] là số các khoá hiện tại được lưu trữ trong nút x Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 7 B-TREES b. Các khoá n[x] của nó được lưu trữ theo thứ tự không giảm, vì vậy: key 1 [x] ≤key 2 [x] ≤ ··· ≤ key n [x][x] c. leaf[x] là một giá trị logic nhận giá trị TRUE nếu x là nút lá và FALSE nếu x là nút thường. 2. Mỗi nút thường x cũng chứa n[x] + 1 con trỏ: c 1 [x], c 2 [x], , c n[x]+1 [x] trỏ tới các nút con của nó. Các nút lá không có nút con do vậy trường c i của nó không được định nghĩa. 3. Các khoá key i [x] tách thành các vùng khóa và được lưu trữ thành mỗi cây con tương ứng: nếu k i là một khoá bất kỳ được lưu trữ trong cây con có gốc là c i [x] thì k 1 ≤ key 1 [x] ≤ k 2 ≤ key 2 [x] ≤··· ≤ key n[x] [x] ≤ k n[x]+1 . 4. Tất cả các nút lá có cùng chiều cao h 5. Số lượng các khoá mà một nút có thể chứa nằm trong một biên giới hạn. Những biên này có thể diễn tả bằng một số nguyên có giá trị không đổi t ≥ 2 được gọi là có mức tối thiểu của B-tree: a. Các nút không phải là nút gốc phải có ít nhất t-1 khoá. Mỗi nút thường ngoại trừ nút gốc thì có ít nhất t nút con. Nếu cây không rỗng thì nút gốc phải có ít nhất một khoá. b. Mỗi nút có thể chứa tối đa 2t-1 khoá. Vì vậy, một nút thường có thể có tối đa 2t nút con. Ta nói rằng một nút là đầy nếu nó chứa chính xác 2t -1 khoá. Một B-tree đơn giản nhất khi t=2. Khi đó, mọi nút thường có 2, 3 hoặc 4 nút con và ta có một cây 2-3-4. Tuy nhiên trong thực tế, người ta thường dùng các giá trị t lớn hơn nhiều. Chiều cao của một B-tree Số lần truy xuất đĩa đòi hỏi cho hầu như các thao tác trên một B-tree tỉ lệ với chiều cao của nó. Bây giờ, chúng ta phân tích chiều cao của một B-tree trong trường hợp xấu nhất.h Định lý 18.1 Nếu n ≥ 1 thì với bất kỳ B-tree T n khóa, có mức tối thiểu t ≥ 2 thì có chiều cao. 2 1 log + ≤ n h t Chứng minh: Nếu một B-tree có chiều cao h thì nút gốc chứa ít nhất 1 khoá và tất cả các nút khác chứa ít nhất t-1 khoá. Như vậy có ít nhất 2 nút có chiều cao Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 8 B-TREES là 1, ít nhất 2t nút có chiều cao là 2, ít nhất 2t 2 nút có chiều cao là 3, … cho tới khi tại chiều cao h sẽ có ít nhất 2t h-1 nút. Hình 18.4 minh họa một cây như vậy với chiều cao h = 3. Vì vậy với n khoá thoả mãn bất đẳng thức đề ra. Bằng các thao tác đại số đơn giản, ta có t h <= (n+1)/2. Lấy logarit cơ số t cả hai vế ta có điều phải chứng minh. Ở đây, chúng ta thấy điểm mạnh của B-tree so với cây đỏ-đen. Mặc dù chiều cao là O(lg n) trong cả hai trường hợp (lưu ý rằng t là một hằng số), thì cơ số logarít của B-tree có thể lớn hơn nhiều lần so với cây đỏ-đen. Vì vậy, trong hầu hết các thao tác, B-tree tiết kiệm hơn cây đỏ-đen một khoảng là lg t với cùng một số lượng nút được khảo sát. Bởi vì việc khảo sát một nút tuỳ ý trên cây thường đòi hỏi một lần truy xuất đĩa, nên số lần truy xuất đĩa được giảm đáng kể. 18.2 Các thao tác cơ bản trên B-tree Trong phần này, chúng ta sẽ giới thiệu chi tiết các thao tác tìm kiếm (B- TREE-SEARCH), khởi tạo (B-TREE-CREATE) và chèn (B-TREE-INSERT) trên một B-tree. Trong các thủ tục đó, ta chấp nhận 2 quy ước: - Nút gốc của B-tree luôn ở trong bộ nhớ chính, nên một thao tác DISK-READ trên nút gốc là không cần thiết; thao tác DISK- WRITE của nút gốc sẽ được yêu cầu bất cứ khi nào nút gốc bị thay đổi - Bất cứ nút nào được duyệt qua bởi các tham số đều phải có một thao tác DISK-READ được thực thi với nó. Những thủ tục mà chúng ta giới thiệu dưới đây là những giải thuật “một hướng”: đi từ trên xuống bắt đầu từ nút gốc và không quay trở lại. Tìm kiếm trên B-tree Việc tìm kiếm trên một B-tree tương tự với việc tìm kiếm trên cây nhị phân tìm kiếm, chỉ khác trên cây nhị phân ở mỗi nút sẽ đi theo 2 nhánh còn B-tree sẽ đi theo nhiều hướng dựa vào số nút con ở mỗi nút. Chính xác hơn, mỗi nút thường x, chúng ta cần phải duyệt qua (n[x] +1) nhánh. Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 9 B-TREES Thủ tục B-TREE-SEARCH là một thủ tục tổng quát của thủ tục TREE- SEARCH được định nghĩa trên cây nhị phân. Thủ tục B-TREE-SEARCH lấy đầu vào là một con trỏ trỏ đến nút gốc x của một cây con và một khoá k để tìm kiếm trên cây con đó. Lệnh gọi thủ tục tìm kiếm mức cao nhất trên B-tree là B-TREE -SEARCH(root[T], k). Nếu khoá k nằm trong B-tree thì thủ tục B- TREE -SEARCH trả về cặp thứ tự (y, i) chứa nút y và chỉ mục i với key i [y] = k. Ngược lại, thủ tục trả lại giá trị NIL. B-TREE -SEARCH(x, k) 1 i ← 1 2 while i ≤ n[x] and k > key i [x] 3 do i ← i + 1 4 if i ≤ n[x] and k = key i [x] 5 then return (x, i) 6 if leaf [x] 7 then return NIL 8 else DISK-READ(c i [x]) 9 return B-TREE -SEARCH(c i [x], k) Sử dụng thủ tục tìm kiếm tuần tự, các dòng 1-3 tìm ra chỉ số i nhỏ nhất sao cho k ≤ key i [x], ngược lại chương trình đặt i tại vị trí n[x] +1. Các dòng 4- 5 kiểm tra nếu tìm được khoá cần tìm thì thủ tục trả về kết quả. Các dòng lệnh từ 6-9 kết thúc quá trình tìm kiếm không thành công (nếu x là một nút lá) hoặc gọi đệ quy tìm kiếm trên cây con tương ứng của nút x, sau khi đã hoàn thành thao tác DISK-READ trên nút con tương ứng. Hình 18.1 minh họa hoạt động của thủ tục B-TREE-SEARCH; các nút được tô màu nhạt được kiểm tra trong quá trình tìm kiếm khóa R. Giống như thủ tục TREE-SEARCH trên cây nhị phân tìm kiếm, các nút được duyệt qua trong quá trình đệ quy hình thành nên đường dẫn đi xuống từ nút gốc của cây. Vì vậy số lần truy xuất các trang của đĩa bởi thủ tục B- TREE-SEARCH là O(h) = O(log t n), với h là chiều cao của B-tree và n là số các khoá trong B-tree. Vì n[x] < 2t nên thời gian thực hiện của vòng lặp while ở câu lệnh 2-3 trong mỗi nút là O(t), và tổng thời gian chiếm CPU là O(th) = O(t log t n). Tạo một B-tree rỗng Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 10 [...]... (b) Kết quả của chèn B vào cây bắt đầu; đây là một sự chèn đơn giản vào một nút lá (c) Kết quả của chèn Q vào cây trước đó Nút RSTUV được chia thành 2 nút chứa RS và UV, khóa T được di chuyển lên gốc, và Q được chèn vào góc trái của nửa thứ hai (nút RS) (d) Kết quả của chèn L vào cây trước đó Nút gốc được chia ngay lập tức, vì nó là đầy, và B-tree tăng trưởng một bậc về chiều cao Sau đó L được chèn vào... thao tác đĩa và chiếm O(1) thời gian CPU Chèn một khoá vào một B-tree Việc chèn một khoá vào một B-tree thật sự phức tạp hơn chèn một khoá vào cây nhị phân tìm kiếm Giống như cây nhị phân tìm kiếm, ta tìm vị trí nút lá để chèn thêm vào khoá mới Tuy nhiên, với B-tree, ta không thể đơn thuần tạo mới một nút lá và chèn nó vào vì như thế cây mới hình thành sẽ không còn là B-tree hợp lệ Thay vào đó, ta chèn... phần tử tiếp theo k’ của k trong cây con mà gốc tại z Đệ qui để xóa k’ và thay k bằng k’ trong x (Tìm k' và xóa nó có thể được thực hiện theo chiều hướng xuống) c Mặt khác, nếu cả y và z đều chỉ có t-1 khóa, kết hợp k và tất cả z vào trong y, để cho x mất cả k và con trỏ trỏ đến z, và y bây giờ chứa 2t-1 khóa Sau đó, giải phóng z và đệ qui xóa k từ y 3 Nếu khóa k không có trong nút thường x, xác định... nút DEGJK, và sau đó G bị xóa khỏi nút lá này (trường hợp 1) (e) Xóa D Đây là trường hợp 3b: phép đệ quy không thể giảm xuống nút CL bởi vì nó chỉ có 2 khóa, vì thế P bị đẩy xuống và kết hợp CL và TX để tạo thành CLPTX; sau đó, D bị xóa khỏi lá (trường hợp 1) (e') Sau (d) gốc bị xóa và cây giảm chiều cao của nó đi một (f) Xóa B Đây là trường hợp 3a: C được di chuyển để điền vào vị trí của B và E được... 2-3-4 đơn và các khóa trong tập S" trong một cây T’’ 2-3-4 đơn Thời gian thực thi của hoạt động tách nên là O(lg n), trong đó n là số khóa trong cây T (Gợi ý: chi phí cho thao tác nối nên tính vào.) Chú giải chương Knuth[185], Aho, Hopcroft và Ullman[5], và Sedgewich[269] đưa ra những thảo luận sâu hơn của lược đồ cây cân bằng và B-tree Comer[66] cung cấp một khảo sát toàn diện của B-tree Guibas và Sedgewick[135]... B-tree Guibas và Sedgewick[135] thảo luận các mối quan hệ giữa nhiều loại lược đồ cây cân bằng, bao gồm cây đỏ-đen và cây 2-3-4 Vào năm 1970, J.E Hopcroft đề xuất các cây 2-3, một giả mã cho Btree và cây 2-3-4, trong đó mỗi nút thường có 2 hoặc 3 con B-tree được giới thiệu vởi Bayer và McCreight vào năm 1972[32]; họ không giải thích về tên gọi của nó Bender, Demaine, và Farach-Colton[37] đã nghiên cứu... của thao tác tìm kiếm, chèn, và xóa b Hãy trình bày bằng cách nào để thực hiện các thao tác nối nếu cho hai cây 2-3-4 T ' và T và một khóa k, thao tác nối nên thực hiện trong thời gian O (1 + |h’ - h’’|) , với h’ và h’’ tương ứng với chiều cao của T' và T " c Gọi đường đi P từ gốc của một cây 2-3-4 T đến một khóa k cho trước, tập S’ chứa các khóa trong cây T mà nhỏ hơn k, và tập S" chứa các khóa trong... T’1, , T’m} và một tập các khóa {k’1, k’2, ,k’m} trong đó ta có y . một lúc. Thuật toán B-tree sao chép các trang được chọn từ đĩa vào trong bộ nhớ chính khi cần thiết và ghi trở lại vào đĩa những trang đã bị thay đổi. Thuật toán B-tree được thiết kế để chỉ. ĐẠI HỌC HUẾ ĐẠI HỌC KHOA HỌC HUẾ KHOA CÔNG NGHỆ THÔNG TIN ***** TIỂU LUẬN PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN Đề tài : GVHD: TS. Hoàng Quang LỚP: Khoa học máy tính 2012 -2014 HVTH:. Tấn Lê Thị Thanh Thủy B-TREES Huế, 10/2014 Nhóm 7 – Khoa học máy tính Khóa 2009-2011 Trang 2 B-TREES CHƯƠNG 18: B-TREES Tổng quan B-trees là những cây tìm kiếm cân bằng được thiết kế để làm việc tốt

Ngày đăng: 11/04/2015, 22:08

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan