1
30/10/2012 1
Toán ri rc (6):
CÂY VÀ MT S NG
DNG CA CÂY
Ts. Hoàng ThThanh
Khoa Thng –Tin hc
Trường Đại hc Kinh tế
30/10/2012 2
NI DUNG
1. Khái nim cây
2. Cây bao trùm
3. Cây bao trùm nhnht
4. Cây bao trùm ln nht
5. Cây phân cp
6. Duyt cây
7. Cây nhphân
1. Cây biu thc
2. Cây tin t
30/10/2012 3
1. KHÁI NIM CÂY
Khái nim cây do Cayley đưa ra vào năm 1857.
Định nghĩa 1:GisT = (V, E) mtđồ th
hướng. T mtcây nếu tha mãn hai tính cht
sau:
- liên thông,
- không chu trình.
Cây không chu trình nên không khuyên, không
cnh bi, nên ta quy ướcĐồ th hướng chính
đơnđồ vo hướng
Mtđồ th hướng không cha chu trình ít
nht hai đỉnh gi mt rng. Trong mt rng, mi
thành phn liên thông là mt cây.
30/10/2012 4
1. VÍ D 1
d:Rng sau 3 cây:
a
b
cf
d
e
g h j
i
k
l
m
n
30/10/2012 5
1. KHÁI NIM CÂY (tiếp)
Định 1:Cho T đồ th hướng s đỉnh không
ít hơn 2. Khi đó các khng định sau là tương đương:
1) T mt cây.
2) T liên thông n1 cnh.
3) T không cha chu trình n1 cnh.
4) T liên thông mi cnh cu.
5) Gia hai đỉnh phân bit bt kca T luôn có duy
nht mtđường đi sơcp.
6) T không cha chu trình nhưng khi thêm mt cnh
mi thì được mt chu trình duy nht.
30/10/2012 6
1. KHÁI NIM CÂY (tiếp)
Chng minh: 1)
2) Chcn chng minh rng
mt cây n đỉnh thì n1 cnh. Ta chng
minh bng quy np. Điu này hin nhiên khi
n=2. Giscây k đỉnh thì k1 cnh, ta
chng minh rng cây T k+1 đỉnh thì k
cnh. Tht vy, trong T nếu ta xoá mtđỉnh
treo cnh treo tương ng thì đ thnhn
được mt cây k đỉnh, cây y k1 cnh,
theo githiết quy np. Vy cây T k cnh.
2
30/10/2012 7
1. KHÁI NIM CÂY (tiếp)
Chng minh:2)
3) Nếu T chu trình thì b đi mt cnh
trong chu trình này thì T vn liên thông. Làm li như
thếcho đến khi trong T không còn chu trình nào
vn liên thông, lúc đó ta được mt cây n đỉnh
nhưng ít hơn n1 cnh, trái vi 2).
3)
4) Nếu T k thành phn liên thông T1, ..., Tk
ln lượt s đỉnh là n1, ..., nk (vi n1+n2+
+nk=n) thì mi Ti mt cây nên scnh
ni1. Vy ta có: n1=(n11)+(n21)+ ...
+(nk1)=(n1+n2+ +nk)k=nk.
Do đó k=1 hay T liên thông. Hơn na, khi b đi mt
cnh thì T hết liên thông, nếu còn liên thông thì T
mt cây n đỉnh vi n2 cnh, trái viđiuđã chng
minh trên.
30/10/2012 8
1. KHÁI NIM CÂY (tiếp)
Chng minh:4)
5) T liên thông nên gia hai đỉnh
phân bit bt kca T luôn mtđường đi sơcp,
nhưng không th được ni bi hai đường đi sơcp
nếu thế, hai đường đó sto ra mt chu trình khi
bmt cnh thuc chu trình này, T vn liên thông,
trái vi githiết.
5)
6) Nếu T cha mt chu trình thì hai đỉnh bt k
trên chu trình này s được ni bi hai đường đi sơ
cp. Ngoài ra, khi thêm mt cnh mi (u,v), cnh này
sto nên viđường đi sơcp duy nht ni u v
mt chu trình duy nht.
6)
1) Nếu T không liên thông thì thêm mt cnh ni
hai đỉnh hai thành phn liên thông khác nhau ta
không nhnđược mt chu trình o. Vy T liên
thông, do đó mt cây.
30/10/2012 9
2. CÂY BAO TRÙM
Định nghĩa 2
GisG mtđồ th hướng liên thông.
Nếu ta loi bcnh nm trên chu trình nào đó
thì ta s đượcđồ thvn liên thông. Nếu c
loi bcác cnh các chu trình khác cho đến
khi nào đồ thkhông còn chu trình (vn liên
thông) thì ta thu được mt cây ni các đỉnh
ca G. Cây đó gi cây khung hay cây bao
trùm cađồ thG.
Hay cho đ thG, đồ thcon T cha tt ccác
đỉnh, T 1 y => T là cây bao trùm ca G
30/10/2012 10
2. VÍ DY BAO TRÙM
Đồ thG cây bao trùm:
a
d
b
e
c
a
d
b
e
c
a
d
b
e
c
Hai cây bao trùm ca đồ th G
30/10/2012 11
2. CÂY BAO TRÙM (tiếp)
Định 2:Đồ th hướng G cây bao trùm G
liên thông.
Chng minh:
Hin nhiên, cây bao trùm liên thông suy ra G
liên thông.
Chna mtđỉnh bt ktrong đồ thG.
hiu: d(x) khong cách giaa đỉnh x.
Xây dng các tpđỉnh:
D0= {a}, Di= { xd(x) = i } vii1.
30/10/2012 12
2. CÂY BAO TRÙM (tiếp)
a
D0D1D2. . .
Cách xây dng cây bao trùm
Chú ý: Mi đỉnh xthuc Di(i1) đều có đỉnh ythuc Di-1 sao
cho (x, y) là mt cnh, vì nếu < a, ... , y, x > là đường đi ngn nht
ni avi xthì < a, ... , y > là đường đi ngn nht ni avi y
y Di-1.
3
30/10/2012 13
2. CÂY BAO TRÙM (tiếp)
Chng minh (tiếp): Lp tp cnh T nhưsau:
Vi miđỉnh xcađồ thG, xDivii1, ta ly
cnh nào đó nixvi mtđỉnh trong Di-1.
Tp cnh này sto nên mtđồ thriêng ca G vin
đỉnh n- 1 cnh.
Đồ thriêng này liên thông miđỉnh đềuđược ni
viđỉnh a. Theo tính cht 2) ca cây thì T mt cây.
Do vy, T cây bao trùm cađồ thG.
30/10/2012 14
3. CÂY BAO TRÙM NH NHT
Bài toán: Cho đồ th hướng G liên thông vi
tp cnh E hàm trng sc:EN. Tìm cây
bao trùm T ca G sao cho tng trng sca các
cnh ca T đạt giá trnhnht.
Mt sthut toán m cây bao trùm nhnht:
- Thut toán Kruskal
- Thut toán Prim
30/10/2012 15
3.1. THUT TOÁN KRUSKAL
Thut toán:
Đầu vào: Đồ thG ma trn trng sM
Đầu ra: Độ ln ca cây khung đậm cây khung
1. Sp xếp các cnh tăng dn theo trng s. Chn
e trng s nht, gise1,đặt W= {e1}.
2. Gis đã chnđược W = {e1, e2, ... , ei}. Chn
ei+1 cnh trng s nht trong scác
cnh còn li trong E\ W sao cho {e1, e2, ... , ei,
ei+1} không cha chu trình.
3. Bsung: W := W {ei+1}.
4. Lp li các bước 2, 3 chng nào n th.
30/10/2012 16
3.1. THUT TOÁN KRUSKAL
Đồ th trng s cây bao trùm nhnht:
1
1
1
2
2
4
6
5 6 5
11
1
2
2
4
6
5 6 5
30/10/2012 17
3.1. THUT TOÁN KRUSKAL
Đồ th trng s cây bao trùm nhnht:
33
17
18 16
4
9
8
14
20
33
17
18 16
4
9
8
14
20
30/10/2012 18
3.1. THUT TOÁN KRUSKAL (tiếp)
Định 3 : Tp các cnh W tìm được
theo thut toán Kruskal to nên cây bao
trùm nhnht cađồ thG.
Thut toán Kruskal chi tiết
1 procedure Kruskal ;
2 begin
3 W := ; Z := E ;
4
30/10/2012 19
3.1. THUT TOÁN KRUSKAL (tiếp)
4 while (|W| < n-1) and (Z ) do
5 begin
6chn cnh e trng s nht trong Z ;
7 Z := Z \ {e} ;
8 if W {e}không cha chu trình then
W := W {e}
9 end ;
10 if |W| < n-1 then writeln(Đồ thkhông liên
thông)
11 end ;
30/10/2012 20
3.2. THUT TOÁN PRIM
Nhn xét: Thut toán Kruskal làm vic kém
hiu qu đối vi nhng đồ thy (đồ th s
cnh m n(n1)/2). Trong trường hpđó,
thut toán Prim tra hiu quhơn. Thut toán
Prim còn được gi phương pháp lân cn gn
nht.
Thut toán Prim
Prim đã ci tiến thut toán Kruskal nhưsau:
mi vòng lp ta chn cnh trng s
nht trong scác cnh kvi các cnh đã
chn không to nên chu trình.
30/10/2012 21
3.2. THUT TOÁN PRIM (tiếp)
Thut toán Prim: btđầu tmtđỉnh ao đó
cađồ thG ta ni viđỉnh “gn” nht,
chng hnb. Nghĩa là, cnh (a, b)được chn
trng s nht. Tiếp theo, trong scác
cnh kviđỉnh ahocđỉnh bta chn cnh
trng s nht không to nên chu
trình vi cnh (a, b). Cnh này dnđếnđỉnh
thba c...
Tiếp tc quá trình này cho đến khi nhnđược
cây gmnđỉnh n-1 cnh. Đó chính
cây bao trùm nhnht.
30/10/2012 22
3.2. THUT TOÁN PRIM (tiếp)
1 procedure Prim ;
2 begin
3 W := {cnh trng s nht};
4 for i:= 1 to n- 2 do
5 begin
6e:= cnh trng s nht kvi cnh
trong W nếu ghép vào W thì không
to nên chu trình ;
7W := W {e}
8 end
9 end ;
30/10/2012 23
4. CÂY BAO TRÙM LN NHT
Trong các thut toán Kruskal Prim ta
không ràng buc vdu ca trng s, n
tháp dng cho đ th hướng vi trng s
trên các cnh cùng du tuý.
30/10/2012 24
4. CÂY BAO TRÙM LN NHT (tiếp)
Để tìm cây bao trùm ln nht ta hai cách:
1. Đổi thành du - cho các trng strên các cnh. áp
dng mt trong hai thut toán đã trình bày trên
để tìm cây bao trùm nhnht. Sau đóđổi du +
trli, ta s được cây bao trùm ln nht.
2. Sađổi trong các thut toán: bước chn cnh
trng s nht ... được thay bng chn cnh
trng sln nht ... còn các bước khác thì
ginguyên. Khi thut toán kết thúc, ta snhn
được cây bao trùm ln nht.
5
30/10/2012 25
5. CÂY PHÂN CP
Định nghĩa 4:Cây phân cp mt cây, trong đó
mtđỉnh đặc bit gi gc, gia các đỉnh có mi
quan hphân cp “cha-con”.
Mt sthut ng:
- Scác con ca mtđỉnh trong cây phân cp
được gi bccađỉnh đó.
-Đỉnh không con được gi lá ca cây.
-Đỉnh không phi được gi đỉnh trong ca
cây, còn lá được gi là đỉnh ngoài ca cây. Đỉnh
gc đỉnh duy nht không cha.
30/10/2012 26
5. CÂY PHÂN CP (tiếp)
-Mccađỉnh trong cây phân cp:
Gc ca cây mc 0.
Nếu mc cađỉnh cha ithì mc ca các
đỉnh con i+ 1.
- Chiu cao ca cây mc cao nht ca c đỉnh
trong cây.
30/10/2012 27
5. VÍ D
Cây T dướiđây đỉnh gca, các đỉnh b, g, e,
h, k.
a
bc
de f
g h k
Hình Cây phân cp
30/10/2012 28
5. CÂY PHÂN CP (tiếp)
Định nghĩa 5 (đệ quy)
- Tp rng mt cây phân cp (cây rng).
- Mtđỉnh mt cây phân cp.
- Gisa mtđỉnh T1, T2, ... , Tk các cây
phân cp vi các gc a1, a2, ..., aktương ng.
Cây T được y dng bng cách cho đỉnh alàm
“cha” ca các đỉnh a1, a2, ..., ak,s mt cây
phân cp. Trong y T này, đỉnh a gc T1,
T2, ... , Tk các cây con ca gca.
30/10/2012 29
5. CÂY PHÂN CP (tiếp)
Đường đi trong cây phân cp T là mt dãy các đỉnh
<b1, b2, ..., bm> mà:
bi “cha” cabi + 1, 1 im-1.
Cây phân cp T vi bc cao nht ca các đỉnh trong
T m,được gi cây m- phân.
Cây m-phân đầyđ cây miđỉnh trong
đúng m con.
a
a1a2ak
T1T2Tk
. . .
Hình 12. Cây phân cp tng quát
30/10/2012 30
5. CÂY PHÂN CP (tiếp)
Định 4
GisT mt y m-phân.
- Nếu cây T chiu cao hthì cây nhiu nhtmh
lá.
- Nếu cây T l t cây chiu cao h[logml].