1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

23 1K 11

Đ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

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 473 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

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

Trang 2

Huế, 10/2014

Trang 3

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ốttrên những ổ đĩa từ tính hay những thiết bị lưu trữ phụ được truy xuất trựctiếp khác B-tree tương tự như cây đỏ-đen (chương 13), nhưng chúng tối ưuhó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 đếnhà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âynhị 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ằngchiều cao của B-tree sẽ tăng dần theo hàm logarit số lượng nút con của nó

Trang 4

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óavà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 khitiế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àmviệ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ìnhcho hai giải pháp lưu trữ quan trọng có chi phí lưu trữ trên mỗi bit đắt hơnnhiều so với công nghệ lưu trữ từ tính như là băng từ hay đĩa từ Hầu hếtnhữ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; dunglượ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ểnnhữ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

Trang 5

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ínhnhư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ủacần điều khiển Theo đó, những ổ đĩa được sản xuất có tốc độ quay khoảng5400-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ầnmộ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ấtcủ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 giantruy xuất giữa bộ nhớ silicon và các ổ đĩa từ đã là khổng lồ Sự di chuyển cáccần điều khiển cũng mất một lượng thời gian Theo đó, thời gian truy xuấttrung bình của các ổ đĩa được sản xuất nằm trong khoảng từ 3 đến 9 lần mộtphầ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ộtthời điểm Thông tin được chia thành một số lượng các trang có kích thướcbằ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ừ 211 đến 214

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ờigian 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, trongchươ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 gianthự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ôngtin cần được đọc hoặc ghi từ đĩa Chúng ta lưu ý rằng thời gian truy xuất đĩakhô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ãnhyê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ẽ

Trang 6

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 saochép các trang được chọn từ đĩa vào trong bộ nhớ chính khi cần thiết và ghitrở 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

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 trangkhông còn sử dụng nữa sẽ bị đẩy ra khỏi bộ nhớ chính bởi hệ thống; thuậttoá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êncàng hiệu quả sẽ dẫn đến việc đọc và ghi thông tin càng nhiều Vì vậy, mộtnú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

Trang 7

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 trangtrê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ể đượcnạ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ủamộ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èmtạ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

Trang 8

b. Các khoá n[x] của nó được lưu trữ theo thứ tự không giảm, vì

vậy: key1[x] ≤key2[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ỏ: c1[x], c2[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 ci

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

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-treetrong trường hợp xấu nhất.h

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

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

Trang 9

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ó th <= (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 đượcgiả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 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:

(B Nút gốc của B(B tree luôn ở trong bộ nhớ chính, nên một thao tácDISK-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 thaotá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ộthướ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ònB-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.

Thủ tục B-SEARCH là một thủ tục tổng quát của thủ tục SEARCH được định nghĩa trên cây nhị phân Thủ tục B-TREE-SEARCH lấy

Trang 10

TREE-đầ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à

TREE -SEARCH(root[T], k) Nếu khoá k nằm trong tree thì thủ tục 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] =

B-k Ngược lại, thủ tục trả lại giá trị NIL.

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

Để xây dựng một tree T, trước tiên chúng ta sử dụng thủ tục

CREATE để tạo 1 nút gốc rỗng và sau đó gọi thủ tục INSERT để thêm các khoá mới Cả hai thủ tục này đều sử dụng một thủ tục

Trang 11

B-TREE-bổ trợ đó là ALLOCATE-NODE, thủ tục này định vị một trang của đĩa sử

dụng cho một nút mới trong khoảng thời gian O(1) Chúng ta có thể giả sử

một nút được tạo bởi thủ tục ALLOCATE-NODE không đòi hỏi thao tácDISK-READ, vì thế chưa có thông tin hữu ích nào được lưu trên đĩa cho nútnày

Thủ tục B-TREE-CREATE đòi hỏi O(1) 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ộtkhoá 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ể đơnthuầ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 khóa mới vào một nút láhiện có Vì ta không thể chèn một khóa mới vào một nút lá đầy, nên cần có

một thao tác chia một nút đầy y (có 2t - 1 khóa) quanh khóa trung tuyến

key t [y] của nó thành hai nút có t - 1 khóa cho mỗi nút Khóa trung tuyến dời lên vị trí cha của y để chỉ rõ điểm chia giữa hai cây mới Nhưng nếu nút cha của y cũng đầy, nó phải được tách ra trước khi khóa mới có thể chèn vào, và

như vậy tiến trình tách các nút đầy là biện pháp để cây tăng trưởng

Như với một cây nhị phân tìm kiếm, chúng ta có thể chèn một khóa vàomột B-tree trong một cây đơn hướng xuống từ gốc đến lá Để làm như vậy, takhông chờ đợi để tìm hiểu xem liệu chúng ta sẽ thực sự cần tách một nút đầy

để thực hiện việc chèn hay không Thay vào đó, khi ta dò xuống cây để tìmkiếm vị trí chứa khóa mới, ta chia mỗi nút đầy gặp phải dọc theo đường đi(bao gồm nút lá của nó) Vì vậy, bất cứ khi nào chúng ta muốn chia một nút

đấy y, thì yên tâm rằng cha của nó là không đầy.

Tách một nút trong một B-tree

Thủ tục B-TREE-SPLIT-CHILD lấy đầu vào gồm một nút thường

không đầy x (giả sử có trong bộ nhớ chính), một chỉ số i, và một nút y (cũng giả sử có trong bộ nhớ chính) sao cho y = c i [x] là một con đầy của x Như vậy,

thủ tục tách nút con này thành hai và điều chỉnh x sao cho nó có một con bổ

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

HÌNH ẢNH LIÊN QUAN

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 - Tiểu luận Phân tích và thiết kế thuật toán B-TREES
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 (Trang 3)
Hình 18.2(a) minh họa một ổ đĩa thông thường. Nó bao gồm nhiều đĩa - Tiểu luận Phân tích và thiết kế thuật toán B-TREES
Hình 18.2 (a) minh họa một ổ đĩa thông thường. Nó bao gồm nhiều đĩa (Trang 4)
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 - Tiểu luận Phân tích và thiết kế thuật toán B-TREES
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 (Trang 7)
Hình 18.5  minh họa tiến trình này. Nút đầy  y  được tách quanh khóa - Tiểu luận Phân tích và thiết kế thuật toán B-TREES
Hình 18.5 minh họa tiến trình này. Nút đầy y được tách quanh khóa (Trang 12)
Hình 18.6 Tách gốc có t = 4. Nút gốc r được tách thành hai, và một nút gốc mới s được tạo - Tiểu luận Phân tích và thiết kế thuật toán B-TREES
Hình 18.6 Tách gốc có t = 4. Nút gốc r được tách thành hai, và một nút gốc mới s được tạo (Trang 15)
Hình 18.7: Chèn các khóa vào B-tree. Mức tối thiểu t của B-tree  là 3, - Tiểu luận Phân tích và thiết kế thuật toán B-TREES
Hình 18.7 Chèn các khóa vào B-tree. Mức tối thiểu t của B-tree là 3, (Trang 17)
Hình 18.8: Xóa các khóa từ một B-tree. Mức tối thiểu của B-tree này là - Tiểu luận Phân tích và thiết kế thuật toán B-TREES
Hình 18.8 Xóa các khóa từ một B-tree. Mức tối thiểu của B-tree này là (Trang 19)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w