CH NG VIƯƠ
Y
M t đ th liên thông không chu trình đ c g i cây. Cây đã đ c dùng ượ ượ
t năm 1857, khi nhà toán h c Anh n Arthur Cayley ng y đ xác đ nh nh ng
d ng khác nhau c a h p ch t hoá h c. T đó cây đã đ c dùng đ gi i nhi u i toán ượ
trong nhi u nh v c khác nhau. Cây r t hay đ c s d ng trong tin h c. Ch ng h n, ượ
ng i ta dùng cây đ xây d ng các thu t toán r t có hi u qu đ đ nh v các ph n tườ
trong m t danh ch. Cây cũng ng đ xây d ng các m ng y tính v i chi p r
nh t cho các đ ng đi n tho i n i c y phân n. Cây ng đ c dùng đ t o ra ườ ượ
các mã có hi u qu đ l u tr và truy n d li u. Dùng cây có th mô hình các th t c ư
mà đ thi nh nó c n dùng m t dãy các quy t đ nh. Vì v y y đ c bi t có giá tr khi ế
nghiên c u các thu t tn s p x p. ế
6.1. Đ NH NGHĨA VÀ CÁC TÍNH CH T C B N. Ơ
6.1.1. Đ nh nghĩa: Cây là m t đ th vô h ng liên tng, không ch a chu trình và có ướ
ít nh t hai đ nh.
M t đ th h ng không ch a chu trình ít nh t hai đ nh g i m t ướ
r ng. Trong m t r ng, m i tnh ph n ln thông m t cây.
Thí d 1: R ng sau có 3 cây:
6.1.2. M nh đ : N u T là m t cây n đ nh t T ít nh t hai đ nh treo.ế
Ch ng minh: L y m t c nh (a,b) tuỳ ý c a cây T. Trong t p h p các đ ng đi s c p ườ ơ
ch a c nh (a,b), ta l y đ ng đi t u đ n v i nh t.T m t cây n u ườ ế v. M t
khác, u và v ph i là hai đ nh treo, vì n u m t đ nh, u ch ng h n, không ph i là đ nh treo ế
thì u ph i là đ u mút c a m t c nh (u,x), v i x là đ nh không thu c đ ng đi t u đ n ườ ế
v. Do đó, đ ng đi s c p t x đ n v, ch a c nh (a,b), dài h n đ ng đi t u đ n v,ườ ơ ế ơ ườ ế
trái v i tính ch t đ ng đi t u đ n v đã ch n. ườ ế
6.1.3. Đ nh lý: Cho T là m t đ th có n 2 đ nh. Các đi u sau t ng đ ng: ươ ươ
1) T m t cây.
2) T liên tng n1 c nh.
3) T không ch a chu trình n1 c nh.
4) T liên tng m i c nh là c u.
5) Gi a hai đ nh phân bi t b t kỳ c a T ln có duy nh t m t đ ng đi s c p. ườ ơ
87
a
b
c f
d
e
g h j
i
k
l
m
n
6) T không ch a chu trình nh ng khi thêm m t c nh m i thì có đ c m t chu trình duy ư ượ
nh t.
Ch ng minh: 1)2) Ch c n ch ng minh r ng m t y n đ nh thì n 1 c nh. Ta
ch ng minh b ng quy n p. Đi u này hi n nhiên khi n=2. Gi s cây k đ nh thì
k1 c nh, ta ch ng minh r ng cây T có k+1 đ nh thì có k c nh. Th t v y, trong T n u ta ế
xoá m t đ nh treo và c nh treo t ng ng thì đ th nh n đ c m t cây k đ nh,y ươ ượ
y có k1 c nh, theo gi thi t quy n p. V y cây T k c nh. ế
2)3) N u T chu trình tb đi m t c nh trong chu trình này thì T v n liên thông.ế
m l i nh th cho đ n khi trong T kng còn chu trình nào mà v n liên thông, lúc đó ư ế ế
ta đ c m t cây có n đ nh nh ng ít h n nượ ư ơ 1 c nh, trái v i 2).
3)4) N u T k thành ph n liên thông Tế 1, ..., Tk l n l t s đ nh n ượ 1, ..., nk (v i
n1+n2+ +nk=n) tm i Ti là m t cây nên s c nh là n i1. V y ta
n1=(n11)+(n21)+ ... +(nk1)=(n1+n2+ +nk)k=nk.
Do đó k=1 hay T liên thông. H n n a, khi b đi m t c nh thì T h t liên thông, n uơ ế ế
n liên thông thì T m t cây n đ nh v i n 2 c nh, trái v i đi u đã ch ng minh trên.
4)5) T liên thông n gi a hai đ nh phân bi t b t kỳ c a T luôn m t đ ng đi ườ
s c p, nh ng không th đ c n i b i hai đ ng đi s c p n u th , hai đ ng đóơ ư ượ ườ ơ ế ế ườ
s t o ra m t chu trình và khi b m t c nh thu c chu trình này, T v n liên thông, trái
v i gi thi t. ế
5)6) N u T ch a m t chu trình thì hai đ nh b t ktrên chu trình này s đ c n i b iế ượ
hai đ ng đi s c p. Ngoài ra, khi thêm m t c nh m i (u,v), c nh y s t o n v iườ ơ
đ ng đi s c p duy nh t n i u và v m t chu trình duy nh t.ườ ơ
6)1) N u T không liên thông thì thêm m t c nh n i hai đ nh hai thành ph n liênế
thông khác nhau ta không nh n đ c m t chu trình o. V y T liên thông, do đó ượ
m t cây.
6.2. CÂY KHUNG VÀ BÀI TOÁN TÌM CÂY KHUNG NH NH T.
6.2.1. Đ nh nghĩa: Trong đ th liên thông G, n u ta lo i b c nh n m trên chu tnh ế
o đó thì ta s đ c đ th v n là liên thông. N u c lo i b các c nh các chu trình ượ ế
khác cho đ n khi nào đ th không còn chu trình (v n liên thông) thì ta thu đ c m tế ượ
cây n i các đ nh c a G. Cây đó g i là cây khung hayy bao trùm c a đ th G.
T ng quát, n u G đ th n đ nh, m c nh k thành ph n liên thông thì áp ế
d ng th t c v a mô t đ i v i m i thành ph n liên thông c a G, ta thu đ c đ th ượ
g i là r ng khung c a G. S c nh b lo i b trong th t c này b ng m n+k, s y ký
hi u là ν(G) và g i là chu s c a đ th G.
6.2.2. Bài toán tìm cây khung nh nh t: Bài toán tìm cây khung nh nh t c a đ
th m t trong s nh ng bài toán t i u trên đ th tìm đ c ng d ng trong nhi u ư ượ
88
lĩnh v c khác nhau c a đ i s ng. Trong ph n này ta s hai thu t toán c b n đ ơ
gi i bài toán y. Tr c h t, n i dung c a bài toán đ c phát bi u nh sau. ướ ế ượ ư
Cho G=(V,E) là đ th vô h ng liên thông có tr ng s , m i c nh e ướ E có tr ng
s m(e)0. Gi s T=(V T,ET) y khung c a đ th G (V T=V). Ta g i đ dài m(T)
c a cây khung T t ng tr ng s c a các c nh c a nó:
m(T)=
T
E
)(
e
em
.
Bài toán đ t ra là trong s t t c c y khung c a đ th G, y tìm cây khung có đ
i nh nh t. y khung nh v y đ c g i cây khung nh nh t c a đ th bài ư ượ
toán đ t ra đ c g i là bài toán tìm cây khung nh nh t. ư
Đ minh ho cho nh ng ng d ng c a bài toán cây khung nh nh t, d i đây là ướ
hai mô hình th c t tiêu bi u cho nó. ế
i toán y d ng h th ng đ ng s t: ườ Gi s ta mu n xây d ng m t h th ng
đ ng s t n i n thành ph sao cho hành khách th đi t b t c m t thành ph oườ
đ n b t kỳ m t trong s các thành ph còn l i. M t kc, trên quan đi m kinh t đòiế ế
h i là chi phí v xây d ng h th ng đ ng ph i là nh nh t. Rõ ràng là đ th mà đ nh ườ
là các thành ph n c c nh làc tuy n đ ng s t n i các thành ph t ng ng, v i ế ườ ươ
ph ng án xây d ng t i u ph i là cây. Vì v y, bài toán đ t ra d n v bài toán tìm câyươ ư
khung nh nh t trên đ th đ y đ n đ nh, m i đ nh t ng ng v i m t thành ph v i ươ
đ dài tn các c nh chính là chi py d ng h th ng đ ng s t n i hai tnh ph . ườ
i toán n i m ng máy tính: C n n i m ng m t h th ng g m n máy tính đánh s t 1
đ n n. Bi t chi phí n i máy i v i y j m(i,j) (thông th ng chi phí này ph thu cế ế ườ
o đ dài cáp n i c n s d ng). Hãy tìm cách n i m ng sao cho t ng chi phí nh
nh t. Bài toán này cũng d n v bài toán m cây khung nh nh t.
Bài toán tìm cây khung nh nh t đã nh ng thu t toán r t hi u qu đ gi i
chúng. Ta s xét hai trong s nh ng thu t toán nh v y: thu t toán Kruskal thu t ư
toán Prim.
6.2.3. Thu t toán Kruskal:Thu t toán s xây d ng t p c nh E T c a y khung nh
nh t T=(VT, ET) theo t ng b c. Tr c h t s p x p các c nh c a đ th G theo th t ướ ướ ế ế
không gi m c a tr ng s . B t đ u t E T=, m i b c ta s l n l t duy t trong ướ ượ
danh sách c nh đã s p x p, t c nh có đ dài nh đ n c nh có đ dài l n h n, đ tìm ế ế ơ
ra c nh mà vi c b sung nó vào t p E T không t o thành chu trình trong t p này. Thu t
toán s k t thúc khi ta thu đ c t p E ế ượ T g m n1 c nh. C th th mô t nh sau: ư
1. B t đ u t đ th r ng T n đ nh.
2. S p x p các c nh c a G theo th t không gi m c a tr ng s . ế
3. B t đ u t c nh đ u tiên c a dãy y, ta c thêm d n các c nh c a dãy đã đ c ượ
x p vào T theo ngun t c c nh thêm vào kng đ c t o thành chu trình trong T.ế ượ
89
4. L p l i B c 3 cho đ n khi nào s c nh trong T b ng n ướ ế 1, ta thu đ c cây khungượ
nh nh t c n tìm.
Thí d 2:m y khung nh nh t c a đ th cho trong hình d i đây: ướ
B t đ u t đ th r ng T có 6 đ nh.
S p x p các c nh c a đ th theo th t không gi m c a tr ng s : ế
{(v3, v5), (v4, v6), (v4, v5), (v5, v6), (v3, v4), (v1, v3), (v2, v3), (v2, v4), (v1, v2)}.
Thêm vào đ th T c nh (v 3, v5).
Do s c nh c a T 1<6 1 nên ti p t c thêm c nh (vế 4, v6) vào T. Bây gi s
c nh c a T đã là 2 v n còn nh h n 6, ta ti p t c thêm c nh ti p theo trong dãy đã s p ơ ế ế
x p o T. Sau khi thêm c nh (vế 4, v5) vào T, n u thêm c nh (vế 5, v6) thì nó s t o thành
v i 2 c nh (v 4, v5), (v4, v6) đãtrong T m t chu trình. Tình hu ng t ng t cũng y ươ
ra đ i v i c nh (v 3, v4) c nh ti p theo trong dãy. Ti p theo ta b sung c nh (v ế ế 1, v3),
(v2, v3) vào T thu d c t p Eượ T g m 5 c nh:
{(v3, v5), (v4, v6), (v4, v5), (v1, v3), (v2, v3)}.
nh đúng đ n c a thu t toán: ng đ th thu đ c theo thu t toán n ượ 1 c nh
không có chu trình. Vì v y theo Đ nh lý 6.1.3, nó là cây khung c a đ th G. Nh v y ư
ch còn ph i ch ra r ng T có đ dài nh nh t. Gi s t n t i y khung S c a đ th
mà m(S)<m(T). hi u ek c nh đ u tiên trong dãy các c nh c a T y d ng theo
thu t toán v at không thu c S. Khi đó đ th con c a G sinh b i cây S đ c b ượ
sung c nh ek s ch a m t chu trình duy nh t C đi qua e k. Do chu trình C ph i ch a
c nh e thu c S nh ng không thu c T nên đ th con thu đ c t S b ng cách thay c nh ư ượ
e c a b i e k, hi u đ th này S’, s cây khung. Theo cách xây d ng,
m(ek)m(e), do đó m(S’)m(S), đ ng th i s c nh chung c a S’ và T đã tăng thêm m t
so v i s c nh chung c a S và T. L p l i quá trình trên t ng b c m t, ta có th bi n ướ ế
đ i S thành T và trong m i b c t ng đ dài không tăng, t c là m(T) ướ m(S). Mâu thu n
y ch ng t T là cây khung nh nh t c a G.
Đ ph c t p c a thu t toán Kruskal đ c đánh giá nh sau. Tr c tiên, ta s p ượ ư ướ
x p c c nh c a G theo th t chi u i tăng d n; vi c s p x p y đ ph cế ế
t p O(p2), v i p s c nh c a G. Ng i ta ch ng minh đ c r ng vi c ch n e ườ ư i+1
không t o nên chu trình v i i c nh đã ch n tr c đó đ ph c t p O(n ướ 2). Do
pn(n1)/2, thu t toán
90
v2
v3
v1
v4
v5
v6
v1
v2
v3
v4
v5
v6
33
17
18 16
4
9
8
14
20
Kruskal đ ph c t p là O(p 2).
6.2.4. Thu t toán Prim: Thu t toán Kruskal làm vi c kém hi u qu đ i v i nh ng
đ th dày th có s c nh m n(n1)/2). Trong tr ng h p đó, thu t toán Prim t raườ
hi u qu h n. Thu t toán Prim n đ c g i là ph ng pp lân c n g n nh t. ơ ượ ươ
1. VT:={v*}, trong đó v* là đ nh tuỳ ý c a đ th G.
ET:=.
2. V i m i đ nh v jVT, tìm đ nh wjVT sao cho
m(wj,vj) = min m(xi, vj)=:βj
xiVT
và gán cho đ nh vj nhãn [wj, βj]. N u không tìm đu c wế j nh v y (t c là khi vư j không k
v i b t c đ nh nào trong V T) tn cho vj nhãn [0, ].
3. Ch n đ nh v j* sao cho
βj* = min βj
vjVT
VT := VT {vj*},
ET := ET {(wj*, vj*)}.
N u |VếT| = n thì thu t toán d ng và (V T, ET) là cây khung nh nh t.
N u |VếT| < n thì chuy n sang B c 4. ướ
4. Đ i v i t t c các đ nh v jVT mà k v i v j*, ta thay đ i nhãn c a chúng nh sau: ư
N u ếβj > m(vj*, vj) thì đ t βj:=m(vj*, vj) nhãn c a vj [vj*, βj]. Ng c l i, taượ
gi nguyên nn c a v j. Sau đó quay l i B c 3. ướ
Thí d 3: Tìm cây khung nh nh t b ng thu t toán Prim c a đ th g m các đ nh A, B,
C, D, E, F, H, I đ c cho b i ma tr n tr ng s sau.ượ
14182111191218
14172321202032
18173430211920
21233422293423
11213022131319
19202129133316
12201934133315
18322023191615
.
Yêu c u vi t các k t qu trung gian trong t ng b c l p, k t qu cu i cùng c n đ a ế ế ư ế ư
ra t p c nh đ dài c a cây khung nh nh t.
91
ABCDEF H
A
I
B
C
D
E
F
H
I