B`ai to´an n`ay rˆa´t hay gˇa.p trong thˆong tin liˆen la.c v`a trong c´ac ng`anh kh´ac... trˆen khˆong thuˆo.c cˆay bao... liˆen thˆong c´o tro.ng sˆo´ G nhu.. tro.ng lu.o..ng tˇang dˆa
Trang 1printf(" \n Cay bao trum thu %d gom cac canh ", j);
for (i = 1; i <= NumEdges; i++)
if (Edge[i] == j) printf(" %d %d ", alpha[i], beta[i]);}
}
Trang 24.3.4 Thuˆ a.t to´an t`ım tˆa´t ca˙’ c´ac cˆay bao tr`um
Viˆe.c phˆan t´ıch c´ac ma.ch d¯iˆe.n vˆe` co ba˙’n c´o thˆe˙’ d¯u.a vˆe` b`ai to´an t`ım tˆa´t ca˙’ c´ac cˆay bao tr`umcu˙’a d¯ˆo` thi (xem [19]) Do tˆa`m quan tro.ng cu˙’a n´o, c´o nhiˆe`u thuˆa.t to´an kh´ac nhau gia˙’i quyˆe´tb`ai to´an n`ay Mˆo.t trong nh˜u.ng phu.o.ng ph´ap l`a ho´an d¯ˆo˙’i c´ac chu tr`ınh nhu sau: Xuˆa´t ph´at
t`u mˆo.t cˆay bao tr`um T n`ao d¯´o V´o.i mˆo˜i ca.nh khˆong nˇa`m trˆen cˆay T, khi thˆem v`ao cˆay n`ay
s˜e ta.o ra duy nhˆa´t mˆo.t chu tr`ınh X´oa bo˙’ mˆo.t ca.nh bˆa´t k`y trong chu tr`ınh n`ay s˜e cho tamˆo.t cˆay bao tr`um m´o.i
Do sˆo´ c´ac cˆay bao tr`um l`a rˆa´t l´o.n thˆa.m ch´ı ca˙’ v´o.i nh˜u.ng d¯ˆo` thi nho˙’, t´ınh hiˆe.u qua˙’cu˙’a nh˜u.ng thuˆa.t to´an gia˙’i quyˆe´t b`ai to´an rˆa´t quan tro.ng (xem [14]) Mˆo.t tˆo˙’ng quan cu˙’a c´acphu.o.ng ph´ap n`ay l`a mˆo.t luˆa.n ´an tiˆe´n s˜ı cu˙’a Chase [12] Chase d¯˜a chı˙’ ra rˇa`ng thuˆa.t to´and¯u.a ra bo.˙’i Minty c´o hiˆe.u qua˙’ nhˆa´t: liˆen tiˆe´p thu go.n d¯ˆo` thi bˇa`ng c´ac ph´ep to´an xo´a mˆo.tca.nh v`a ho p nhˆa´t c´ac d¯ı˙’nh d¯ˆa`u cuˆo´i cu˙’a n´o T`u c´ac cˆay bao tr`um cu˙’a c´ac d¯ˆo` thi thu go.n(m`a nho˙’ ho.n rˆa´t nhiˆe` u) ta c´o thˆe˙’ du ng d¯u.o c tˆa´t ca˙’ c´ac cˆay bao tr`um cu˙’a d¯ˆo` thi ban d¯ˆa`u
D- ˆe˙’ ba˙’o d¯a˙’m thuˆa.t to´an kˆe´t th´uc, c´ac d¯ˆo` thi c´o k´ıch thu.´o.c du.´o.i mˆo.t ngu.˜o.ng cho tru.´o.c s˜ekhˆong d¯u.o c thu go.n thˆem; thay v`ao d¯´o l`a c´ac cˆay bao tr`um cu˙’a ch´ung d¯u.o c suy ra
Nhˇa´c la.i rˇa`ng chu sˆo´ cu˙’a d¯ˆo` thi vˆo hu.´o.ng G c´o n d¯ı˙’nh, m ca.nh, p th`anh phˆa`n liˆen thˆong bˇa`ng c(G) = m − n + p−ch´ınh l`a sˆo´ cu c d¯a.i c´ac chu tr`ınh d¯ˆo.c lˆa.p Phˆa`n du.´o.i d¯ˆay ta xˆay
du ng thuˆa.t to´an t`ım hˆe co so.˙’ cu˙’a c´ac chu tr`ınh d¯ˆo.c lˆa.p du a trˆen cˆay bao tr`um cu˙’a d¯ˆo` thi Khˆong gia˙’m tˆo˙’ng qu´at, c´o thˆe˙’ gia˙’ thiˆe´t d¯ˆo` thi G liˆen thˆong, v`ı trong tru.`o.ng ho p tr´ai la.i,
th`ı ta x´et t`u.ng th`anh phˆa` n liˆen thˆong ´Y tu.o.˙’ng o.˙’ d¯ˆay l`a
1 Xˆay du ng cˆay bao tr`um T := (V, E T ).
2 Gia˙’ su.˙’ e1, e2, , e m−n+1 l`a c´ac ca.nh cu˙’a E m`a khˆong thuˆo.c cˆay T Khi thˆem mˆo.t ca.nh bˆa´t k`y trong c´ac ca.nh n`ay, chˇa˙’ng ha.n ca.nh e k , v`ao cˆay T ta d¯u.o c mˆo.t v`a chı˙’ mˆo.t chu tr`ınh µ k C´ac chu tr`ınh µ1, µ2, , µ m−n+1 l`a d¯ˆo.c lˆa.p v`ı mˆo˜i chu tr`ınh ch´u.a mˆo.t ca.nh
khˆong thuˆo.c c´ac chu tr`ınh kia; mˇa.t kh´ac ta c´o (m − n + 1) = c(G) chu tr`ınh nhu vˆa.y,
nˆen ta d¯˜a x´ac d¯i.nh d¯u.o c hˆe co so.˙’ cu˙’a c´ac chu tr`ınh d¯ˆo.c lˆa.p
Nhu vˆa.y b`ai to´an d¯u.a vˆe` t`ım c´ac chu tr`ınh µ k khi thˆem ca.nh e k v`ao cˆay T Trong khi kiˆe˙’m tra ca.nh e k = (α k , β k) trong thuˆa.t to´an 4.3.3, nˆe´u d¯iˆe` u kiˆe.n 3 d¯´ung (t´u.c l`a ca˙’ hai d¯ı˙’nh
α k v`a β k xuˆa´t hiˆe.n trong c`ung cˆay T i) th`ı thay cho viˆe.c loa.i bo˙’ ca.nh n`ay ch´ung ta cˆa`n t`ım
c´ac ca.nh trong T i m`a ta.o th`anh dˆay chuyˆe` n gi˜u.a hai d¯ı˙’nh α k v`a β k Dˆay chuyˆe` n n`ay c`ung
v´o.i ca.nh (α k , β k) ta.o th`anh mˆo.t chu tr`ınh co ba˙’n Vˆa´n d¯ˆe` ch´ınh o.˙’ d¯ˆay l`a t`ım dˆay chuyˆe` n
Trang 3n`ay C´o nhiˆe` u phu.o.ng ph´ap hiˆe.u qua˙’ gia˙’i quyˆe´t b`ai to´an, trong sˆo´ d¯´o thuˆa.t to´an cu˙’a Paton[50] l`a hiˆe.u qua˙’ nhˆa´t.
Thuˆa.t to´an Paton t`ım hˆe co so.˙’ cu˙’a c´ac chu tr`ınh d¯ˆo.c lˆa.p
Ch´ung ta c˜ung s˜e kiˆe˙’m tra mˆo˜i ca.nh c´o ta.o th`anh chu tr`ınh v´o.i nh˜u.ng ca.nh trong cˆay d¯u.o cxˆay du ng trong qu´a tr`ınh thu c hiˆe.n thuˆa.t to´an, nhu.ng thay viˆe.c lˆa´y c´ac ca.nh theo th´u tu
tu`y ´y (nhu trong Thuˆa.t to´an 4.3.3), ta cho.n mˆo.t d¯ı˙’nh z v`a kiˆe˙’m tra c´ac ca.nh liˆen thuˆo.c v´o.i
n´o (D- ı˙’nh z l`a d¯ı˙’nh v`u.a d¯u.o c thˆem v`ao cˆay) D-ˆe˙’ d¯o.n gia˙’n, ta s˜e su.˙’ du.ng ma trˆa.n kˆe` A biˆe˙’u
diˆe˜n d¯ˆo` thi K´y hiˆe.u T l`a tˆa.p hiˆe.n h`anh c´ac d¯ı˙’nh trong cˆay d¯u.o c xˆay du ng o.˙’ bu.´o.c n`ao d¯´o v`a W l`a tˆa.p c´ac d¯ı˙’nh chu.a d¯u.o c kiˆe˙’m tra (t´u.c l`a nh˜u.ng d¯ı˙’nh thuˆo.c T hoˇa.c khˆong nhu.ng
c´o ´ıt nhˆa´t mˆo.t ca.nh liˆen thuˆo.c v´o.i n´o chu.a d¯u.o c kiˆe˙’m tra)
Ch´ung ta kho.˙’i d¯ˆa` u thuˆa.t to´an bˇa`ng c´ach d¯ˇa.t T = {v1} v`a W = V D - ı˙’nh v1 s˜e l`a gˆo´ccu˙’a cˆay Sau qu´a tr`ınh kho.˙’i ta.o, thu c hiˆe.n c´ac bu.´o.c sau:
1 Nˆe´u T ∩ W = ∅ thuˆa.t to´an d`u.ng.
2 Nˆe´u T ∩ W 6= ∅ cho.n d¯ı˙’nh z ∈ T ∩ W.
3 Kiˆe˙’m tra z bˇa`ng c´ach x´et mˆo˜i ca.nh liˆen thuˆo.c v´o.i n´o Nˆe´u khˆong c´o ca.nh n`ao, khu.˙’ z t`u W v`a chuyˆe˙’n sang Bu.´o.c 1.
4 Nˆe´u tˆo`n ta.i ca.nh (z, p) ∈ E kiˆe˙’m tra z c´o thuˆo.c T khˆong.
5 Nˆe´u p ∈ T t`ım chu tr`ınh co ba˙’n gˆo `m ca.nh (z, p) v`a mˆo.t dˆay chuyˆe`n (duy nhˆa´t) t`u.
z d¯ˆe´n p trong cˆay d¯ang d¯u.o c xˆay du ng Xo´a ca.nh (z, p) kho˙’i d¯ˆo` thi v`a chuyˆe˙’n sang
Bu.´o.c 3
6 Nˆe´u p / ∈ T thˆem ca.nh (z, p) v`ao cˆay v`a d¯ı˙’nh p v`ao T Xo´a ca.nh (z, p) kho˙’i d¯ˆo` thi v`a
chuyˆe˙’n sang Bu.´o.c 3
Nhu d¯˜a d¯ˆe` cˆa.p, vˆa´n d¯ˆe` co ba˙’n l`a Bu.´o.c 5 Ch´ung ta pha˙’i t`ım dˆay chuyˆe`n t`u z d¯ˆe´n p
nhu thˆe´ n`ao? Thu˙’ tu.c sau s˜e tra˙’ l`o.i cˆau ho˙’i n`ay
Ch´ung ta su.˙’ du.ng mˆo.t ngˆan xˆe´p (stack) T W = T ∩ W d¯ˆe˙’ lu.u tr˜u c´ac d¯ı˙’nh trong cˆay
nhu.ng chu.a d¯u.o c kiˆe˙’m tra D- ı˙’nh d¯u.o c thˆem gˆa`n d¯ˆay nhˆa´t v`ao cˆay s˜e d¯u.o c ch`en v`ao d¯ˆa`ungˆan xˆe´p Mˆo˜i lˆa` n mˆo.t d¯ı˙’nh d¯u.o c kiˆe˙’m tra d¯u.o c lˆa´y ra kho˙’i t`u d¯ı˙’nh cu˙’a ngˆan xˆe´p Ta su.˙’
du.ng thˆem hai ma˙’ng tuyˆe´n t´ınh d¯ˆo d`ai n : ma˙’ng l[j] l`a khoa˙’ng c´ach t`u gˆo´c v1 d¯ˆe´n d¯ı˙’nh v j trong cˆay bao tr`um; v`a Pred[j] l`a d¯ı˙’nh v i sao cho ca.nh (v i , v j) l`a mˆo.t ca.nh trong cˆay v´o.i
v i gˆa` n gˆo´c ho.n v j N´oi c´ach kh´ac, Pred[j] l`a d¯ı˙’nh liˆe ` n tru.´o.c d¯ı˙’nh v j trong dˆay chuyˆe` n t`u
Trang 4v1 d¯ˆe´n v J Nh˜an l[J] = −1 nˆe´u v`a chı˙’ nˆe´u d¯ı˙’nh v j khˆong thuˆo.c tˆa.p T Kho.˙’i ta.o l[1] = 0 v`a l[j] = −1 v´o.i mo.i j = 2, 3, , n.
Trong Bu.´o.c 5, khi x´et d¯ı˙’nh z v`a ca.nh (z, p) d¯u.o c t`ım thˆa´y v´o.i p ∈ T D- ˆe˙’ x´ac d¯i.nh chu
tr`ınh co ba˙’n sinh bo.˙’i ca.nh (z, p) ch´ung ta lˆa`n theo dˆay chuyˆe ` n t`u z d¯ˆe´n p trong cˆay bˇa`ng
c´ach t`ım liˆen tiˆe´p c´ac “tiˆe` n bˆo´i” Pred[z], Pred[Prede[z]], cho d¯ˆe´n khi ch´ung ta bˇa´t gˇa.p Pred[p]-tiˆe ` n bˆo´i cu˙’a p N´oi c´ach kh´ac, nhu chı˙’ ra trong H`ınh ??, chu tr`ınh co ba˙’n d¯u.o c ta.o
ra l`a
z, Pred[z], Pred[Pred[z]], , Pred[p], p, z.
Cˆa` n ch´u ´y rˇa`ng tiˆe` n bˆo´i Pred[k] cu˙’a mo.i d¯ı˙’nh k ∈ T l`a mˆo.t d¯ı˙’nh m`a hoˇa.c d¯˜a d¯u.o c kiˆe˙’m tra hoˇa.c d¯ang d¯u.o c kiˆe˙’m tra T´u.c l`a, nˆe´u k ∈ T ∩ W th`ı
Pred[k] / ∈ W nhu.ng Pred[k] ∈ T.
Thu˙’ tu.c FundamentalCircuits() minh ho.a c´ac bu.´o.c d¯˜a tr`ınh b`ay o.˙’ trˆen
Th`o.i gian thu c hiˆe.n cu˙’a thuˆa.t to´an bi chˇa.n trˆen bo.˙’i n ν trong d¯´o gi´a tri thu c ν ∈ [2, 3]
phu thuˆo.c v`ao cˆa´u tr´uc cu˙’a d¯ˆo` thi c˜ung nhu c´ach d¯´anh nh˜an c´ac d¯ı˙’nh [50]
Mˇa.c d`u d¯ˆe˙’ d¯o.n gia˙’n ch´ung ta d¯˜a gia˙’ su.˙’ G liˆen thˆong, tuy nhiˆen thuˆa.t to´an c´o thˆe˙’
dˆe˜ d`ang ca˙’i biˆen cho tru.`o.ng ho p tˆo˙’ng qu´at D- ˆa`u tiˆen, thuˆa.t to´an s˜e ta.o ra tˆa´t ca˙’ c´ac chutr`ınh co ba˙’n trong th`anh phˆa` n liˆen thˆong ch´u.a d¯ı˙’nh xuˆa´t ph´at v1 Sau d¯´o ta cho.n d¯ı˙’nh y m`a l[y] = −1 v`a bˇa´t d¯ˆa ` u v´o.i y l`a gˆo´c cu˙’a cˆay bao tr`um th´u hai Thuˆa.t to´an lˇa.p la.i cho d¯ˆe´n khi tˆa´t ca˙’ c´ac d¯ı˙’nh d¯u.o c g´an nh˜an l kh´ac −1.
4.4 Cˆ ay bao tr` um tˆ o´i thiˆ e˙’u
D- i.nh ngh˜ıa 4.4.1 Gia˙’ su.˙’ G l`a d¯ˆo` thi c´o tro.ng sˆo´ Cˆay bao tr`um tˆo´i thiˆe˙’u cu˙’a G l`a mˆo.t cˆay bao tr`um cu˙’a G v´o.i tro.ng lu.o ng nho˙’ nhˆa´t.
B`ai to´an n`ay rˆa´t hay gˇa.p trong thˆong tin liˆen la.c v`a trong c´ac ng`anh kh´ac Chˇa˙’ng ha.n
ta d¯ˇa.t cˆau ho˙’i nhu sau: d¯ˆo d`ai dˆay d¯iˆe.n ngˇa´n nhˆa´t cˆa`n thiˆe´t d¯ˆe˙’ nˆo´i n th`anh phˆo´ d¯˜a d¯i.nh
l`a bao nhiˆeu? Khi d¯´o coi c´ac th`anh phˆo´ l`a c´ac d¯ı˙’nh cu˙’a d¯ˆo` thi v`a w(a, b) l`a khoa˙’ng c´ach t´ınh bˇa`ng km gi˜u.a c´ac th`anh phˆo´ a v`a b Ma.ng dˆay d¯iˆe.n cˆa`n pha˙’i liˆen thˆong, v`a v`ı d¯ˆo d`ai
dˆay d¯iˆe.n cˆa`n ngˇa´n nhˆa´t nˆen n´o khˆong c´o chu tr`ınh: vˆa.y ma.ng d¯´o l`a mˆo.t cˆay O˙’ d¯ˆay ta cˆa`n.
t`ım mˆo.t cˆay “tˆo´i thiˆe˙’u” c´o thˆe˙’ d¯u.o c v`a l`a mˆo.t d¯ˆo` thi bˆo phˆa.n cu˙’a d¯ˆo` thi d¯ˆa`y d¯u˙’ c´o n d¯ı˙’nh.
Mˆo.t ´u.ng du.ng gi´an tiˆe´p: b`ai to´an t`ım cˆay bao tr`um tˆo´i thiˆe˙’u l`a bu.´o.c trung gian trong viˆe.ct`ım l`o.i gia˙’i cu˙’a b`ai to´an ngu.`o.i du li.ch-mˆo.t b`ai to´an thu.`o.ng xuˆa´t hiˆe.n trong thu c tˆe´
Trang 5Cˆa` n ch´u ´y rˇa`ng, cˆay bao tr`um tˆo´i thiˆe˙’u cu˙’a d¯ˆo` thi khˆong liˆen quan d¯ˆe´n cˆay sinh bo.˙’i tˆa´t ca˙’ c´ac dˆay chuyˆe` n ngˇa´n nhˆa´t t`u mˆo.t d¯ı˙’nh cho tru.´o.c Do d¯´o, d¯ˆo` thi trong H`ınh 4.10(a), v´o.i c´ac sˆo´ trˆen c´ac ca.nh tu.o.ng ´u.ng c´ac tro.ng lu.o ng ca.nh, cˆay sinh ra bo.˙’i d¯u.`o.ng d¯i ngˇa´n
nhˆa´t t`u d¯ı˙’nh cho tru.´o.c, chˇa˙’ng ha.n v1, trong H`ınh 4.10(b); ngu.o c la.i, cˆay bao tr`um tˆo´i thiˆe˙’u
cho trong H`ınh 4.10(c)
v1 v2 v3 v4 v5 • • • • • • • • • • • • • • • 5 3 5 3 3 5 5 3 (a)
. v1 v2 v3 v4 v5 (b)
v1
v2
v3
(c)
H`ınh 4.10: (a) D- ˆo` thi G (b) Cˆay sinh bo.˙’i d¯u.`o.ng d¯i ngˇa´n nhˆa´t xuˆa´t ph´at t`u v1 (c) Cˆay bao
tr`um nho˙’ nhˆa´t
T`ım cˆay bao tr`um tˆo´i thiˆe˙’u l`a mˆo.t trong nh˜u.ng b`ai to´an cu˙’a l´y thuyˆe´t d¯ˆo` thi c´o thˆe˙’
gia˙’i quyˆe´t triˆe.t d¯ˆe˙’ Do d¯´o, d¯ˇa.t T i v`a T j l`a hai cˆay con d¯u.o c ta.o ra trong qu´a tr`ınh xˆay du ng
cˆay bao tr`um tˆo´i thiˆe˙’u Nˆe´u T i d¯u.o c su.˙’ du.ng d¯ˆe˙’ biˆe˙’u diˆe˜n tˆa.p c´ac d¯ı˙’nh cu˙’a cˆay con th`ı ∆ij
c´o thˆe˙’ d¯i.nh ngh˜ıa l`a khoa˙’ng c´ach ngˇa´n nhˆa´t t`u mˆo.t d¯ı˙’nh trong T i d¯ˆe´n mˆo.t d¯ı˙’nh trong T j; t´u.c l`a
∆ij := min
v i ∈T i
[ min
v j ∈T j
Khi d¯´o, dˆe˜ d`ang ch´u.ng minh rˇa`ng lˇa.p la.i ph´ep to´an sau s˜e cho ta cˆay bao tr`um tˆo´i thiˆe˙’u:
Ph´ep to´an I V´o.i cˆay con T s n`ao d¯´o, t`ım cˆay con T j ∗ sao cho ∆sj ∗ = minT j[∆sj ], v`a d¯ˇa.t (v s , v j ∗) l`a ca.nh tu.o.ng ´u.ng gi´a tri ∆sj ∗ trong (4.1) d¯a.t d¯u.o c Khi d¯´o (v s , v j ∗) thuˆo.c cˆay bao tr`um tˆo´i thiˆe˙’u v`a c´o thˆe˙’ d¯u.o c thˆem v`ao v´o.i c´ac ca.nh kh´ac trong qu´a tr`ınh lˇa.p d¯ˆe˙’ ta.o ra cˆay bao tr`um tˆo´i thiˆe˙’u
Thˆa.t vˆa.y, gia˙’ su.˙’ c´ac ca.nh trong c´ac cˆay con o.˙’ bu.´o.c k n`ao d¯´o thuˆo.c cˆay bao tr`um tˆo´i thiˆe˙’u T m o.˙’ bu.´o.c cuˆo´i c`ung Gia˙’ su.˙’ ca.nh (v s , v j ∗) d¯u.o c cho.n nhu trˆen khˆong thuˆo.c cˆay bao
Trang 6tr`um tˆo´i thiˆe˙’u T m Theo d¯i.nh ngh˜ıa, cˆay con T so.˙’ bu.´o.c cuˆo´i c`ung d¯u.o c nˆo´i v´o.i cˆay con kh´ac
n`ao d¯´o bˇa`ng ca.nh (v i , v j ) trong d¯´o v i ∈ T s v`a v j ∈ T / s v`a ngo`ai ra T s pha˙’i ch´u.a trong cˆay
bao tr`um tˆo´i thiˆe˙’u T m Xo´a ca.nh (v i , v j ) kho˙’i cˆay T m s˜e cho ta hai th`anh phˆa` n liˆen thˆong
v`a thay n´o bo.˙’i ca.nh (v s , v j ∗) s˜e ta.o mˆo.t cˆay m´o.i c´o tro.ng lu.o ng nho˙’ ho.n tro.ng lu.o ng cˆay
T m , mˆau thuˆa˜n Vˆa.y, v´o.i nh˜u.ng gia˙’ thiˆe´t trˆen, ta c´o thˆe˙’ thˆem ca.nh (v s , v j ∗) d¯ˆe˙’ ta.o th`anh
cˆay (ch´u.a trong cˆay bao tr`um tˆo´i thiˆe˙’u) o.˙’ bu.´o.c k v`a tiˆe´p tu.c v´o.i bu.´o.c (k + 1) C˜ung cˆa`n ch´u ´y rˇa`ng, phu.o.ng ph´ap trˆen khˆong phu thuˆo.c v`ao cˆay T s d¯u.o c cho.n Ho.n n˜u.a, do bu.´o.ckho.˙’i ta.o (t´u.c l`a tru.´o.c khi bˆa´t c´u ca.nh n`ao d¯u.o c cho.n) gia˙’ thiˆe´t l`a khˆong tˆo`n ta.i (v`a do d¯´od¯´ung) nˆen lˇa.p la.i thuˆa.t to´an trˆen cuˆo´i c`ung s˜e ta.o ra cˆay bao tr`um tˆo´i thiˆe˙’u
Hˆa` u hˆe´t c´ac phu.o.ng ph´ap t`ım cˆay bao tr`um tˆo´i thiˆe˙’u d¯ˆe` u du a trˆen nh˜u.ng tru.`o.ng ho pd¯ˇa.c biˆe.t cu˙’a thu˙’ tu.c trˆen D- ˆa`u tiˆen, trong sˆo´ d¯´o l`a phu.o.ng ph´ap cu˙’a Kruskal [39] nhu sau.
´
Y tu.o.˙’ng cu˙’a thuˆa.t to´an Kruskal t`ım cˆay bao tr`um trong d¯ˆo` thi liˆen thˆong c´o tro.ng sˆo´ G nhu sau: Kho.˙’i ta.o v´o.i d¯ˆo` thi T gˆo`m tˆa´t ca˙’ c´ac d¯ı˙’nh cu˙’a G v`a khˆong c´o ca.nh Ta.i mˆo˜i bu.´o.c lˇa.p ch´ung ta thˆem mˆo.t ca.nh c´o tro.ng lu.o ng nho˙’ nhˆa´t lˆen cˆay T m`a khˆong ta.o th`anh chu tr`ınh trong T Thuˆa.t to´an d`u.ng khi T c´o (n − 1) ca.nh.
1 [Kho.˙’i ta.o] Gia˙’ su.˙’ T l`a d¯ˆo` thi gˆo`m n d¯ı˙’nh v`a khˆong c´o ca.nh.
2 [Sˇa´p xˆe´p] Sˇa´p xˆe´p th´u tu c´ac ca.nh cu˙’a d¯ˆo` thi G theo th´u tu tro.ng lu.o ng tˇang dˆa`n.
3 [Thˆem ca.nh] Thˆem ca.nh (bˇa´t d¯ˆa`u t`u ca.nh d¯ˆa`u tiˆen) trong danh s´ach c´ac ca.nh d¯u.o c
sˇa´p xˆe´p v`ao cˆay T sao cho khˆong ta.o th`anh chu tr`ınh trong T khi thˆem (Ca.nh d¯u.o c thˆem v`ao go.i l`a chˆa´p nhˆa.n d¯u.o c).
4 [Kˆe´t th´uc] Nˆe´u T c´o (n − 1) ca.nh th`ı thuˆa.t to´an d`u.ng; T l`a cˆay bao tr`um tˆo´i thiˆe˙’u.
Thuˆa.t to´an n`ay thˆem v`ao cˆay T nh˜u.ng ca.nh c´o tro.ng lu.o ng nho˙’ nhˆa´t chˆa´p nhˆa.n d¯u.o c ho.n l`a thˆem ca.nh gi˜u.a mˆo.t cˆay con cu˙’a T, chˇa˙’ng ha.n T s , v`a mˆo.t cˆay con n`ao kh´ac (nhu.
chı˙’ ra trong Ph´ep to´an I) Hiˆe˙’n nhiˆen ca.nh d¯u.o c cho.n c´o tro.ng lu.o ng nho˙’ nhˆa´t gi˜u.a mˆo.t
cˆay con n`ao d¯´o v`a bˆa´t k`y cˆay con kh´ac, nˆen nguyˆen tˇa´c cho.n cu˙’a thuˆa.t to´an Kruskal l`a mˆo.t tru.`o.ng ho p d¯ˇa.c biˆe.t cu˙’a Ph´ep to´an I Tuy nhiˆen c´o thˆe˙’ xa˙’y ra tru.`o.ng ho p ca.nh e d¯u.o c
kiˆe˙’m tra d¯ˆe˙’ thˆem v`ao liˆen thuˆo.c gi˜u.a hai d¯ı˙’nh cu˙’a c`ung mˆo.t cˆay con v`a do d¯´o n´o s˜e ta.o ra
mˆo.t chu tr`ınh nˆe´u thˆem v`ao; t´u.c l`a ca.nh e l`a khˆong chˆa´p nhˆa.n d¯u.o c V`ı vˆa.y, trong Bu.´o.c 3, c´ac ca.nh cˆa`n d¯u.o c kiˆe˙’m tra t´ınh chˆa´p nhˆa.n cu˙’a n´o tru.´o.c khi thˆem v`ao T Tiˆe´n tr`ınh kiˆe˙’m
tra n`ay c´o thˆe˙’ thu c hiˆe.n hiˆe.u qua˙’ bˇa`ng c´ach su.˙’ du.ng thuˆa.t to´an xˆay du ng cˆay bao tr`umdu a trˆen hai ma˙’ng tuyˆe´n t´ınh nhu d¯˜a tr`ınh b`ay trong Phˆa`n 4.3.3
Trang 7V´ı du 4.4.2 X´et d¯ˆo` thi trong H`ınh 4.11(a) Sˇa´p xˆe´p c´ac ca.nh theo tro.ng lu.o ng tˇang dˆa`n
(su.˙’ du.ng hai ma˙’ng tuyˆe´n t´ınh α v`a β) ta d¯u.o c
C´ac ca.nh (khˆong ta.o th`anh chu tr`ınh) d¯u.o c thˆem v`ao cˆay T theo th´u tu l`a
(c, d), (a, c), (e, f ), (a, e), (a, b).
T l`a cˆay bao tr`um nho˙’ nhˆa´t c´o tro.ng lu.o ng 12 (H`ınh 4.11(b)).
. a b c d e f • • • • • • 1 2 2 3 3 4 5 6 6 (a)
•
•
•
2
2 3
4
(b) H`ınh 4.11:
Bˆo˙’ d¯ˆ` 4.4.3 Nˆe´u Ke n = (V, E) l`a d¯ˆo ` thi d¯ˆa`y d¯u˙’, v`a nˆe´u tˆa´t ca˙’c c´ac tro.ng lu.o ng cu˙’a c´ac ca.nh kh´ac nhau th`ı tˆo`n ta.i duy nhˆa´t mˆo.t cˆay bao tr`um tˆo´i thiˆe˙’u T = (V, E T ).
Ch´u.ng minh K´y hiˆe.u E k := {e1, e2, , e k } l`a tˆa.p c´ac ca.nh d¯u.o c thˆem v`ao cˆay T trong Thuˆa.t to´an 4.4.1 o.˙’ bu.´o.c lˇa.p th´u k, 1 ≤ k ≤ n − 1 Hiˆe˙’n nhiˆen theo c´ach xˆay du ng, T l`a d¯ˆo` thi c´o (n − 1) ca.nh v`a khˆong c´o chu tr`ınh nˆen T l`a cˆay bao tr`um cu˙’a K n
Gia˙’ su.˙’ T 0 = (V, E T 0 ) l`a cˆay bao tr`um tˆo´i thiˆe˙’u, ta ch´u.ng minh E T 0 = E n−1 Thˆa.t vˆa.y, gia˙’ su.˙’ ngu.o c la.i tˆo`n ta.i chı˙’ sˆo´ k nho˙’ nhˆa´t sao cho ca.nh e k khˆong thuˆo.c E T 0 Khi d¯´o theo
t´ınh chˆa´t cu˙’a cˆay, tˆo`n ta.i tˆo`n ta.i mˆo.t v`a chı˙’ mˆo.t chu tr`ınh µ trong T 0 ∪ {e k } Trˆen chu tr`ınh n`ay c´o mˆo.t ca.nh e0 m`a e0 ∈ E / n−1 , v`ı nˆe´u ngu.o c la.i tˆo`n ta.i mˆo.t chu tr`ınh, l`a µ, trong cˆay
Trang 8T −mˆau thuˆa˜n Nˆe´u d¯ˇa.t E T 00 := (E T 0 ∪ {e k }) \ {e0}) th`ı d¯ˆo ` thi T 00 := (V, E T 00) khˆong c´o chu
tr`ınh v`a c´o (n − 1) ca.nh nˆen n´o l`a mˆo.t cˆay.
Mˇa.t kh´ac E k−1 ∪ {e0} ⊂ E T 00 nˆen E k−1 ∪ {e0} khˆong ch´u.a chu tr`ınh Suy ra
w(e0) > w(e k ).
Nhu.ng cˆay T 00 nhˆa.n d¯u.o c t`u cˆay T 0 bˇa`ng c´ach thay ca.nh e0 th`anh ca.nh e k nˆen W (T 00 ) <
D- i.nh l´y 4.4.4 Thuˆa.t to´an Kruskal l`a d¯´ung; t´u.c l`a, kˆe´t th´uc thuˆa.t to´an T l`a cˆay bao tr`um tˆo´i thiˆe˙’u.
Ch´u.ng minh Thˆa.t vˆa.y tru.´o.c hˆe´t ta thu xˆe´p d¯ˆe˙’ mo.i ca.nh d¯ˆe` u c´o d¯ˆo d`ai kh´ac nhau; chˇa˙’ng
ha.n nˆe´u w(e1) = w(e2) = · · · = w(e s) th`ı thu c hiˆe.n ph´ep biˆe´n d¯ˆo˙’i:
w(e1) = w(e1) + ², w(e2) = w(e2) + ²2,
w(e s ) = w(e s ) + ² s , trong d¯´o ² l`a sˆo´ du.o.ng d¯u˙’ b´e sao cho khˆong l`am d¯a˙’o lˆo.n th´u tu vˆe` quan hˆe gi˜u.a tro.ng lu.o ngcu˙’a c´ac ca.nh
C˜ung thˆe´, ta c˜ung c´o thˆe˙’ thˆem c´ac ca.nh f v´o.i tro.ng lu.o ng d¯u˙’ l´o.n w(f) >Pe∈E w(e)
v`a kh´ac nhau sao cho d¯ˆo` thi nhˆa.n d¯u.o c K n = (V, E 0) l`a d¯ˆa` y d¯u˙’
Theo Bˆo˙’ d¯ˆe` 4.4.3 tˆo`n ta.i duy nhˆa´t mˆo.t cˆay bao tr`um tˆo´i thiˆe˙’u T trong d¯ˆo` thi K n Mˇa.t kh´ac, mo.i cˆay bao tr`um cu˙’a d¯ˆo` thi G c´o tro.ng lu.o ng khˆong vu.o t qu´a Pe∈E w(e) v`a mo.i cˆay bao tr`um cu˙’a G c˜ung l`a cˆay bao tr`um cu˙’a K n Suy ra T l`a cˆay bao tr`um tˆo´i thiˆe˙’u cu˙’a G /
Nhˆa.n x´et rˇa`ng, c´o thˆe˙’ d`ung phu.o.ng ph´ap d¯ˆo´i ngˆa˜u: loa.i dˆa`n c´ac ca.nh c´o tro.ng lu.o ngl´o.n nhˆa´t cu˙’a d¯ˆo` thi m`a khˆong l`am mˆa´t t´ınh liˆen thˆong cu˙’a n´o cho d¯ˆe´n khi khˆong thˆe˙’ loa.ica.nh d¯u.o c n˜u.a
D- ˆo ph´u.c ta.p t´ınh to´an cu˙’a thuˆa.t to´an Kruskal phu thuˆo.c v`ao Bu.´o.c 2: d¯ˆo` thi c´o m ca.nh cˆa`n m log2m ph´ep to´an d¯ˆe˙’ thu c hiˆe.n sˇa´p xˆe´p ma˙’ng theo tro.ng lu.o ng tˇang dˆa`n Tuy
nhiˆen, n´oi chung ta khˆong cˆa` n duyˆe.t to`an bˆo ma˙’ng v`ı cˆay bao tr`um tˆo´i thiˆe˙’u gˆo`m (n − 1) ca.nh chˆa´p nhˆa.n d¯u.o c nˆen chı˙’ cˆa`n kiˆe˙’m tra r < m phˆa`n tu.˙’ d¯ˆa`u tiˆen cu˙’a ma˙’ng Do d¯´o ta c´o
thˆe˙’ ca˙’i tiˆe´n thuˆa.t to´an n`ay d¯ˆe˙’ tˇang tˆo´c d¯ˆo thu c hiˆe.n (xem [14], [36])
Mˇa.c d`u c´o nh˜u.ng ca˙’i tiˆe´n, nhu.ng thuˆa.t to´an Kruskal chı˙’ th´ıch ho p v´o.i nh˜u.ng d¯ˆo` thi.tu.o.ng d¯ˆo´i thu.a V´o.i nh˜u.ng d¯ˆo` thi kh´ac, chˇa˙’ng ha.n d¯ˆo` thi d¯ˆa`y d¯u˙’ c´o sˆo´ ca.nh m = n(n−1)/2,
Trang 9Prim [49] v`a Dijkstra [20] d¯˜a d¯u.a ra nh˜u.ng thuˆa.t to´an kh´ac du a trˆen viˆe.c d¯ˇa.c biˆe.t ho´a hiˆe.uqua˙’ ho.n Ph´ep to´an I.
Thuˆa.t to´an n`ay xˆay du ng cˆay T bˇa`ng c´ach liˆen tiˆe´p thˆem c´ac ca.nh c´o tro.ng lu.o ng nho˙’ nhˆa´t
liˆen thuˆo.c mˆo.t d¯ı˙’nh trong cˆay d¯ang d¯u.o c h`ınh th`anh v`a mˆo.t d¯ı˙’nh khˆong thuˆo.c cˆay n`ay chod¯ˆe´n khi nhˆa.n d¯u.o c cˆay bao tr`um tˆo´i thiˆe˙’u Trong mˆo˜i bu.´o.c lˇa.p, qu´a tr`ınh thˆem ca.nh n`ay
s˜e ba˙’o d¯a˙’m khˆong ta.o th`anh chu tr`ınh trong T.
Ch´ung ta minh ho.a thuˆa.t to´an bˇa`ng c´ach su.˙’ du.ng “ma trˆa.n tro.ng lu.o ng” W = (w ij)n×n , trong d¯´o
Kho.˙’i d¯ˆa` u t`u d¯ı˙’nh v1 v`a nˆo´i n´o d¯ˆe´n mˆo.t d¯ı˙’nh kˆe` gˆa` n nhˆa´t (t´u.c l`a d¯ı˙’nh m`a c´o phˆa` n tu.˙’
nho˙’ nhˆa´t trong h`ang th´u nhˆa´t trong ma trˆa.n W ), gia˙’ su.˙’ l`a v k Bˆay gi`o kha˙’o s´at v1 v`a v k
nhu mˆo.t d¯ˆo` thi con, v`a nˆo´i d¯ˆo` thi con n`ay v´o.i mˆo.t d¯ı˙’nh kˆe` v´o.i n´o v`a gˆa` n nhˆa´t (t´u.c l`a d¯ı˙’nh
kh´ac v1 v`a v k m`a c´o phˆa` n tu.˙’ nho˙’ nhˆa´t trong tˆa´t ca˙’ c´ac phˆa` n tu.˙’ cu˙’a h`ang th´u nhˆa´t v`a th´u
k trong W ) Gia˙’ su.˙’ d¯ı˙’nh m´o.i l`a v i Kˆe´ tiˆe´p, xem cˆay v´o.i c´ac d¯ı˙’nh v1, v k , v i nhu mˆo.t d¯ˆo` thi
con, v`a tiˆe´p tu.c xu.˙’ l´y cho d¯ˆe´n khi tˆa´t ca˙’ n d¯ı˙’nh d¯u.o c nˆo´i bo.˙’i (n − 1) ca.nh.
Tˆo˙’ng qu´at ta c´o thuˆa.t to´an d¯u.o c tr`ınh b`ay nhu sau:
1 [Kho.˙’i ta.o] Gia˙’ su.˙’ T l`a d¯ˆo` thi chı˙’ c´o mˆo.t d¯ı˙’nh v1 v`a khˆong c´o ca.nh
2 [Kˆe´t th´uc] Nˆe´u T c´o (n − 1) ca.nh th`ı thuˆa.t to´an d`u.ng; T l`a cˆay bao tr`um tˆo´i thiˆe˙’u.
3 [Thˆem ca.nh] Trong sˆo´ tˆa´t ca˙’ c´ac ca.nh khˆong thuˆo.c cˆay T m`a liˆen thuˆo.c v´o.i mˆo.t d¯ı˙’nh trong T v`a khˆong ta.o th`anh chu tr`ınh khi thˆem v`ao T, cho.n ca.nh c´o tro.ng lu.o ng nho˙’ nhˆa´t v`a thˆem n´o v`a d¯ı˙’nh n´o liˆen thuˆo.c v`ao cˆay T Chuyˆe˙’n sang Bu.´o.c 2.
V´ı du 4.4.5 ´Ap du.ng Thuˆa.t to´an Prim cho d¯ˆo` thi trong H`ınh 4.12(a) v´o.i d¯ı˙’nh xuˆa´t ph´at
l`a v1 ta c´o c´ac ca.nh d¯u.o c lˆa`n lu.o t thˆem v`ao cˆay T theo th´u tu l`a
(v1, v5), (v1, v4), (v4, v2), (v2, v3), (v2, v6).
Cˆay bao tr`um nho˙’ nhˆa´t c´o tro.ng lu.o ng 12 (H`ınh 4.12(b))
Trang 10
.
v1 v2 v3 v4 v5 v6 • • • • • • v1 v2 v3 v4 v5 v6 • • • • • • 2 8 1 3 6 5 9 7 4 2 (a)
.
2 1 3 4 2 (b) H`ınh 4.12: (a) D- ˆo` thi G (b) Cˆay bao tr`um nho˙’ nhˆa´t cu˙’a G sinh bo.˙’i Thuˆa.t to´an Prim Thuˆa.t to´an Prim l`a mˆo.t v´ı du cu˙’a thuˆa.t to´an tham lam (greedy algorithm) Thuˆa.t to´an tham lam l`a thuˆa.t to´an cho.n lu a tˆo´i u.u ta.i mˆo˜i bu.´o.c lˇa.p m`a khˆong quan tˆam d¯ˆe´n su cho.n lu a o.˙’ bu.´o.c tru.´o.c C´o thˆe˙’ n´oi nguyˆen l´y n`ay l`a “thu c hiˆe.n tˆo´t nhˆa´t vˆe` mˇa.t d¯i.a phu.o.ng” Trong thuˆa.t to´an Prim, v`ı ch´ung ta muˆo´n t`ım cˆay bao tr`um tˆo´i thiˆe˙’u nˆen ta.i mˆo˜i bu.´o.c lˇa.p ch´ung ta thˆem mˆo.t ca.nh c´o tro.ng lu.o ng nho˙’ nhˆa´t (nˆe´u viˆe.c thˆem khˆong ta.o th`anh chu tr`ınh) Tˆo´i u.u ho´a ta.i mˆo˜i bu.´o.c lˇa.p khˆong nhˆa´t thiˆe´t cho l`o.i gia˙’i tˆo´i u.u cu˙’a b`ai to´an gˆo´c T´ınh d¯´ung d¯ˇa´n cu˙’a thuˆa.t to´an Prim s˜e d¯u.o c ch´u.ng minh trong D- i.nh l´y 4.4.6 Mˆo.t v´ı du cu˙’a thuˆa.t to´an tham lam nhu.ng khˆong d¯u.a d¯ˆe´n l`o.i gia˙’i tˆo´i u.u nhu sau: x´et “thuˆa.t to´an t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t” trong d¯´o, mˆo˜i bu.´o.c lˇa.p ch´ung ta cho.n ca.nh c´o tro.ng lu.o ng nho˙’ nhˆa´t (m`a khˆong ta.o th`anh chu tr`ınh khi thˆem v`ao) liˆen thuˆo.c v´o.i d¯ı˙’nh d¯u.o c thˆem v`ao gˆa`n d¯ˆay nhˆa´t Nˆe´u ta ´ap du.ng thuˆa.t to´an n`ay v´o.i d¯ˆo` thi c´o hu.´o.ng trong H`ınh 4.13 d¯ˆe˙’ t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u v1 d¯ˆe´n v4, ch´ung ta s˜e cho.n cung (v1, v3) v`a sau d¯´o cung (v3, v4) Tuy nhiˆen, d¯ˆay khˆong pha˙’i l`a d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u v1 d¯ˆe´n v4.
v1
v2
v3
v4
•
•
•
•
2
1
4
6 8
H`ınh 4.13:
D- i.nh l´y sau ch´u.ng minh t´ınh d¯´ung d¯ˇa´n cu˙’a thuˆa.t to´an Prim
Trang 11D- i.nh l´y 4.4.6 Thuˆa.t to´an Prim l`a d¯´ung; t´u.c l`a, kˆe´t th´uc thuˆa.t to´an T l`a cˆay bao tr`um tˆo´i thiˆe˙’u.
Ch´u.ng minh Trong ch´u.ng minh n`ay ch´ung ta s˜e d¯ˇa.c tru.ng cˆay bo.˙’i ma˙’ng c´ac ca.nh cu˙’a n´o Theo c´ach xˆay du ng, kˆe´t th´uc Thuˆa.t to´an Prim, T l`a d¯ˆo` thi con liˆen thˆong khˆong chu
tr`ınh cu˙’a d¯ˆo` thi G v`a ch´u.a tˆa´t ca˙’ c´ac d¯ı˙’nh cu˙’a G; do d¯´o T l`a cˆay bao tr`um cu˙’a G.
D- ˆe˙’ chı˙’ ra T l`a cˆay bao tr`um tˆo´i thiˆe˙’u, ch´ung ta ch´u.ng minh bˇa`ng quy na.p rˇa`ng o.˙’ bu.´o.c th´u k cu˙’a Thuˆa.t to´an Prim, T d¯u.o c ch´u.a trong mˆo.t cˆay bao tr`um tˆo´i thiˆe˙’u V`a do d¯´o, kˆe´t th´uc thuˆa.t to´an T l`a cˆay bao tr`um tˆo´i thiˆe˙’u K´y hiˆe.u T k l`a cˆay d¯u.o c ta.o ra o.˙’ bu.´o.c lˇa.p th´u
k.
Nˆe´u k = 1 th`ı T1 gˆo`m mˆo.t d¯ı˙’nh v`a do d¯´o d¯u.o c ch´u.a trong mo.i cˆay bao tr`um tˆo´i thiˆe˙’u.Khˇa˙’ng d¯i.nh d¯´ung
Gia˙’ su.˙’ rˇa`ng o.˙’ bu.´o.c th´u (k − 1) cu˙’a Thuˆa.t to´an Prim, cˆay T k−1 ch´u.a trong cˆay bao
tr`um tˆo´i thiˆe˙’u T 0 K´y hiˆe.u V k−1 l`a tˆa.p c´ac d¯ı˙’nh cu˙’a T k−1 Theo Thuˆa.t to´an Prim, ca.nh
e = (v i , v j ) c´o tro.ng lu.o ng nho˙’ nhˆa´t v´o.i v i ∈ V k−1 v`a v j ∈ V / k−1 d¯u.o c thˆem v`ao T k−1 d¯ˆe˙’ ta.o
ra T k Nˆe´u e ∈ T 0 th`ı T k ch´u.a trong cˆay bao tr`um tˆo´i thiˆe˙’u T 0 Nˆe´u e / ∈ T 0 th`ı T 0 ∪ {e} ch´u.a mˆo.t chu tr`ınh µ Cho.n ca.nh (v x , v y ) 6= e trˆen chu tr`ınh µ sao cho v x ∈ V k−1 v`a v y ∈ V / k−1
Thuˆa.t to´an Prim cˆa`n kiˆe˙’m tra O(n3) ca.nh trong tru.`o.ng ho p xˆa´u nhˆa´t (b`ai tˆa.p) d¯ˆe˙’
x´ac d¯i.nh cˆay bao tr`um tˆo´i thiˆe˙’u trong d¯ˆo` thi n d¯ı˙’nh Ch´ung ta c´o thˆe˙’ chı˙’ ra Thuˆa.t to´an
4.4.3 du.´o.i d¯ˆay chı˙’ cˆa` n kiˆe˙’m tra O(n2) ca.nh trong tru.`o.ng ho p xˆa´u nhˆa´t V`ı K n c´o n2 ca.nhnˆen thuˆa.t to´an sau hiˆe.u qua˙’ ho.n
Thuˆa.t to´an du.´o.i d¯ˆay t`ım cˆay bao tr`um tˆo´i thiˆe˙’u trong d¯ˆo` thi liˆen thˆong c´o tro.ng sˆo´ hiˆe.uqua˙’ ho.n phu.o.ng ph´ap cu˙’a Prim Phu.o.ng ph´ap sau n`ay d¯u.a ra bo.˙’i Dijkstra [20], v`a bo.˙’iKevin v`a Whitney [41]
´
Y tu.o.˙’ng cu˙’a thuˆa.t to´an l`a g´an mˆo˜i d¯ı˙’nh v j ∈ T / s mˆo.t nh˜an (α j , β j ), trong d¯´o o.˙’ bu.´o.c n`ao d¯´o α j l`a d¯ı˙’nh thuˆo.c T s gˆa` n v´o.i d¯ı˙’nh v j nhˆa´t v`a β j l`a d¯ˆo d`ai ca.nh (α j , v j ) Ta.i mˆo˜i bu.´o.c