Tải bản đầy đủ (.pdf) (31 trang)

Tài liệu Báo cáo - Cây đỏ đen doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (576.2 KB, 31 trang )

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CẤU TRÚC DỮ LIỆU 2



NGUYỄN HOÀI PHƯƠNG -0212234
NGUYỄN HỒNG PHÚ -0212226







BÀI BÁO CÁO MÔN CẤU TRÙC DỮ LIỆU 2
GVHD : Ths . Phạm Phạm Tuyết Trinh



TP HCM , 2005



Cây Đỏ Đen Tháng 6 năm 2005
Nguyễn Hoài Phương 2 Nguyễn Hồng Phú
Lời nói đầu:
Cây đỏ đen là một trong những cấu trức dữ liệu hay, cùng với cây nhị phân tìm
kiếm là những cấu trúc dữ liệu có điểm mạnh trong việc lưu trữ và tìm kiếm dữ liệu.
Song cây đỏ đen có những đặc tính riêng mà nhờ đó nó đã làm nổi bật những điểm
mạnh củ


a mình.
Trong phạm vi bài báo cáo này, chúng em xin trình bài về : khái quát cây đỏ đen,
các thuật toán cơ bản, code cài đặt các thuật tóan cơ bản và có những nhận xét về cấu
trúc cây đỏ đen này.
Chúng em chân thành cam ơn cô Phạm Phạm Tuyết Trinh đã tạo điều kiện cho
chúng em tìm hiểu đề tài lý thú này. Dù hết sức cố gắng song vẫn không tránh được
những sai xót nhất định chúng em mong được sư mong nhận được những đóng góp
chân tình để bài làm trở nên hòan chỉnh hơ
n.
Nhóm thực hiện
Sv: Nguyễn Hoài Phương MSSV: 0212234
Sv:Nguyễn Hồng Phú MSSV: 0212226


























Cây Đỏ Đen Tháng 6 năm 2005
Nguyễn Hoài Phương 3 Nguyễn Hồng Phú
Mục lục:
Lời nói đầu: ..................................................................................................................... 2

Mục lục: ........................................................................................................................... 3

I-

Giới thiệu: ................................................................................................................ 4

II-

Định nghĩa: .......................................................................................................... 5

III-

Các thuật toán cơ bản của Black and Red Tree ............................................... 7

1-

Thêm một Node mới ........................................................................................... 7


2-

Xóa một node: .................................................................................................... 14

IV-

Thuật toán cài đặt: ............................................................................................ 14

V-

Nhận xét : ........................................................................................................... 31































Cây Đỏ Đen Tháng 6 năm 2005
Nguyễn Hoài Phương 4 Nguyễn Hồng Phú
I- Giới thiệu:

Cây đỏ đen được ra giới thiệu bởi Rudolf Bayer trong quyển “Symmetric Binary
B-Trees: Data Structure and maintenance Algorithms”, nhà xuất bản Acta
Informatica, Tâp1, trang 290-306. Sau đó Leonidas J.Guibas và Robert Sedgewick
đã thêm các đặc tính của cây đỏ đen và đặt tên cho nó ( Tham khảo: Guibas, L. and
Sedgewick R. “ A dichromatic Framwork for Balanced Trees”, in Proc. 19
th
IEEE
Symp. Foundations of Computer Science, trang 8-21, năm 1978).

Ta đã biết cây tìm kiếm nhị phân thông thường có những thuận lợi lớn về mặt lưu
trữ và truy xuất dữ liệu trong phép toán tìm kiếm thêm vào hay loại bỏ một phần tử.
Do đó, cây tìm kiếm nhị phân xem ra là một cấu trúc lưu trữ dữ liệu tốt.

Tuy nhiên trong một số trường hợp cây tìm kiếm nhị phân có một số hạn chế. Nó
hoạt động tốt n

