c´o hu.´o.ng c´o liˆen thˆong ma.nh hay khˆong thˆong qua d¯i.nh l´y sau: thi... void Dijkstrabyte Start, byte Terminal... Thuˆa.t to´an kˆe´t th´uc.. khˆong c´o ma.ch d¯ˆo... void Ford_
Trang 1Chu.o.ng 3
biˆe.t, b`ai to´an t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t gi˜u.a hai d¯ı˙’nh cu˙’a mˆo.t d¯ˆo` thi c´o ´y ngh˜ıa to l´o.n C´o
tiˆe´t kiˆe.m nhˆa´t (theo tiˆeu chuˆa˙’n khoa˙’ng c´ach, th`o.i gian hoˇa.c chi ph´ı) trˆen mˆo.t ba˙’n d¯ˆo` giaothˆong; b`ai to´an cho.n phu.o.ng ph´ap tiˆe´t kiˆe.m nhˆa´t d¯ˆe˙’ d¯u.a mˆo.t hˆe d¯ˆo.ng lu c t`u tra.ng th´ai
thi to˙’ ra l`a c´ac phu.o.ng ph´ap c´o hiˆe.u qua˙’ nhˆa´t
Chu.o.ng n`ay tr`ınh b`ay c´ac thuˆa.t to´an t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t trˆen d¯ˆo` thi c´o tro.ng sˆo´
3.1 D - u.`o.ng d¯i gi˜u.a hai d¯ı˙’nh
d¯ı˙’nh t cu˙’a d¯ˆo ` thi c´o hu.´o.ng G := (V, E)? Nˆe´u c´o, h˜ay chı˙’ ra c´ach d¯i cu˙’a d¯u.`o.ng d¯i µ.
chı˙’ sˆo´ Bˇa`ng phu.o.ng ph´ap lˇa.p, dˆa`n dˆa`n ta s˜e cho mˆo˜i d¯ı˙’nh v mˆo.t chı˙’ sˆo´ n`ao d¯´o bˇa`ng d¯ˆo.
c´ac d¯ı˙’nh d¯u.o c d¯´anh dˆa´u bˇa`ng chı˙’ sˆo´ m lˆa.p th`anh mˆo.t tˆa.p ho p P (m) d¯˜a biˆe´t, th`ı ta d¯´anh dˆa´u chı˙’ sˆo´ (m + 1) cho mo.i d¯ı˙’nh cu˙’a tˆa.p ho p:
P (m + 1) := {v j chu.a d¯u.o c d¯´anh dˆa´u | tˆo`n ta.i v i ∈ P (m) v´o.i (v i , v j ) ∈ E}.
Trang 2Thuˆa.t to´an d`u.ng khi khˆong thˆe˙’ d¯´anh dˆa´u d¯u.o c n˜u.a C´o hai tru.`o.ng ho p xa˙’y ra:
sao cho
v1 ∈ P (m − 1), v2 ∈ P (m − 2), , v m ∈ P (0).
d¯i t`u s d¯ˆe´n t.
Theo c´ach xˆay du ng cu˙’a thuˆa.t to´an, dˆe˜ d`ang ch´u.ng minh rˇa`ng
th`o.i gian O(m).
Nhˇa´c la.i l`a d¯ˆo` thi c´o hu.´o.ng G go.i l`a liˆen thˆong ma.nh nˆe´u hai d¯ı˙’nh s v`a t t`uy ´y cu˙’a G luˆon
nˆe´u v`a chı˙’ nˆe´u mo.i cˇa.p d¯ı˙’nh a, b ∈ V, tˆo`n ta.i mˆo.t d¯u.`o.ng d¯i t`u a d¯ˆe´n v v`a mˆo.t d¯u.`o.ng d¯i t`u.
v d¯ˆe´n b.
thi c´o hu.´o.ng c´o liˆen thˆong ma.nh hay khˆong thˆong qua d¯i.nh l´y sau:
thi c´o hu.´o.ng nhˆa.n d¯u.o c t`u G bˇa`ng c´ach d¯a˙’o hu.´o.ng mˆo˜i cung trong E Khi d¯´o G l`a liˆen thˆong ma.nh nˆe´u v`a chı˙’ nˆe´u thuˆa.t to´an t`ım kiˆe´m theo chiˆe ` u sˆau trˆen d¯ˆo ` thi c´o hu.´o.ng G, kho.˙’i d¯ˆa ` u t`u v, d¯a.t d¯u.o c mo.i d¯ı˙’nh cu˙’a G v`a thuˆa.t to´an t`ım kiˆe´m theo chiˆe`u sˆau trˆen d¯ˆo` thi c´o hu.´o.ng G 0 , kho.˙’i d¯ˆa ` u t`u v, d¯a.t d¯u.o c mo.i d¯ı˙’nh cu˙’a G 0
trˆen c´ac ca.nh cu˙’a G sao cho d¯ˆo` thi c´o hu.´o.ng tu.o.ng ´u.ng nhˆa.n d¯u.o c l`a liˆen thˆong ma.nh.
Trang 3D- i.nh l´y sau cho ch´ung ta mˆo.t d¯ˇa.c tru.ng cu˙’a d¯ˆo` thi vˆo hu.´o.ng d¯u.o c d¯i.nh hu.´o.ng ma.nh.
liˆen thˆong
v`a khˆong c´o cˆa ` u.
thi vˆo hu.´o.ng d¯u.o c d¯i.nh hu.´o.ng ma.nh nhu sau Lˆa´y mˆo.t d¯ı˙’nh bˆa´t k`y trong d¯ˆo` thi vˆo hu.´o.ng
G l`am d¯ı˙’nh kho.˙’i d¯ˆa` u v`a thu c hiˆe.n thuˆa.t to´an t`ım kiˆe´m theo chiˆe`u sˆau V`ı d¯ˆo` thi vˆo hu.´o.ng
T, ta d¯i.nh hu.´o.ng n´o t`u d¯ı˙’nh c´o chı˙’ sˆo´ nho˙’ ho.n d¯ˆe´n d¯ı˙’nh c´o chı˙’ sˆo´ l´o.n ho.n T´u.c l`a nˆe´u
i < j, d¯i.nh hu.´o.ng ca.nh e t`u v i d¯ˆe´n v j , v`a nˆe´u j < i th`ı d¯i.nh hu.´o.ng ca.nh e t`u v j d¯ˆe´n v i
H`ınh 3.1 minh ho.a d¯ˆo` thi vˆo hu.´o.ng v`a c´ach d¯i.nh hu.´o.ng n´o
a b c d e f • • • • • • (a)
.
.
a
•
(b)
1 Kh´ai niˆe.m n`ay s˜e d¯u.o c tr`ınh b`ay trong ??.
Trang 43.2 D - u.`o.ng d¯i ngˇa´n nhˆa´t gi˜u.a hai d¯ı˙’nh
xuˆa´t ph´at s ∈ V d¯ˆe´n mˆo.t d¯ı˙’nh cuˆo´i l`a t ∈ V sao cho tˆo˙’ng c´ac tro.ng lu.o ng trˆen d¯u.`o.ng d¯i µ :
X
e k ∈µ
w(e k)
l`a nho˙’ nhˆa´t
tˆo˙’ng tro.ng lu.o ng trˆen ma.ch µ ˆam V`ı rˇa`ng, nˆe´u c´o mˆo.t ma.ch µ nhu vˆa.y v`a v l`a mˆo.t d¯ı˙’nh n`ao d¯´o cu˙’a n´o, th`ı xuˆa´t ph´at t`u n´ut s ta d¯i d¯ˆe´n d¯ı˙’nh v, v`a sau d¯´o d¯i v`ong quanh ma.ch µ mˆo.t sˆo´ d¯u˙’ l´o.n lˆa`n rˆo`i m´o.i d¯ˆe´n t ta s˜e thu d¯u.o c mˆo.t d¯u.`o.ng d¯i c´o tro.ng lu.o ng d¯u˙’ nho˙’ V`ı
vˆa.y, trong tru.`o.ng ho p n`ay, d¯u.`o.ng d¯i ngˇa´n nhˆa´t l`a khˆong tˆo`n ta.i
Nhˆa.n x´et rˇa`ng, nˆe´u ma trˆa.n tro.ng lu.o ng W thoa˙’ m˜an
w ij :=
(
Tru.´o.c tiˆen ch´ung ta x´et thuˆa.t to´an Dijkstra, d¯o.n gia˙’n v`a rˆa´t hiˆe.u qua˙’, d¯ˆe˙’ gia˙’i b`ai to´an
d¯ˇa.t ra trong tru.`o.ng ho p ma trˆa.n tro.ng lu.o ng W c´o c´ac phˆa`n tu.˙’ khˆong ˆam Sau d¯´o ph´at
triˆe˙’n n´o d¯ˆe˙’ gia˙’i quyˆe´t b`ai to´an trong tru.`o.ng ho p tˆo˙’ng qu´at
Thuˆa.t to´an Dijkstra [20] t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u d¯ı˙’nh s d¯ˆe´n d¯ı˙’nh t trong d¯ˆo` thi c´o hu.´o.ng c´o tro.ng lu.o ng khˆong ˆam Phu.o.ng ph´ap n`ay du a trˆen viˆe.c g´an c´ac nh˜an ta.m th`o.i cho c´ac
C´ac nh˜an n`ay sau d¯´o tiˆe´p tu.c d¯u.o c gia˙’m b´o.t bo.˙’i mˆo.t thu˙’ tu.c lˇa.p v`a ta.i mˆo˜i bu.´o.c lˇa.p c´o
Trang 5Thuˆa.t to´an Dijkstra (w ij ≥ 0)
L(v i) :=
(
ngˇa´n nhˆa´t t`u s d¯ˆe´n t; ngu.o c la.i, chuyˆe˙’n sang Bu.´o.c 2.
(b) (Nˆe´u t`ım tˆa´t ca˙’ c´ac d¯u.`o.ng d¯i xuˆa´t ph´at t`u s) Nˆe´u khˆong thˆe˙’ g´an nh˜an cˆo´ d¯i.nh
Ch´u.ng minh Tru.´o.c hˆe´t ch´u ´y rˇa`ng c´ac d¯ı˙’nh khˆong d¯u.o c g´an nh˜an cˆo´ d¯i.nh s˜e khˆong tˆo`n
ta.i d¯u.`o.ng d¯i t`u s d¯ˆe´n n´o (nh˜u.ng d¯ı˙’nh n`ay c´o nh˜an L bˇa`ng ∞).
Trang 6V`ı S1 kho.˙’i ta.o l`a {s} v`a trong mˆo˜i bu.´o.c lˇa.p, d¯ı˙’nh v i ∗ d¯u.o c thˆem v`ao S1, nˆen bˇa`ng
d¯i.nh bo.˙’i d˜ay liˆen tiˆe´p c´ac d¯ı˙’nh, th`ı th`o.i gian cu c d¯a.i cu˙’a thuˆa.t to´an l`a O(m log n).
Ch´u.ng minh Trong tru.`o.ng ho p d¯ˆo` thi liˆen thˆong ma.nh d¯ˆa`y d¯u˙’ n d¯ı˙’nh v`a cˆa`n t`ım d¯u.`o.ng d¯i
ngˇa´n nhˆa´t t`u s d¯ˆe´n mo.i d¯ı˙’nh kh´ac, thuˆa.t to´an cˆa`n n(n − 1)/2 ph´ep cˆo.ng v`a so s´anh trong
d¯i.nh c´ac d¯ı˙’nh d¯u.o c g´an nh˜an ta.m th`o.i nˆen cˆa`n thˆem n(n − 1)/2 ph´ep so s´anh C´ac sˆo´ n`ay c˜ung l`a cˆa.n trˆen cho sˆo´ c´ac ph´ep to´an cˆa`n thiˆe´t d¯ˆe˙’ t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u s d¯ˆe´n t, v`a
Khi Thuˆa.t to´an Dijkstra kˆe´t th´uc, c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t d¯u.o c x´ac d¯i.nh bˇa`ng d¯ˆe
ho.n mˆo.t d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u s d¯ˆe´n bˆa´t k`y mˆo.t d¯ı˙’nh kh´ac, th`ı Phu.o.ng tr`ınh 3.1 s˜e d¯u.o c
Thu˙’ tu.c sau minh ho.a thuˆa.t to´an Dijkstra Trong thu˙’ tu.c n`ay, ma˙’ng Mark[] d¯u.o c su.˙’
v i Nˆe´u tˆo `n ta.i d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u s d¯ˆe´n t, th`ı thu˙’ tu.c PathTwoVertex() s˜e in ra thˆong
tin cu˙’a d¯u.`o.ng d¯i n`ay
void Dijkstra(byte Start, byte Terminal)
Trang 7for(i = 1; i <= NumVertices; i++)
for (i = 1; i <= NumVertices; i++)
if ((Mark[i] == FALSE) && (Label[i] < Min))
printf("Khong ton tai duong di tu %d", Start);
printf(" den %d", Terminal);
Trang 8}
Mark[Current] = TRUE;
}
printf("Ton tai duong di tu %d", Start);
printf(" den %d", Terminal);
printf("\nDuong di qua cac dinh:");
printf("\n % d " , Start);
PathTwoVertex(Pred, Start, Terminal);
printf("\nDo dai la: %d ", Label[Terminal]);
}
Thuˆa.t to´an Dijkstra chı˙’ ´ap du.ng trong tru.`o.ng ho p ma trˆa.n tro.ng lu.o ng W khˆong ˆam Tuy
pha˙’i c´o chi ph´ı ˆam Trong tru.`o.ng ho p n`ay, phu.o.ng ph´ap cho du.´o.i d¯ˆay t`ım d¯u.`o.ng d¯i ngˇa´n
nh˜an, trong d¯´o cuˆo´i bu.´o.c lˇa.p th´u k c´ac nh˜an biˆe˙’u diˆe˜n gi´a tri d¯ˆo d`ai cu˙’a c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t (t`u s d¯ˆe´n tˆa´t ca˙’ c´ac d¯ı˙’nh kh´ac) c´o sˆo´ cung khˆong vu.o t qu´a (k + 1) Thuˆa.t to´an n`ay
[3] ca˙’i tiˆe´n nhu sau
v j ∈T i
Trang 9trong d¯´o T i := Γ−1 (v i ) ∩ S Tˆa.p S ch´u.a tˆa´t ca˙’ c´ac d¯ı˙’nh v i sao cho d¯u.`o.ng d¯i ngˇa´n nhˆa´t
k (t´u.c l`a v j ∈ S) v`a kˆe´t th´uc bˇa`ng cung (v j , v i ) Ch´u ´y rˇa`ng, nˆe´u v i 6∈ Γ(S) th`ı d¯u.`o.ng
cu˙’a d¯ı˙’nh n`ay:
d`ai ˆam Thuˆa.t to´an kˆe´t th´uc
S := {v i | L k+1 (v i ) 6= L k (v i )}.
(Tˆa.p S bˆay gi`o ch´u.a tˆa´t ca˙’ c´ac d¯ı˙’nh m`a d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u s d¯ˆe´n n´o c´o sˆo´ cung l`a (k + 1)).
5 Thay k bo.˙’i (k + 1) v`a lˇa.p la.i Bu.´o.c 2.
Khi thuˆa.t to´an kˆe´t th´uc v`a d¯ˆo` thi khˆong c´o ma.ch d¯ˆo d`ai ˆam, ch´ung ta c´o thˆe˙’ t`ım tˆa´t
th´u k Ta c´o thˆe˙’ kho.˙’i ta.o
P1(v i) :=
(
nˆe´u gi´a tri nho˙’ nhˆa´t d¯a.t d¯u.o c o.˙’ phˆa`n tu.˙’ d¯ˆa`u tiˆen trong dˆa´u ngoˇa.c cu˙’a Phu.o.ng tr`ınh 3.2;
P khi kˆe´t th´uc thuˆa.t to´an, th`ı d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u s d¯ˆe´n v i nhˆa.n d¯u.o c theo th´u tu ngu.o c:
s, , P3(v i ), P2(v i ), P (v i ), v i ,
Trang 10void Ford_Moore_Bellman(byte Start)
{
byte i, k, Terminal;
AdjPointer Tempt1, Tempt2;
Path OldPred, NewPred;
int OldLabel[MAXVERTICES], NewLabel[MAXVERTICES], Min;Boolean Done, Mark[MAXVERTICES];
for (i = 1; i <= NumVertices; i++)
Trang 11while (Tempt1 != NULL)
printf("Ton tai duong di tu %d", Start);
printf(" den %d", Terminal);
Trang 12printf("\n Duong di qua cac dinh:");
printf("Khong ton tai duong di tu %d", Start);
printf(" den %d", Terminal);
nguyˆen l´y tˆo´i u.u cu˙’a quy hoa.ch d¯ˆo.ng v`a t`u nhˆa.n x´et l`a nˆe´u khˆong c´o d¯u.`o.ng d¯i tˆo´i u.u qua
k cung th`ı s˜e khˆong c´o d¯u.`o.ng d¯i tˆo´i u.u qua (k + 1) cung Ch´ung ta khˆong tr`ınh b`ay ch´u.ng
minh d¯´o; ba.n d¯o.c quan tˆam c´o thˆe˙’ xem [6]
Trong tru.`o.ng ho p d¯ˆo` thi c´o hu.´o.ng c´o tro.ng sˆo´ tu`y ´y nhu.ng khˆong c´o ma.ch c´o d¯ˆo d`ai ˆam
th`ı thuˆa.t to´an Moore-Bellman-d’Usopo t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u s d¯ˆe´n t tr`ınh b`ay du.´o.i
d¯ˆay s˜e hiˆe.u qua˙’ ho.n
Trang 13Nh˜an cu˙’a mo.i d¯ı˙’nh v i ∈ V l`a cˇa.p (P (v i ), L(v i )) Kˆe´t th´uc thuˆa.t to´an, L(t) l`a d¯ˆo d`ai cu˙’a d¯u.`o.ng d¯i ngˇa´n nhˆa´t t`u s d¯ˆe´n t v`a vector P cho ta thˆong tin cu˙’a d¯u.`o.ng d¯i n`ay.
Kho.˙’i ta.o Stack chı˙’ c´o mˆo.t phˆa`n tu.˙’ l`a s.
2 [Bu.´o.c lˇa.p] Trong khi Stack kh´ac NULL
{
} }
}
3.3 D - u.`o.ng d¯i ngˇa´n nhˆa´t gi˜u.a tˆa´t ca˙’ c´ac cˇa.p d¯ı˙’nh
to´an n`ay bˇa`ng c´ach su.˙’ du.ng n lˆa`n thuˆa.t to´an mˆo ta˙’ o.˙’ phˆa`n tru.´o.c, m`a trong mˆo˜i lˆa`n thu c hiˆe.n, ta s˜e cho.n s lˆa`n lu.o t l`a c´ac d¯ı˙’nh cu˙’a d¯ˆo` thi Trong tru.`o.ng ho p d¯ˆo` thi d¯ˆa`y d¯u˙’ c´o ma
Trang 14Trong phˆa` n n`ay ch´ung ta s˜e tr`ınh b`ay hai c´ach ho`an to`an kh´ac d¯ˆe˙’ gia˙’i b`ai to´an t`ımd¯u.`o.ng d¯i ngˇa´n nhˆa´t gi˜u.a tˆa´t ca˙’ c´ac cˇa.p d¯ı˙’nh Nh˜u.ng phu.o.ng ph´ap n`ay c´o thˆe˙’ ´ap du.ng cho
ma trˆa.n tro.ng lu.o ng khˆong ˆam, n´oi chung, c´ac phu.o.ng ph´ap n`ay s˜e nhanh ho.n 50% c´ach
´ap du.ng thuˆa.t to´an Dijkstra n lˆa`n.
Mˆo.t trong nh˜u.ng mu.c d¯´ıch cu˙’a c´ac thuˆa.t to´an t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t l`a x´ac d¯i.nh tˆa´t ca˙’c´ac d¯ˆo d`ai cu˙’a c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t c´o thˆe˙’ c´o trong mˆo.t d¯ˆo` thi c´o tro.ng lu.o ng ta.i c`ungmˆo.t th`o.i d¯iˆe˙’m Trong phˆa`n n`ay, ch´ung ta tha˙’o luˆa.n c´ach tiˆe´p cˆa.n kh´ac gia˙’i quyˆe´t b`ai to´ann`ay (xem [2])
Thuˆa.t to´an d¯u.o c xˆay du ng trˆen co so.˙’ mˆo.t c´ach t´ınh m´o.i l˜uy th`u.a cu˙’a c´ac ma trˆa.n,
m`a ch´ung ta s˜e go.i l`a tˆo˙’ng ma trˆa.n Hedetniemi Tˆo˙’ng n`ay d¯u.o c Hedetniemi tr`ınh b`ay v´o.i
Nystuen ta.i tru.`o.ng d¯a.i ho.c Michigan
Chˇa˙’ng ha.n, d¯ˆo` thi trong H`ınh 3.2 c´o ma trˆa.n tro.ng lu.o ng
trˆa.n Hedetniemi cu˙’a hai ma trˆa.n A v`a B l`a ma trˆa.n C cˆa´p m × p, k´y hiˆe.u A ⊕ B, x´ac d¯i.nh
bo.˙’i:
Trang 15
50
25
20
30
v3
v4
v5
v6
v7
•
•
•
•
•
H`ınh 3.2:
V´ı du 3.3.2 T`ım tˆo˙’ng ma trˆa.n A ⊕ B nˆe´u A =
0 1 2
2 0 3
5 6 0
0 3 4
5 0 4
3 1 0
.
Ta c´o
A ⊕ B =
0 1 2
2 0 3
5 6 0
+
0 3 4
5 0 4
3 1 0
=
0 1 2
2 0 3
3 1 0
.
V´ı du 3.3.3 T`ım tˆo˙’ng ma trˆa.n A ⊕ B nˆe´u A =
.
Ta c´o
A ⊕ B =
+
=
1 0 5
1 0 4
5 4 0
.
Bˆay gi`o ´ap du.ng tˆo˙’ng ma trˆa.n Hedetniemi v`ao viˆe.c t`ım d¯u.`o.ng d¯i ngˇa´n nhˆa´t X´et v´ı
Trang 16du trong H`ınh 3.2 K´y hiˆe.u W2 := W ⊕ W, W k := W k−1 ⊕ W, k ≥ 2 Khi d¯´o
Ch´u ´y rˇa`ng gi´a tri 55 l`a tˆo˙’ng cu˙’a 30, d¯ˆo d`ai cu˙’a d¯u.`o.ng d¯i ngˇa´n nhˆa´t v´o.i sˆo´ cung mˆo.t t`u
cung trˆen d¯u.`o.ng d¯i ngˇa´n nhˆa´t gi˜u.a hai d¯ı˙’nh Vˆa.y
trˆa.n Hedetniemi W n−1 l`a d¯ˆo d`ai cu˙’a d¯u.`o.ng d¯i ngˇa´n nhˆa´t gi˜u.a d¯ı˙’nh v i v`a v j
Trang 17D- iˆe` u l´y th´u nhˆa´t trong v´ı du n`ay l`a W4 = W8 Thˆa.t vˆa.y, d¯ˇa˙’ng th´u.c suy tru c tiˆe´p t`u.
qu´at ta c´o
W k−1 , c`on W k = W k+1 , th`ı W k biˆe˙’u thi tˆa.p c´ac d¯ˆo d`ai cu˙’a c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t, v`a sˆo´ cung trˆen mˆo˜i d¯u.`o.ng d¯i ngˇa´n nhˆa´t khˆong vu.o t qu´a k.
Do d¯´o, thuˆa.t to´an n`ay c´o thˆe˙’ d`u.ng o.˙’ bu.´o.c lˇa.p th´u k < (n − 1) Du.´o.i d¯ˆay l`a d¯oa.n chu.o.ng tr`ınh minh ho.a t´ınh ma trˆa.n lu˜y th`u.a cu˙’a ma trˆa.n tro.ng lu.o ng W.
for (i = 1; i <= NumVertices; i++)
for (j = 1; j <= NumVertices; j++) Old[i][j] = w[i][j];
Trang 18if (Flag == TRUE) break;
}
}
w14(4) = w 1k(3)⊕ w k7
(0, 30, 55, 30, 60, 50, 70, 60, 40)
(∞, ∞, ∞, ∞, 25, 20, 0, 25, ∞).
V`ı gi´a tri nho˙’ nhˆa´t d¯a.t d¯u.o c ta.i k = 6 ´u.ng v´o.i 70 = 50 + 20 (v`a k = 7) nˆen d¯u.`o.ng d¯i ngˇa´n
(∞, ∞, ∞, 20, ∞, 0, 20, ∞, 20).
th`anh vector cˆo.t
(30, 40, 50, 0, 30, 20, ∞, ∞, ∞), v`a gi´a tri nho˙’ nhˆa´t d¯a.t ta.i k = 1 hoˇa.c k = 4 (´u.ng v´o.i 30 + 0 hoˇa.c 0 + 30) nˆen tˆo`n ta.i cung
d¯ˆo d`ai 30, 20, 20)
Do d¯´o thuˆa.t to´an Hedetniemi cho mˆo.t minh ho.a h`ınh ho.c trong mˆo˜i bu.´o.c lˇa.p, v`a su.˙’du.ng c´ac ma trˆa.n c´o thˆe˙’ phu.c hˆo`i d¯u.o c d¯u.`o.ng d¯i ngˇa´n nhˆa´t Nhu vˆa.y, ch´ung ta cˆa`n thˆem
mˆo.t ma trˆa.n P lu.u tr˜u thˆong tin cu˙’a c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t Ma trˆa.n n`ay s˜e d¯u.o c cˆa.p
Trang 193.3.2 Thuˆ a.t to´an Floyd (tru.`o.ng ho p ma trˆa.n tro.ng lu.o ng tu`y ´y)
Thuˆa.t to´an du.´o.i d¯ˆay d¯u.o c d¯u.a ra lˆa`n d¯ˆa`u tiˆen bo.˙’i Floyd [25] v`a d¯u.o c l`am mi.n ho.n bo.˙’iMurchland [46]
2 k := k + 1.
hiˆe.n ph´ep g´an
Ch´u.ng minh t´ınh d¯´ung d¯ˇa´n cu˙’a thuˆa.t to´an Floyd l`a ho`an to`an d¯o.n gia˙’n [35], [25] v`ad`anh cho ngu.`o.i d¯o.c Ph´ep to´an co ba˙’n cu˙’a Phu.o.ng tr`ınh 3.3 trong thuˆa.t to´an n`ay go.i l`a
ph´ep to´an bˆo ba v`a c´o nhiˆe` u ´u.ng du.ng trong nh˜u.ng b`ai to´an tu.o.ng tu b`ai to´an t`ım d¯u.`o.ngd¯i ngˇa´n nhˆa´t (xem [14], [30])
C´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t c´o thˆe˙’ nhˆa.n d¯u.o c d¯ˆo`ng th`o.i c`ung v´o.i c´ac d¯ˆo d`ai d¯u.`o.ng d¯ingˇa´n nhˆa´t bˇa`ng c´ach su.˙’ du.ng quan hˆe d¯ˆe qui tu.o.ng tu Phu.o.ng tr`ınh 3.2 Bˇa`ng c´ach ´apdu.ng co chˆe´ cu˙’a Hu [35] d¯ˆe˙’ lu.u gi˜u thˆong tin c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t c`ung v´o.i d¯ˆo d`ai cu˙’a
C`ung v´o.i viˆe.c biˆe´n d¯ˆo˙’i ma trˆa.n W theo Phu.o.ng tr`ınh 3.3 trong Bu.´o.c 3, ta biˆe´n d¯ˆo˙’i
P theo quy tˇa´c
θ ij :=
(
Kˆe´t th´uc thuˆa.t to´an, ma trˆa.n P thu d¯u.o c s˜e gi´up cho ta viˆe.c t`ım c´ac d¯u.`o.ng d¯i ngˇa´n nhˆa´t.
v i , v ν , , v γ , v β , v α , v j