10, 20 20 55 62, 64, 66 75 83, 86CHƯƠNG 4 – B-TREE VÀ BỘ NHỚ NGOÀ
1.6. Chuyển từ cõy 2-3-4 sang cõy Đỏ-Đen
Một cõy 2-3-4 cú thể được chuyển sang cõy đỏ-đen bằng cỏch ỏp
dụng cỏc luật sau:
- Chuyển đổi bất kỳ 2-node ở cõy 2-3-4 sang node đen ở
cõyđỏ-đen.
- Chuyển đổi bất kỳ 3-node sang node con C (với hai con
của chớnh nú) và node cha P (với cỏc node con C và node con khỏc). Khụng cú vấn đề gỡ ở đõy khi một mục trở
thành node con và mục khỏc thành node chạ C được tụ
màuđỏ và Pđược tụ màuđen.
- Chuyển đổi bất kỳ 4-node sang node cha P và cả hai
node con C1, C2 màuđỏ.
Hỡnh 4.7 trỡnh bày cỏc chuyển đổi nàỵ Cỏc node con trong cỏc cõy conđược tụ màuđỏ; tất cả cỏc node khỏc được tụ màuđen.
Hỡnh 4.8 trỡnh bày cõy 2-3-4 và cõyđỏ-đen tương ứng với nú bằng
cỏch ỏp dụng cỏc chuyển đổi nàỵ Cỏcđường chấm xung quanh cỏc
cõy con được tạo ra từ 3-node và 4-nỳt. Cỏc luật của cõy đỏ-đen tự
động thoả món với sự chuyển đổi nàỵ Kiểm tra rằng: Hai node đỏ
khụng bao giờ được kết nối, và số lượng cỏc node đen là nhưnhauở
mọi đường dẫn từ gốc đến lỏ (hoặc node con null).
Bạn cú thể nghĩ rằng một 3-node ở cõy 2-3-4 là tương đương với
node cha cú một node con màu đỏ ở cõy đỏ-đen, và một 4-node là tươngđương với node cha cú hai node con đỏ. Điều này cú nghĩa là node cha màu đen với node con đen ở cõy đỏ-đen khụng biểu diễn
một 3-nodeở cõy 2-3-4; nú chỉ biểu diễn một 2-node với node con
2-node khỏc. Tương tự, một node cha màu đen với 2 con màu đen khụng biểu diễn cho 4-nỳt.
30, 50, 80
20, 25 40 70, 75 90
50
10, 20, 25 40 70, 75 90
Hỡnh 4.7Chuyển đổi từ cõy 2-3-4 sang cõyđỏ-đen Hỡnh 4.8 Cõy 2-3-4 và cõyđỏ-đen tươngứng 33 M N 33 N M Đen 2-Node P Đỏ 27, 55 N M P 55 27 M N P 27 55 N M OR 3-Node 4-Node 16, 42, 66 M N P Q 42 66 P N 16 M Q Đen Đỏ Đen Đỏ 37 30, 34 48, 60, 82 5 32, 33 35 40 50, 53, 57 69 86, 98 37 34 60 30 35 48 82 5 32 40 53 33 69 98 50 57 86
Sự tươngđương
Khụng những cấu trỳc của cõy đỏ-đen phự hợp với cõy 2-3-4, mà cỏc thao tỏc hoạt động của hai loại cõy này cũng tươngđương nhaụ Trong cõy 2-3-4 nú được giữ cõn bằng bằng việc tỏch nỳt. Trong
cõyđỏ-đen hai phương thức cõn bằng là sự lật và quay màụ
Việc tỏch 4-node và lật màu
Trong cõy 2-3-4 khi bạn tỡm xuống điểm chốn cho node mới, bạn
tỏch mỗi 4-node thành hai 2-nỳt. Trong cõy đỏ-đen bạn thực hiện
việc lật màụ Làm thế nào mà cỏc thao tỏc này là tương đương với
nhaủ
Hỡnh 4.9Tỏch 4-node và lật màu
Trong hỡnh 4.9.i trỡnh bày một 4-node trong cõy 2-3-4 trước khi bị
tỏch nỳt; Hỡnh 4.9.ii trỡnh bày tỡnh trạng sau khi tỏch nỳt. 2-node (là cha của 4-nỳt) trở thành 3-nỳt.
Trong hỡnh 4.9.iiị trỡnh bày cõyđỏ-đen tươngđương với cõy 2-3-4
ở hỡnh 4.9.i,. Đường chấm viền quanh sự tương đương của 4-nỳt. Lật màuđưađến kết quả cõy đỏ-đenở hỡnh 4.9.iv. Bõy giờ cỏc node
40 và 60 là màu đen và 50 là màu đỏ. Kết quả 50 và node cha của
nú hỡnh thành sự tương đương với một 3-nỳt, như trỡnh bày bằng
đường chấm. Điều này tương tự 3-node định dạng bằng việc tỏch
node trong hỡnh 4.9.iị
Kết quả chỳng ta thấy rằng việc tỏch một 4-node trong quỏ trỡnh chốn ở cõy 2-3-4 là tương đương với việc thực hiện lật màu trong quỏ trỡnh chốnở cõy đỏ-đen.
Tỏch 3-node và quay
Khi một 3-node ở cõy 2-3-4 được chuyển sang cõy đỏ-đen tương đương của nú, cú thể cú hai sự sắp xếp, như trỡnh bày trong hỡnh 4.8. Cả hai mục dữ liệu cú thể trở thành node chạ Tựy thuộc vào node nàođược chọn, node con sẽ là node con bờn trỏi hoặc node con
bờn phải, vàđộ dốc của đường thẳng nối node cha và node con sẽ ở
bờn trỏi hoặc bờn phảị
Cả hai sự sắp xếp là hợp lệ; Tuy nhiờn, chỳng khụng tham gia để
cõn bằng cõỵ Chỳng ta hóy xem xột tỡnh huống trong ngữ cảnh lớn
hơn.
Hỡnh 4.10-i trỡnh bày cõy 2-3-4 cũn hỡnh 4.10-ii, và 4.10-iii trỡnh bày cỏc cõyđỏ-đen tươngđươngđược suy ra từ cõy 2-3-4 bằng cỏch
ỏp dụng cỏc luật chuyển đổi ở trờn. Sự khỏc nhau giữa chỳng là cỏch lựa chọn hai mục dữ liệu nào trong 3-nodeđể tạo node cha; Trong
hỡnh ii, 80 là node cha, trong hỡnh iii, 70 là node chạ
Mặc dự cỏch sắp xếp này là hợp lệ, bạn cú thể thấy rằng cõy trong
hỡnh ii là khụng cõn bằng trong khi cõy trong hỡnh iii là cõn bằng.
Với cõy đỏ-đen được cho trong hỡnh ii, chỳng ta sẽ quay nú sang
phải (và thực hiện việc chuyển đổi hai màu) để cõn bằng nú. Điều
(i) tr-ớc khi tách i(i) sau khi tách
(iii) tr-ớc khi lật màu (iv) sau khi lật màu
7040, 50, 60 80 40, 50, 60 80 50, 70 60 80 40 50 70 80 60 40 50 70 80 60 40 4- Node 3- Node 4- Node 3- Node
đỏng ngạc nhiờn sự quay này cho kết quả chớnh xỏc giống nhưcõy trong hỡnh iiị
Hỡnh 4.10:3-node và phộp quay
Kết quả chỳng ta sẽ thấy sự tươngđương giữa phộp quay trong cõy
đỏ-đen và sự lựa chọn node nàođó là node cha khi chuyển đổi cõy
2-3-4 sang cõy đỏ-đen. Mặc dự chỳng ta khụng chỉ ra điều này, sự
tương đương tương tự cú thể nhận thấy khi cần thiết quay hai lần
bờn trong cỏc node chỏụ