ếu dữ liệu được chèn vào cây theo thứ tự ngẫu nhiên. Tuy nhiên, nếu
dữ liệu được chèn vào theo thứ tự đã đuợc sắp xếp sẽ không hiệu quả. Khi các trị số
cần chèn đã đuợc sắp xếp thì cây nhị phân trở nên không cân bằng. Khi cây không
cân bằng, nó mất đi khả năng tìm kiếm nhanh (hoặc chèn hoặc xóa) một phần tử đã
cho.
Chúng ta khảo sát một cách giải quyết vấ
n đề của cây không cân bằng: đó là cây đỏ
đen, là cây tìm kiếm nhị phân có thêm một vài đặc điểm .
Có nhiều cách tiếp cận khác để bảo đảm cho cây cân bằng: chẳng hạn cây 2-3-4.
Tuy vậy, trong phần lớn trường hợp, cây đỏ đen là cây cân bằng hiệu quả nhất, ít ra
thì khi dữ liệu được lưu trữ trong bộ nhớ chứ không phải trong những tập tin.
Trước khi khảo sát cây đỏ đen, hãy xem lại cây không cân b
ằng được tạo ra như thế
nào.

Hình 3.1. Các node được chèn theo thứ tự tăng dần
Cây
Ng
Nh
hơn
bằn
con
* Đ
Kh
hai
đối
Để
lu
ô
cây

Mộ
nhị
hơn
sun
Tro
tử
kh
ô
cân
Cây
Kh
đen
y Đỏ Đen
guyễn Hoài
hững node n
n node đã đ
ng hoàn toà
n trái của no
Độ phức tạp
hi cây một n
i chiều. Tro
i với cây câ
bảo đảm th
ôn luôn cân
y phải có xấ
ột cách tiếp
ị phân vì th
n node cha,
ng một số đ
ong cây đỏ

thì thủ tụ
c
ông. Nếu c
n bằng.
II- Đị

y đỏ đen là
hi chèn (hay
n. Nếu được
Phương
này tự sắp x
được chèn
àn. Nếu ta c
ode cha của
p:
nhánh, sẽ tr
ong trường
ân bằng.
hời gian tru
bằng (ít ra
ấp xỉ số nod
cận giải qu
hế nó có các
, node cha
đắc điểm.
đen, việc c
c chèn sẽ k
ó, sẽ xây d
ịnh ngh
một cây nh

Mọi node
Node gốc
Nếu một
n
Mọi đườn
y xóa) một n
c tuân thủ, c
xếp thành m
vào trước
chèn những
a chúng - câ
ở thành mộ
hợp này, t
uy xuất nhan
cũng là cây
de con bên p
uyết vấn đề
c tính chất c
nhỏ hơn no
ân bằng đư
kiểm tra xem
dựng lại cấu
hĩa:

hị phân tìm
phải là đỏ
và các no
d
node là đỏ,
ng dẫn từ gố

node mới, c
cây sẽ được
5
một đường
đó, mỗi n
o
g mục (item
ây sẽ bị mất
ột danh sách
thời gian tru
nh O(logN)
y gần cân bằ
phải bằng s
ề cân bằng l
của cây tìm
ode con phả
ược thực thi
m tính chấ
u trúc cây.
kiếm( BS
T
hoặc đen.
de lá phải lu
những nod
ốc đến một
cần phải tuâ
c cân bằng.
không phâ
n
ode là con

m) theo thứ
t cân bằng v
h liên kết, d
uy xuất giả
) của cây, ch
ằng). Điều
số node con
lại cây: đó l
m kiếm nhị p
ải, bên cạnh
trong khi c
ất cân bằng
Bằng cách
T) tuân thủ c
uôn luôn đen
de con của n
lá phải có c
ân thủ các q

Thá
n
Nguy
n nhánh. Bở
phải. Khi ấ
ứ tự giảm dầ
về phía bên
dữ liệu sẽ là
ảm về O(N
húng ta cần
này có ngh

n bên trái.
là cây đỏ đ
phân ví dụ
h đó cây đỏ
chèn, xóa. K
g của cây c
này, cây lu
các quy tắc
n.
nó phải đen
cùng số lượ
quy tắc trên
ng 6 năm 20
yễn Hồng P
ởi vì mỗi n
ấy, cây bị m
ần, mỗi no
n kia.
à một chiều
), thay vì O
n phải bảo đ
hĩa là mỗi no
en-là cây tì
: node con
ỏ đen còn đ
Khi thêm m
có bị vi ph
uôn luôn đư
sau: (hình
.

ợng node đe
-gọi là quy
005
Phú
node lớn
mất cân
de sẽ là
u thay vì
O(logN)
đảm cây
ode trên
ìm kiếm
trái nhỏ
được bổ
một phần
hạm hay
ược giữ
3.2)
en.
y tắc đỏ
Cây
Ng
y Đỏ Đen
guyễn Hoài
M

