27.10.2004 1
Các C u Trúc D Li u cho các T p R i Nhau
27.10.2004 Ch ng 7:ác c u trúc d li u ươ
cho các t p r i nhau 2
Các thao tác lên c u trúc d li u các t p r i nhau
ªC u trúc d li u các t p r i nhau đc đnh nghĩa b iượ
M t t p S c a các t p đng r i nhau, S = {S1 , S2 ,..., Sk}
°M i t p Si đc t ng tr ng b i m t ph n t ượ ượ ư đi di n là m t
ph n t nào đó c a nó.
Các thao tác
° MAKE-SET(x): t o m t t p m i ch g m x. Vì các t p là r i
nhau nên x không đc đang n m trong m t t p khác.ượ
° UNION(x, y): t o t p h i c a các t p đng Sx và Sy l n l t ượ
ch a x và y, v i đi u ki n là Sx và Sy là r i nhau.
° FIND-SET(x): tr v m t con tr ch đn ph n t đi di n c a ế
t p ch a x.
ªĐ cho g n, s dùng “các t p r i nhau” đ g i “c u trúc d li u các
t p r i nhau”.
27.10.2004 Ch ng 7:ác c u trúc d li u ươ
cho các t p r i nhau 3
Các thao tác lên các t p r i nhau (ti p) ế
ªPhân tích th i gian ch y c a các thao tác s d a trên hai tham s sau
n, s các thao tác MAKE-SET
m, s t ng c ng các thao tác M AKE-SET, UNION, và FIND-SET.
ªNh n xét:
Sau n 1 l n g i U NION lên các t p r i nhau thì còn l i đúng m t
t p.
m n.
27.10.2004 Ch ng 7:ác c u trúc d li u ươ
cho các t p r i nhau 4
M t ng d ng c a các t p r i nhau
ªXác đnh các thành ph n liên thông c a m t đ th vô h ng ướ
Th t c C ONNECTED-COMPONENTS xác đnh các thành ph n liên
thông c a m t đ th vô h ng. ướ
V[G] là t p các đnh c a đ th G, E[G] là t p các c nh c a G.
CONNECTED-COMPONENTS(G)
1 for m i đnh v V[G]
2 do MAKE-SET(v)
3 for m i c nh ( u, v) E[G]
4 do if FIND-SET(u) FIND-SET(v)
5 then UNION(u, v)
27.10.2004 Ch ng 7:ác c u trúc d li u ươ
cho các t p r i nhau 5
M t ng d ng c a các t p r i nhau (ti p) ế
Th t c S AME-COMPONENT xác đnh hai đnh có cùng m t thành
ph n liên thông hay không.
SAME-COMPONENT(u, v)
1 if FIND-SET(u) = FIND-SET(v)
2 then return TRUE
3 else return FALSE