Phương
Số lượng n
cao đen (b
l

là mọi đườn
Bổ đề:
Một cây đỏ
Có: height
height
:
Tính chất
Thời gia
n
Chứng Mi
H
ode đen trê
lack height)
ng dẫn từ g
ỏ đen n-nod
<= 2 log(n+
: Chiều cao
: height <=
n tìm kiếm:
nh:
6
Hình 3.2. Mộ
n một đườn
). Ta có thể
gốc đến lá p
de
+1)
cây
2 * bh(x)
O( log n )

ột ví dụ về c
ng dẫn từ gố
phát biểu q
hải có cùng
Thán
Nguy
ây đỏ đen
ốc đến lá đư
quy tắc 4 th
g chiều cao
ng 6 năm 20
yễn Hồng P

ược gọi là c
eo một cách
đen.
005
Phú
chiều
h khác
Cây Đỏ Đen Tháng 6 năm 2005
Nguyễn Hoài Phương 7 Nguyễn Hồng Phú

III- Các thuật toán cơ bản của Black and Red Tree
1- Thêm một Node mới
Chúng ta sẽ xem xét việc mô tả qui trình chèn. Gọi X, P, và G để chỉ định nhãn những
node liên quan. X là node vi phạm quy tắc ( X có thể là một node mới được chèn, hoặc
node con khi node cha và node con xung đột đỏ-đỏ, nghĩa là có cùng màu đỏ).
· X là một node cho trước.
· P là node cha của X.

· G là node ông bà của X (node cha của P).
Trong quá trình thêm vào node mới có thể vi phạm các quy tắc của cây đỏ đen, chúng
ta sẽ thực hiện các thao tác sau đây:
· Các phép lật màu trên đường đi xuống.
· Các phép quay khi node đã được chèn.
· Các phép quay trên đường đi xuống.


1.1 Các phép lật màu trên đường đi xuống

Cây
Ng
Phé
đi t
trị
Tu
y
qua
Để
cầ
n

no
d
Mộ
tam
nod
Hìn
Hìn
Ch


Mặ
nod
đen
là đ
y Đỏ Đen
guyễn Hoài
ép thêm vào
theo một đư
của khóa no
y nhiên, tro
ay.
bảo đảm
k
n. Theo quy
hai node co
de cha là no
ột phép lật m
m giác, node
de con trái v
nh 3.4. Lật
nh 3.4a. trư
húng ta nhận
àu không vi
ặc dù quy tắ
de cha khôn
n, không có
đỏ, thì sau k
Phương
o trong cây

ường dẫn từ
ode và khóa
ong cây đỏ đ
không vi phạ
y tắc như sa
on đỏ, chún
ode gốc, nó
màu ảnh hư
e có màu đỏ
và phải của
màu
ước khi lật m
n thấy sau k
phạm quy
ắc 4 không b
ng thể đồng
ó vấn đề vi p
khi đổi màu
đỏ đen bắt
ừ node gốc đ
a tìm kiếm.
đen, đến đư
ạm các quy
au: nếu phép
ng ta đổi các
vẫn vẫn gi
ưởng đến cá
ỏ trước phép
a P là X1 và
màu, Hình 3

khi lật màu
tắc 4.
bị vi phạm
g màu đỏ) lạ
phạm khi P
u, ta sẽ có h
8
t đầu như trê
đến vị trí cầ

ược điểm ch
y tắc màu, c
p thêm vào
c node con t
ữ màu là đe
ác quy tắc đ
p lật là P (P
à X2. Xem h
3.4b sau khi
chiếu con đ
qua phép lậ
ại có khả nă
chuyển từ
hai node đỏ
ên cây tìm k
ần chèn, đi
hèn là phức
ần phải tiế
n
làm xuất hi

thành đen v
en).
đỏ-đen ra sa
P thay cho n
hình 3.4a.
i lật màu.
đen của cây
ật, nhưng q
ăng bị vi ph
đen sang đỏ
trên một hà
Thán
Nguy
kiếm nhị ph
qua phải ha
tạp bởi các
n hành các p
iện tình trạn
và node cha
ao? chúng ta
node cha). C

y không đổi
quy tắc 3 (m
hạm. Nếu no
ỏ, nhưng nế
àng.
ng 6 năm 20
yễn Hồng P
hân thông th

ay trái tùy v
c phép lật m
phép lật mà
ng một nod
a thành đỏ (
a gọi node ở
Chúng ta gọ
. Như vậy p
một node con
ode cha của
ếu node cha
005
Phú
hường:
vào giá
màu và
àu khi
de đen
trừ khi
ở đỉnh
ọi hai
phép lật
n và
a P là
a của P
Cây
Ng
Điề
ta c
Đố

gốc
3 (x
gốc
1.2
Tha
chè
lý.
N
h
thể
y Đỏ Đen
guyễn Hoài
ều này cần p
có thể giải q
ối với node g
c cũng như
xung đột đỏ
c tăng lên 1
2 Các p
ao tác chèn
èn, cần phải
hư đã xét ở t
ể nằm ở nhữ
Phương
phải được c
quyết trườn
gốc thì phép
hai node co
ỏ-đỏ). Tron
, do đó quy

phép quay
n node mới c
i kiểm tra x
trên, node m
ững vị trí kh
chuẩn bị tru
ng hợp này b
p lật màu n
on có màu đ
ng trường hợ
y tắc 4 cũng
khi chèn
có thể làm c
xem có phạm
mới được ch
hác nhau đố
9
uớc khi đi x
bằng một p
node gốc và
đen. Điều n
ợp này, chiề
g không bị v
node
cho quy tắc
m quy tắc k
hèn mà ta g
ối với P và G
xuống theo c
hép quay.

hai node c
o
này tránh sự
ều cao đen t
vi phạm.
c đỏ-đen bị
không và thự
gọi là node X
G, như tron
Thán
Nguy
cây để chèn
on của nó v
ự vi phạm qu
trên mỗi đư
vi phạm. D
ực hiện nhữ
X, luôn luô
ng hình 3.5.

ng 6 năm 20
yễn Hồng P
n node mới.
vẫn làm cho
uy tắc 2 và
ường đi từ n
Do vậy sau k
ững thao tác
ôn đỏ. Node
005

Phú
. Chúng
o node
quy
tắc
node
khi
c hợp
e X có
Cây
Ng
Hìn
X l
Điề
nod
Ng
Nế
no
d
chá
Tha


n
i) K
ii) K
iii)
y Đỏ Đen
guyễn Hoài
nh 3.5. Các

là một node
ều này có n
de con trái c
gược lại, X l
u X là node
de P ở bên t
áu nội. Bốn
ao tác phục
những bà c
nh 3.6. Ba k
Khả năng 1
Khả năng 2
Khả năng
Phương
biến dạng
e cháu ngoạ
nghĩa là, X l
của G, hoặc
là một node
e cháu ngoạ
trái hay bên
n trường hợp
c hồi quy tắc
con của nó.
khả năng sa
: P đen
2: P đỏ và X
3: P đỏ và X
của node đư
ại nếu nó nằ

là node cháu
c nó là node
e cháu nội.
ại, nó có thể
n phải node
p này được
c đỏ-đen đư
Có 3 khả n
au khi chèn
X là cháu ng
X là cháu n
10
ược chèn
ằm cùng bên
u ngoại nếu
e con phải c
ể hoặc bên t
G. Có hai k
trình bày tr
ược xác địn
năng xảy ra


t
goại của G
nội của G
n node cha
u hoặc nó là
của P và no
trái hoặc bê

khả năng tư
rong hình 3
nh bởi các m
được xem x
Thán
Nguy
P và P cùng
à node con t
de P là nod
ên phải của
ương tự nếu
.5.
màu và cấu h
xét như sau
ng 6 năm 20
yễn Hồng P
g bên node
trái của P v
de con phải
P,
tùy vào
u X là một n
hình của no
u:(hình 3.6)
005
Phú
cha G.
và P là
của G.
việc

node
ode X
Cây
Ng
Ch
i) K
P đ
xun
Do
ii) K
Nế
th
a
cần
Bây
phả
Tro
cân
Đ
Đ
Q
phé
Kh
Tro
đối
này
bằn
cây
y Đỏ Đen
guyễn Hoài

húng ta lần l
Khả năng 1
đen là trườn
ng khắc đỏ-
o vậy, không
Khả năng 2
u node P đỏ
ay đổi về mà
n phải làm m
y giờ, chèn
ải có các th
ong trường
n bằng cây.
Đổi màu nod
Đổi màu nod
Quay với no
ép quay phả
hi ta hoàn tấ
ong thí dụ n
i xứng khi n
y bằng cách
ng cách đổi
y lại được c
Phương
lượt xét các
: P đen
ng hợp đơn
-đỏ (quy tắc
g bị vi phạm
2: P đỏ và X

ỏ và X là no
àu. Bắt đầu
một phép lậ
node mới X
ao tác như
hợp này, t
a
Sau đây là
de G - node
de P - node
de G (25)

ải.
ất ba buớc tr
này, node X
node X là n
h tạo nên câ
màu node
cân bằng.
c khả năng c
giản. Node
c 3), và khô
m quy tắc v
X là cháu ng
ode cháu ng
u với giá trị
ật màu trước
X là 6. (hìn
sau: (hình 3
a có thể áp d

các bước ấ
e ông bà của
cha của no
ở vị trí đỉnh
rên sẽ bảo t
X là node ch
node cháu ng
ây 50, 25, 75
75 và 87, v
11
cụ thể như s
thêm vào l
ông có việc
ề màu. Th
a
goại của G
goại, ta cần
50 tại nod
e
c khi chèn n
nh 3.7a. )xuấ
3.7)
dụng ba bướ
ấy:
a node X (tr
de X (node
, theo huớn
toàn cây đỏ
háu ngoại củ
goài nhưng

5, 87, 93 (v
và quay trái
sau:
luôn đỏ. Nế
cộng thêm
ao tác chèn
một phép
q
e gốc, và ch
node 12.
ất hiện lỗi:
ớc để phục
rong thí dụ
e 12)
ng làm nâng
đen. Xem
ủa một node
g của một no
với phép lật
với node 7
Thá
n
Nguy
ếu node cha
vào số nod
đã hoàn tất
quay đơn gi
hèn các node
cha và con
hồi tính đ


này là node
g node X lên
hình 3.7b.
e con trái. C
ode con phả
màu khi cầ
5 là node đ
ng 6 năm 20
yễn Hồng P
a đen, không
de đen (quy
.
iản và một v
e 25, 75 và
đều đỏ, vì
v
ỏ-đen và làm
e 25).
n (6). Đây l
Có một trườ
ải. Thử làm
ần). Chỉnh s
ỉnh. Một lầ
005
Phú
g có
tắc 4).
vài
12. Ta

vậy cần
m cho
là một
ờng hợp
m điều
sửa cây
ần nữa
Cây
Ng
Hìn
iii)
Nế
phé
lật

u
y Đỏ Đen
guyễn Hoài
nh 3.7. Nod
Khả năng
u node P đ

ép đổi màu.
màu trước
u ý là node

Phương
de P đỏ và X
3: P đỏ và X
ỏ và X là no

. Cây đỏ đe
khi chèn no
18 là node
X là node ch
X là cháu n
ode cháu nộ
en được tạo
ode 12). Xe
cháu nội. N
12
háu ngoại
nội của G
ội, chúng ta
thành từ cá
em hình 3.8
Node này v
a cần thực h
ác node 50,
a.
à node cha
Thán
Nguy
hiện hai phé
25, 75, 12
đều đỏ (ch
a
ng 6 năm 20
yễn Hồng P
ép quay và m
và 18. (cần

a và con đề
005
Phú
một vài
n phải
ều đỏ).

×