You are on page 1of 25

n c s

GVHD: on Vn Thng

LI NI U
L thuyt th l mt lnh vc nghin cu c t lu iv c nhiu ng
dng hin i.Nhng t tng c bn ca l thuyt th c xut t nhng
nm u ca th k 18 bi nh ton hc li lc ngi Thy S Leonhard
Euler.Chnh ng l ngi s dng th gii bi ton ni ting v cc ci cu
thng ph Konigsberg.
th c s dng gii quyt cc bi ton trong nhiu lnh vc khc
nhau .Chng hn , th c th s dng xc nh cc mch vng trong vn
gii tch mch in.Chng ta c th phn bit cc hp cht ho hc hu c khc
nhau vi cng cng thc phn t nhng khc nhau v cu trc phn t nh
th.Chng ta c th xc nh xem hai my tnh trong mng c th trao i thng tin
c vi nhau hay khng nh m hnh th ca mng my tnh. th c trng s
trn cc cnh c th s dng gii cc bi ton nh : tm ng i ngn nht gia
hai thnh ph trong cng mt mng giao thng . Chng ta cn s dng th gii
cc bi ton v lp lch,thi kho biu,v phn b tn s cho cc trm pht thanh v
truyn hnh....
Mc ch ta tm hiu l nhm gii thiu cc khi nim c bn,cc bi ton
ng dng quan trng ca l thuyt th nh bi ton cy khung nh nht , bi
ton tm ng i ngn nht... v nhng thut ton gii quyt chng c
trnh by chi tit cng vi vic phn tch v hng dn ci t chng trnh trn
my tnh.
Cng c v rn luyn k nng lp trnh, nh li cc thut ton m c bit l
thut ton Dijkstra.
Chng 1 : L thuyt v thut ton tm ng i ngn nht.
Chng 2 : Xy dng thut ton.
Chng 3 : Ci t thut ton.

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 1 -

n c s

GVHD: on Vn Thng

Chng I : L THUYT V THUT TON TM NG I NGN

NHT
I.1

Cc khi nim c bn ca l thuyt th


I.1.1 nh ngha th
th l mt cu trc ri rc bao gm cc nh v cc cnh ni cc
nh ny.Chng ta phn bit cc loi th khc nhau bi kiu v s lng
cnh ni hai nh no ca th . c th hnh dung c ti sao li cn
n
cc loi th khc nhau ,chng ta s nu v d s dng chng m t mt
mng my tnh .Gi s ta c mt mng gm cc my tnh v cc knh
in thoi(gi tt l tn thoi) ni cc my tnh ny.Chng ta c th biu
din cc v tr t my tnh bi cc im v cc knh thoi ni chng bi
cc on ni,xem hnh 1
H Ty
ng Nai
Hu
An Giang
H Ni

TPHCM

Bnh nh

Qung Ngi
Ph Yn

Khnh Ha

Hnh 1.S mng my tnh


Nhn thy rng trong mng hnh 1, gia hai my tnh bt k ch cho php nhiu nht
l mt knh thoi ni chng,knh thoi ny cho php lin lc c hai chiu v khng
c my tnh no li c ni vi chnh n.S mng my tnh cho tronh hnh 1
c gi l n th v hng => ta i n nh ngha sau:
nh ngha 1. n th v hng G=(V,E) bao gm V l tp nh,v E l tp cc
cp khng c th t gm hai phn t khc nhau ca V gi l cc cnh.
Trong trng hp gia hai my tnh no thng xuyn phi truyn ti nhiu
thng tin ngi ta phi ni hai my ny bi nhiu knh thoi . Mng vi a knh
thoi gia cc my tnh c cho trong hnh 2.

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 2 -

n c s

GVHD: on Vn Thng

H Ty

ng Nai

H Ni

Hu

HCM

An Giang

Bnh nh

Qung Ngi
Ph Yn
Khnh Ha
Hnh 2. S mng my tnh vi a knh thoi
nh ngha 2. a th v hng G=(V,E) bao gm V l tp cc nh , v E l h
cc cp khng c th t gm hai phn t khc nhau ca V gi l cc cnh .Hai
cnh e1 va e2 c gi l cnh lpnu chng cng tng ng vi mt cp nh.
H Ty

ng Nai

H Ni

Qung Ngi

Hu

TPHCM

An Giang

Bnh nh

Ph Yn
Khnh Ha
Hnh 3. S mng my tnh vi knh thng bo.

R rng mi n th u l a th, nhng khng phi a th no cng l


n th, v trong a th c hai hay nhiu hn cnh ni mt cp nh no .
Trong mng my tnh c th c nhng knh thoi ni mt my tnh no vi
chnh n(chng hn vi mc ch thng bo).Mng nh vy c cho trong hnh
3.Nh vy a th khng th m t c mng nh vy, bi v c nhng khuyn
(cnh ni mt nh vi chnh n).Trong trng hp ny chng ta cn s dng n
khi nim gi th v hng, c nh ngha nh sau:

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 3 -

n c s

GVHD: on Vn Thng

nh ngha 3. Gi th v hng G=(V,E) bao gm V l tp cc nh, v E l h


cc cp khng c th t gm hai phn t (khng nht thit phi khc nhau) ca V
gi l cc cnh.Cnh e c gi l khuyn nu c dng e=(u,u).
Cc knh thoi trong mng my tnh c th ch cho php truyn tin theo mt
chiu.Chng hn trong hnh 4 my ch H Ni ch c th nhn tin t cc my
a phng, c mt s my ch c th gi tin i ,cn cc knh thoi cho php truyn
tin theo c hai chiu c thay th bi hai cnh c hng ngc chiu nhau.
H Ty

H Ni

ng Nai

TPHCM

Hu

An Giang

Bnh nh

Ph Yn
Khnh Ha
Hnh 4. Mng my tnh vi cc knh thoi mt chiu
Ta i n nh ngha sau:
nh ngha 4. n th c hng G=(V,E)bao gm V l tp cc nh, v E l tp
cc cp c th t gm hai phn t khc nhau ca V gi l cc cung.
Nu trong mng c th c a knh thoi mt chiu,ta s phi s dng n khi nim
a th c hng:
nh ngha 5. a th c hngG=(V,E) bao gm V l tp cc nh,v E l h
cc cp c th t gm hai phn t khc nhau ca V gi l cc cung.Hai cung e1 va
e2 tng ng vi cng mt cp nh c gi l cung lp.
Trong cc phn tip theo ch yu chng ta s lm vic vi n th v hng v
n th c hng.V vy, cho ngn gn , ta s b qua tnh t n mi khi
nhc n chng.
I.1.2. Cc thut ng c bn
Trong mc ny chng ta s trnh by mt s thut ng c bn ca l thuyt
th.Trc tin ,ta xt cc thut ng m t cc nh v cnh ca th v hng.

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 4 -

n c s

GVHD: on Vn Thng

nh ngha 1. Hai nh u va v ca th c hng G c gi l k nhau nu (u,v)


l cnh ca th G.Nu e=(u,v) l cnh ca th th ta ni cnh ny l cnh lin
thuc vi hai nh u v v, hoc cng ni l cnh e ni nh u v nh v, ng thi
cc nh u v v s c gi l cc nh u ca cnh (u,v).
c th bit c bao nhiu cnh lin thuc vi mt nh , ta a vo nh ngha
sau :
nh ngha 2. Ta gi bc ca nh v trong th v hngl s cnh lin thuc
vi n ta s k hiu l deg(v).
b
c
d

Hnh 1. th v hng
Th d . Xt th cho trong hnh 1, ta c
deg(a)=1, deg(b)=4 , deg(c)=4 , deg(f)=3, deg(d)=1 ,
deg(e)=3 , deg(g)=0.
nh bc 0 gi l nh c lp , nh bc 1 c gi l nh treo .Trong v d trn
nh g l nh c lp, a v d l cc nh treo. Bc ca nh c tnh cht sau :
nh l 1. Gi s G=(V,E) l th v hng vi m cnh . Khi
2m= deg(v)
vV
Chng minh. R rng trong mi cnh e=(u,v) c tnh mt ln trong deg(u) v
mt ln trong deg(v). T suy ra tng tt c cc bc ca cc nh bng hai ln s
cnh
Th d 2. th vi n nh v mi nh c bc l 6 c bao nhiu cnh ?
Gii: Theo nh l 1,ta c 2m=6n.T suy ra s cnh ca th l 3n.

H qu. Trong th v hng,s nh bc l(ngha l c bc l s l) l mt s


chn.

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 5 -

n c s

GVHD: on Vn Thng

Chng minh. Thc vy, gi O v U tng ng l tp nh bc l v tp nh bc


chn ca th,ta c
2m=deg(v)= deg(v)+ deg(v)
vV

vO

vU

Do deg(v) l chnvi v l nh trong U nn tng th hai trong v phi trn l s


chn.T suy ra tng th nht(chnh l tng bc ca cc nh bc l) cng phi l
s chn, do tt c cc s hng ca n l s l, nn tng ny phi gm mt s chn
cc s hng.V vy , s nh bcl phi l s chn.
Ta xt cc thut ng tng t cho th c hng.
nh ngha 3.Nu e=(u,v) l cung ca th c hng G th ta ni hai nh u v
vl k nhau,v ni cung(u,v) ni nh u vi nh v hoc cng ni cung ny l i ra
khi nh u v i vo nh v. inh u (v) s c gi l nh u (cui) ca cung
(u,v).
Tng t nh khi nim bc, i vi th c hng ta c khi nim bn bc
ra(vo) ca mt nh.
nh ngha 4.Ta gi bn bc ra (vo) ca nh v trong th c hng l s cung
ca th i ra khi n (i vo n) v k hiu la deg+(v)(deg-(v)).
a

d
Hnh 2. th c hng G

Th d 3. Xt th cho trong hnh 2. Ta c


deg-(a)=1, deg-(b)=2, deg-(c)=2, deg-(d)=2, deg-(e)=2.
deg+(a)=3, deg+(b)=1 deg+(c)=1, deg+(d)=2, deg+(e)=2
Do mi cung (u,v) s c tnh mt ln trong bn bc vo ca nh v v mt
ln trong bn bc ra ca nh u nn ta c
nh l 2. Gi s G=(V,E) l th c hng , khi
deg+(v)= deg-(v)=|E|
vV

vV

Rt nhiu tnh cht ca th c hng khng ph thuc vo hng trn cc cung


ca n. V vy, trong nhiu trng hp s thun tin hn nu ta b qua hng trn

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 6 -

n c s

GVHD: on Vn Thng

cc cung ca th. th v hng thu c bng cch b qua hng trn cc


cung c gi l th v hng tng ng vi th c hng cho.
I.1.3. nh ngha ng i, chu trnh , th lin thng.
nh ngha 1. ng i di n t nh u n nh v, trong n l s nguyn
dng, trn th v hng G=(V,E) l dy
xo, x1 , ... , xn-1 , xn
trong u=x0 , v=xn , ( xi , xi+1 ) E , i= 0, 1, 2 ,..., n-1.
ng i ni trn cn c th biu din di dng cc cnh:
(x0 , x1 ) , ( x1 , x2), ... , ( xn-1 , xn ).
nh u gi l nh u, cn nh v gi l nh cui ca ng i. ng i c
nh u trng vi nh cui ( tc l u=v) c gi l chu trnh. ng i hay chu
trnh c gi l n nu nh khng c cnh no b lp li.
Th d 1. Trn th v hng cho trong hnh 1: a,d,c,f,e l ng i n di 4.
Cn d,e,c,a khng l ng i do (e,c) khng phi l cnh ca th. Dy b,c,f,e,b
l chu trnh di 4. ng i a,b,e,d,a,b c di l 5 khng phi l ng i
n, do cnh (a,b) c mt trong n hai ln.
a

c a

f d
e
Hnh 1. ng i trn th

Khi nim ng i v chu trnh trn th c hng c nh ngha hon ton


tng t nh trng hp th v hng, ch khc l ta ch n hng trn cc
cung.
nh ngha 2. ng i di n t nh u n nh v, trong n l s nguyn
dng, trn th c hng G=(V,A) l dy
xo, x1 , ... , xn-1 , xn
trong u=x0 , v=xn , ( xi , xi+1 ) A , i= 0, 1, 2 ,..., n-1.
ng i ni trn cn c th biu din di dng cc cung:
(x0 , x1 ) , ( x1 , x2), ... , ( xn-1 , xn ).

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 7 -

n c s

GVHD: on Vn Thng

nh u gi l nh u, cn nh v gi l nh cui ca ng i. ng i c
nh u trng vi nh cui ( tc l u=v) c gi l chu trnh. ng i hay chu
trnh c gi l n nu nh khng c cung no b lp li.
Th d 2. Trn th c hng cho trong hnh 1: a,d,c,f,e l ng i n di 4.
Cn d,e,c,a khng l ng i do (e,c) khng phi l cung ca th. Dy b,c,f,e,b
l chu trnh di 4. ng i a,b,e,d,a,b c di l 5 khng phi l ng i
n, do cung (a,b) c mt trong n hai ln.
Xt mt mng my tnh .Mt cu hi t ra l hai my tnh bt k trong
mng ny c th trao i c thng tin vi nhau hoc trc tip qua knh ni
chng hc thng qua mt hoc vi my tnh trung gian trong mng? Nu s dng
th biu din mng my tnh ny (trong cc nh ca th tng ng vi
cc my tnh , cn cc cnh tng ng vi cc knh ni) cu hi c pht biu
trong ngn ng th nh sau: Tn ti hay chng ng i gia mi cp nh ca
th ?
ng ngha 3. th v hng G=(V,E) c gi l lin thng nu lun tm c
ng i gia hai nh bt k ca n.
Nh vy hai my tnh bt k trong mng c th trao i thng tin cvi nhau khi
v ch khi th tng ng vi mng ny l th lin thng.
Th d 3. Trong hnh 2: th G l lin thng, th H l khng lin thng
a
b
H1
c
d

e
H2

f
H3
G

Hnh 2. th lin thng G v th H gm 3 thnh phn lin thng H1,H2,H3.


nh ngha 4. Ta gi th con ca th G=(V,E) l th H=(W,F), trong W
V v F E
Trong trng hp th l khng lin thng , n s r ra thnh mt s th con
lin thng i mt khng c nh chung. Nhng th con lin thng nh vy ta s
gi l cc thnh phn lin thng ca th.
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 8 -

n c s

GVHD: on Vn Thng

Th d 4. th H trong hnh 2 gm 3 thnh phn lin thng l H1,H2,H3.


Trong mng my tnh c th c nhng my ( nhng knh ni ) m s hng hc ca
n c th nh hng n vic trao i thng tin trong mng. Cc khi nim tng
ng vi tnh hung ny c a ra trong nh ngha sau.
nh ngha 5. nh v c gi l nh r nhnh nu vic loi b v cng vi cc
cnh lin thuc vi n khi th lm tng s thnh phn lin thng ca th.
Cnh e c gi l cu nu vic loi b n khi th lm tng s thnh phn lin
thng ca th .
Th d 5. trong th G hnh 2, nh d v e l nh r nhnh, cn cc cnh (d,g)
v (e,f) l cu.
i vi th c hng c hai khi nim lin thng ph thuc vo vic ta c
xt n hng trn cc cung hay khng.
nh ngha 6. th c hng G=(V,A) c gi l lin thng mnh nu lun tm
c ng i gia hai nh bt k ca n.
nh ngha 7. th c hng G=(V,A) c gi l lin thng yu nu th v
hng tng ng vi n l th v hng lin thng.
R rng nu th l lin thng mnh th n cng l lin thng yu, nhng iu
ngc li l khng lun ng , nh ch ra trong th d di y.
Th d 6. Trong hnh 3 th G l lin thng mnh, cn H l lin thng yu nhng
khng l lin thng mnh
a

b
a

e
e
c

d
c

Hnh 3. th lin thng mnh G


th lin thng yu H

Mt cu hi t ra l khi no c th nh hng cc cnh ca mt th v hng


lin thng c th thu c mt th c hng lin thng mnh? Ta s gi th
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 9 -

n c s

GVHD: on Vn Thng

nh vy l th nh hng c. nh l di y cho ta tiu chun nhn bit


mt th c l nh hng c hay khng.
nh l 1. th v hng lin thng l nh hng c khi v ch khi mi cnh
ca n nm trn t nht mt chu trnh.
Chng minh. iu kin cn. Gi s (u,v) l mt cnh ca th ,t s tn ti ng
i c hng t u n v v ngc li suy ra (u,v) phi nm trn t nht mt chu trnh.
iu kin . Th tc sau y cho php nh hng cc cnh ca th thu c
th c hng lin thng mnh.Gi s C l mt chu trnh no trong th.
nh hng cc cnh trn chu trnh ny theo mt hng i vng theo n. Nu tt
cc cnh ca th l c nh hng th kt thc th tc. Ngc li , chn C l
mt cnh cha nh hng c chung nh vi t nht mt trong s cc cnh nh
hng. Theo gi thit tm c chu trnh C cha cnh e. nh hng cc cnh cha
c nh hng ca C theo mt hng dc theo chu trnh ny( khng nh hng
li cc cnh c hng). Th tc trn s c lp li cho n khi tt c cc cnh
ca th c nh hng. Khi ta thu c th c hng lin thng mnh
I.2 Cc khi nim m u v ti cn cp ti
I.2.1 M u
Trong phn ny chng ta ch xt th c hng G=(V,E) v |V|=n,|E|=m
vi cc cung c gn trng s, ngha l , mi cung (u,v) E ca n c t tng
ng vi mt s thc a(u,v) gi l trng s ca n.Chng ta s t a(u,v)= , nu
(u,v) E .Nu dy
v0, v1 , ... , vp l mt ng i trn G, th di ca n c
nh ngha l tng sau:
p

a(vi-1, vi)
i=1

tc l , di ca ng i chnh l tng cc trng s trn cc cung ca n.(Ch


rng nu chng ta gn trng s cho tt c cc cung u bng 1, th ta thu c nh
ngha di ung i nh l s cung ca ng i.
Bi ton tm ng i ngn nht trn th di dng tng qut c th c pht
biu di dng tng qut nh sau : Tm ng i c di nh nht t mt nh
xut pht s V n nh cui (ch) t V. ng i nh vy s gi l ng i
ngn nht t s n t cn di ca n s k hiu
l d(s,t) v cn gi l khong cch t s n t (khong cch nh ngha nh vy c
th l s m ).Nu nh khng tn ti ng i t s n t th ta t d(s,t)= t ta
thy chu trnh trong th c di dng,th trong ng i ngn nht khng c
nh no lp li(ng i nh th gi l ng i c bn).
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 10 -

n c s

GVHD: on Vn Thng

Mt khc,nu trong th c chu trnh vi di m(gi l chu trnh m) th


khong cch gia 1 s cp nh no ca th c th l khng xc nh, bi v,
bng cch i vng theo chu trnh ny mt s ln ln, ta c th ch ra ng i
gia cc nh ny c di nh hn bt k s thc cho trc no. Trong trung
hp nh vy , c th t vn tm ng i c bn ngn nht, tuy nhin bi ton
t ra s tr nn phc tp hn rt nhiu, bi v n cha bi ton xt s tn ti ng
i Hamintn trong th nh l mt trng hp ring.
Trc ht cn ch rng nu bit khong cch t s n t, th ng i ngn
nht t s n t, trong trng hp trng s khng m, c th tm mt cch d dng.
tm ng i , ch cn ch l i vi cp nh s,t V tu (s t) lun tm c
nh v sao cho:
d(s,t) = d(s,v) + a(v,t)
Thc vy nh v nh vy chnh l nh i trc nh t trong ng in ngn nht t
s n t..Tip theo ta c th tm c u sao cho d(s,v)=d(s,u)+a(u,v),... T gi thit
v tnh khng m ca cc trng s d dng suy ra rng dy t,v,u... khng cha nh
lp li v kt thc nh s.R rng dy thu c xc nh ng i ngn nht t s
n t.
I.2.2 ng i ngn nht xut pht t mt nh
Phn ln cc thut ton tm khong cch gia hai nh s v t c xy dng
nh k thut tnh ton m ta c th m t i th nh sau: t ma trn trng s
a[u,v],u,v V,ta tnh cn trn d[v] ca khong cch t s n tt c cc nh v
V.Mi khi pht hin
d[u]+a[u,v]<d[v]
(1)
cn trn d[v] s c tt ln : d[v]=d[u]+a[u,v].
Qu trnh s kt thc khi no chng ta khng lm tt thm c bt c
cn trn no.Khi , r rng gi tr ca mi d[v] s cho ta khong cch t mi nh s
n v. Khi th hin k thut tnh ton ny trn my tnh, cn trn d[v] s c gi l
nhn ca nh v,cn vic tnh li cc cn trn ny s gi l php gn nhn cho th
v ton b th tc thng gi l th tc gn nhn. Nhn thy rng tnh khong
cch t s n tt c cc nh cn li ca th.Hin nay vn cha bit thut ton
no cho php tm ng i ngn nht gia hai nh lm vic thc s hiu qu hn
nhng thut ton tm ng i ngn nht t mt nh n tt c cc nh cn li.
S tnh ton m ta va m t cn cha l xc nh, bi v cn phi ch ra
th t chn cc nh u v v kim tra iu kin (1).Th t chn ny c nh hng
rt ln n hiu qu thut ton.
I.2.3 Thut ton Dijkstra_Bi ton v d c th (trng hp ma trn trng s
khng m)
Trong trng hp trng s trn cc cung l khng m thut ton do Dijkstra ngh
gii quyt bi ton tm ng i ngn nht t nh s n cc nh cn li ca
th lm vic hu hiu hn rt nhiu so vi thut ton khc. Thut ton c xy
dng trn c s hn cho cc nh cc nhn tm thi. Nhn ca mi nh cho bit
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 11 -

n c s

GVHD: on Vn Thng

cn trn ca di ng i ngn nht t s n n. Cc nhn ny s c bindi


theo th tc lp, m mi mt bc lp c mt nhn tm thi tr thnh nhn c
nh .Nu nhn ca mt nh no tr thnh c nh th n s cho ta khng phi
l cn trn m l di ng i ngn nht t nh s n n.Thut ton c m t
nh sau:
Procedure Dijkstra;
(*u vo : th c hng G=(V,E) vi n nh,
s V l nh xut pht, a[u,v] V, ma trn trng s;
Gi thit : a[u,v] 0, u,v V
u ra : khong cch t nh s n tt c cc nh cn li d[v],v V.
*)
Begin(*khi to*)
For v V. do
Begin
d[v]:=a[s, v];
Truoc [v]:=s;
End;
d[s]:=0;T:=V\{s};(* T l tp cc nh c nhn tm thi *)
(*Bc lp*)
While T do
Begin
Tim dinh u T tha mn d[u]=min {d[z]:z T};
T:=T\{u};(*c nh nhn ca nh u*)
For v T do (*gn nhn li cho csc nh trong T*)
If d[v]>d[u]+a[u,v] then
Begin
d[v]:=d[u]+a[u,v];
truoc[v]:=u;
end;
end;
end;
nh l 1.Thut ton Dijkstra tm ng i c di ngn nht trn th sau
nhn thi gian c O(n2).

Chng minh. Trc tm ng i ngn nht t nh s n cc nh cn li ca


th.Gi s rng mt bc lp no cc nhn c nh cho ta di cc ng i
ngn nht t s n cc inh c nhn c nh,ta s chng minh rng ln lp tip
theo nu nh u* thu c nhn c nh th d(u*) chnh l d di ng i ngn
nht t s n u*.
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 12 -

n c s

GVHD: on Vn Thng

K hiu S1 l tp cc nh c nhn c nh, S2 l tp cc nh c nhn tm thi


bc lp ang xt.Kt thc mi bc lp nhn tm thi d(v)cho ta odi ca
ng i ngn nht t s n v ch qua nhng nh nm hon ton trong tp S1.Gi
s rn ng di ngn nht t n u* khng nm tron trong tp S1, tc l n i qua
t nht mt nh ca tp S2.Gi z S2 l nh u tin nh vy trn ng i
ny.Do trng s trn cc cung l khng m , nn on ng t s n u* c di
L>0 v d(z) < d(u*) - L < d(u*).
Bt ng thc ny l mu thun vi cch xc nh nh u* l nh c nhn tm thi
nh nht. Vy ng in ngn nht t s n u* phi nm trn trong tp S1, v v th
d[u*] l di ca n.Do ln lp u tin S1={s} v sau mi ln lp ta ch them
vo S1 mt nh u* nn gi thit l d(v) cho di ng i ngn nht t s n v
vi mi v S1 l ng vi bc lp u tin .Theo qui np l suy ra thut ton cho
ta ng i ngn nht t s n mi nh ca th .
By gi s nh gi s php ton cn thc hin theo thut ton. mi bc lp
tm ra im u cn thc hin O(n) php ton , gn nhn li cng cn thc hin
mt s lng php ton cng l O(n) .Thut ton cn phi thc hin n-1 bc
lp , vy thi gian tnh ton ca thut ton l c O(n2).
nh l c chng minh.
Khi tm c di ng i ngn nht d[v] th ng i ny c th tm da
vo nhn Trc[v],v V.
Th d 1: Tm ng i ngn nht t nh 1 n cc nh cn li ca th hnh
sau:
(7)
3
2

6
(5)

(1)

(1)

(2)

(1)

(1)
(4)

(2)

(3)

Kt qu tnh ton theo thut ton c trnh by trong bn di y.Qui c vit


thnh 2 phn ca nhn theo th t : d[v], Truoc[v]. nh c nh du * l nh
c chn c nh nhn bc lp ang xt , nhn ca n khng bin i cc
bc tip theo, v th ta nh du.

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 13 -

n c s

GVHD: on Vn Thng

Bng kt qu tnh ton theo thut ton Dijkstra


Nu ch cn tm ng i ngn nht t s n mt nh t no th ta c th kt thc
thut ton khi tr thnh c nhn c nh.
I.2.4 ng i trong th khng c chu trnh.
Bc lp nh 1
nh 2
nh 3
nh 4
,1
,1
Khi to 0, 1
1, 1*
1
6, 2
3, 2 *
2
4, 4 *
3
4
5

nh 5
,1
, 1
7, 4
7, 4
6, 6 *

nh 6
,1
8, 2
8, 2
5, 3 *
-

By gi ta xt trng hp ring th hai ca bi ton tm ng i ngn nht, m


gii n c th xy dng thut ton vi phc tp tnh ton O(n2), l th
khng c chu trnh( cn trng s trn cc cung c th l cc s thc tu ). Trc
ht ta chng minh nh l sau
nh l 2. Gi s G l th khng c chu trnh. Khi cc nh ca n c th
nh s sao cho mi cung ca th ch hng t nh c ch s nh hn n nh
c ch s ln hn , ngha l mi cung ca n c th biu din di dng (v[i],v[j]),
trong i<j .
T h d 3. th trong hnh sau c cc nh c nh s tha mn iu kin nu
trong nh l.
7 (3)
8
(5)
(1)

t=9

(1)

s=1

(2)
(1)

(5)
(7)

(4)
6

(10)
(5)

2 (2)
3
Hnh . th khng c chu trnh
chng minh nh l ta m t thut ton sau, cho php tm ra cch nh s tha
mn iu kink nh l.
Procedure Numbering;
(*
u vo : th c hng G=(V,E) vi n nh khng cha chu trnh c
cho bi danh sch k Ke(v),v V
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 14 -

n c s

GVHD: on Vn Thng

u ra: Vi mi nh v V ch s NR[u] < NR[v]. *)


Begin

For v V do Vao[v]:=0;
(* tinh Vao[v]=deg-(v) *)
For u V do
For v Ke(u) do Vao[v]:=Vao[v] + 1;
QUEUE:= ;
For v V do
If Vao[v]=0 then QUEUE v ;
Num :=0;
While QUEUE do
Begin u QUEUE;
Num :=num +1; NR[u] :=num;
For v Ke(u) do
Begin
Vao[v]:=Vao[v] - 1;
If Vao[v]=0 then QUEUE v ;
End;
End;
End;
Thut ton c xy dng da trn tng rt n gin sau : R rang trong th
khng c chu trnh bao gi cng tm c nh c bn bc vo bng 0 ( khng c
cung i vo ). Thc vy, bt u t nh v1 nu c cung i vo n t v2 th ta li
chuyn sang xt nh v2. Nu c cung v3 i vo v2, th ta chuyn sang xt v3... Do
th l khng c chu trnh nn sau mt s hu hn ln chuyn nh vy ta phi i
n nh khng c cung i vo . Thot tin, tm cc nh nh vy ca th . R
rng ta c th ng s chng theo mt th t tu bt u t 1.Tip theo, loi b
khi th nhng nh c nh s cng cc cung i ra khi chng, ta thu c
th mi cng khng c chu trnh, v th tc c lp li vi th mi ny. Qu
trnh s c tip tc cho n khi tt c cc inh ca th c nh s.
Ch :
1) R rng trong bc khi to ta phi duyt qua tt c cc cung ca th
khi tnh bn bc vo ca cc nh, v vy ta tn c O(m) php
ton,trong m l s cung cua th . Tip theo mi ln nh s mt
nh, thc hin vicv loi b nh c nh s cng vi cc cung
i ra khi n , chng ta s phi duyt qua tt c cc cung ny. Suy ra
nh s all cc nh c th chng ta s ph duyt tt c cc cung ca
th mt ln na. Vy phc tp thut ton la O(m).
2) Thut ton c th kim tra xem th c cha chu trnh hay khng?
Thc vy, nu kt thc thut ton vn cn c nh cha c nh s
(num<n) th iu c ngha l th cha chu trnh.
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 15 -

n c s

GVHD: on Vn Thng

Do c thut ton nh s trn, nn khi xt th khng c chu trnh ta c th gi


thit l cc nh ca n c nh s sao cho mi cung ch i t nh c ch s nh
n nh c ch s ln hn . Thut ton tm ng i ngn nht trn th khng c
chu trnh c m t trong s sau y :
Procedure Critical_Path;
(* Tm ng i ngn nht t nh ngun n tt c cc nh cn li trn
th khng c chu trnh *)
u vo: th G=(V,E) trong V= { v[1], v[2], ..., v[n] }
i vi mi cung (v[i],v[j]) E ta c i<j.
th c cho bi danh sch k Ke(v),v V.
u ra: Khong cch t v[1] n tt c cc nh cn li c ghi trong
mng d[v[i] ], i=1,2,...,n
*)
Begin
d[v[1] ]:=0;
for j:=2 to n do d[v[j] ]:=a[v[1] ],v[j] ];
fo j:=2 to n do
for v Ke [v [j ] ] do
d [v ]:=min ( d [v ], d [v [j ] ] + a [v [j ] ], v );
end;
phc tp ca thut ton l O(m)., do mi cung ca th phi xt qua ng mt
ln.
Cc thut ton m t trn thng c ng dng vo vic xy dng nhn phng
php gii bi ton iu khin vic thc hin nhng d n ln, gi tt l PERT
(Project Evaluation and Review Technique ) hqy CMD ( Critical path method)
I.2.5 ng i ngn nht gia tt c cc cp nh
R rng ta c th gii bi ton tm ng i ngn nht gia tt c cc cpnh ca
th bng cch s dng n ln thut ton m t mc trc, trong ta s chn s
ln lt l cc nh ca th .R rng , khi ta thu c thut ton vi phc
tp l O(n4) (nu dng tt Ford-Bellman) hoc O(n3) i vi trng hp trng s
khng m hoc th khng c chu trnh. Trong trng hp tng qut , s dng
thut ton Ford-Bellman n ln khng phi l cch lm tt nht . y ta s m t
thut ton vi phc tp tnh ton O(n3) : thut ton Floyd, tt c m t nh sau
Procedure Floyd;
(* Tm ng i ngn nht gia tt c cc cp nh
u vo : th cho bi ma trn trng s a[i,j], i,j=1,2,...,n
u ra : Ma trn ng i ngn nht gia cc cp nh
d[i,j] i,j =1,2,...,n
trong d[i,j] cho di ng di ngn nht t i n j.
Ma trn ghi nhn ng i
p[i,j], i, j=1,2,...,n.
trong p[i,j] ghi nhn nh i trc j trong ng i ngn nht t i
n j.
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 16 -

n c s

GVHD: on Vn Thng

*)
Begin
(* Khi to *)
For i:=1 to n do
For j:=1 to n do
Begin
d[i,j]:=a[i,j];
p[i,j]:=i;
end;
(* Bc lp *)
For k:=1 to n do
For i:=1 to n do
For j:=1 to n do
If d[i,j] > d[i,k] + d[k,j] then
Begin
d[i,j]:= d[i,k] + d[k,j ];
p [i,j ]:= p [k,j ];
end;
end;
R rng phc tp ca thut ton l O(n3).
Chng II : GII THUT_LU THUT TON DIJKSTRA
II.1 Phn tch.
Dng ma trn k biu din th C= (cij), cij = trng s ca cung (i,j), cij =+
nu khng c cung (i,j). Mt mng d[] ghi cc di ng i ngn nht t s ti
nh i ang c . Xut pht d[s] =0 v d[i] =c si nu i k s, d[j] =+ nu j khng k
s.
II.2 Gii thut tm ng i ngn nht gia mt cp nh.
nh ngha 1.0.
Xt th c trng s cnh G = (V,E,w), vi hm trng s w:E R l
nh x t tp cc cnh E n tp s thc R.
nh ngha 1.1. ng i p t nh u n nh v l dy cc cnh ni
tip nhau bt u t nh u kt thc ti nh v. ng i p t u n v c biu din
nh sau: p=(u=v0,v1,vk=v)
nh ngha 1.2. di ca ng i p = ( v0,v1,...,vk ), k hiu (p),
l tng cc trng s ca cc cnh trn ng i:
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 17 -

n c s

GVHD: on Vn Thng
k

(p) =

w(v
i =1

i 1

, vi )

nh ngha 1.3. Gi (u,v) l tp tt c ng i t u n v. di


ng i ngn nht t nh u n nh v c xc nh bi:
d(u,v) = min { ( p ) | p (u, v)}
nh ngha 1.4. ng i ngn nht pmin(u,v) t nh u n nh v l
ng i c di d(u,v).
II.3

Gii thut Dijkstra.


II.3.1 Ni dung

C rt nhiu gii thut c pht trin gii bi ton tm ng i ngn nht


gia mt cp nh, trong khun kh bi vit ny em ch xin gii thiu gii thut
Dijkstra. Gii thut Dijkstra l mt gii thut gii bi ton ng i ngn nht
ngun n trn mt th c trng s cnh m tt c cc trng s u khng m.
N xc nh ng i ngn nht gia hai nh cho trc, t nh a n nh b.
mi nh v, gii thut Dijkstra xc nh 3 thng tin: kv, dv v pv.
kv: mang gi tr boolean xc nh trng thi c chn ca nh v.
Ban u ta khi to tt c cc nh v cha c chn, ngha l:
kv = false, v V.
dv: l chiu di ng i m ta tm thy cho n thi im ang xt
t a n v.
Khi to, dv = , v V \{a}, da = 0.
p v: l nh trc ca nh v trn ng i ngn nht t a n b.
ng i ngn nht t a n b c dng {a,...,pv,v,...,b}. Khi to, pv = null, v
V.
Sau y l cc bc ca gii thut Dijkstra:
B1.

Khi to: t kv:= false v V; dv:= ,v V \ {a}, da:=0.

B2.

Chn v V sao cho kv = false v dv = min {dt / t V, kt = false}

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 18 -

n c s

GVHD: on Vn Thng

Nu dv = th kt thc, khng tn ti ng i t a n b.
B3.

nh du nh v, kv:= true.

B4.

Nu v = b th kt thc v db l di ng i ngn nht t a n b.

Ngc li nu v b sang B5.


B5.

Vi mi nh u k vi v m ku = false, kim tra

Nu du > dv + w(v,u) th du:= dv + w(v,u)


Ghi nh nh v: pu:= v.Quay li B2.
II.3.2 phc tp ca gii thut Dijkstra.
*** Trng hp s dng ma trn k.
Gi f(n) l s ln gii thut Dijkstra kho st mt cnh ca th G trong
trng hp xu nht. Khi ta c:
f(n) < O(|V|2)
Chng minh: Cho n = |V|, B5 l vng lp cha cc bc B2 B5, vng lp
c thc hin n khi v = b.V mi vng lp ta rt ra mt nh ca V v khi u
V c n phn t, nn vng lp c x l nhiu nht l n ln.
B2 s nh ti a c kho st l n - 1 nh
B5 s nh k ti a c kho st l n -1 nh
Do :

f(n) 2(n-1)n < O(|V|2)

Vy phc tp ca gii thut Dijkstra l O(|V|2).

*** Trng hp s dng danh sch k


phc tp ca gii thut Dijkstra l O((|V| + |E|)lg|V|).
II.3.3 Lu thut ton Dijstra

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 19 -

n c s

GVHD: on Vn Thng

Begin

n, C = (cij), a, z

L(a) = 0
L(v) = v a
T(i) = 1 i n
S
zT

Chn v T sao cho L[v] t min


T = T \ {v}

S
x T & k v

L(x) = min(L(x), L(v) + c(v,x))


L(z)

End

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 20 -

n c s

GVHD: on Vn Thng

II.3.4 Bng d liu chy th.


To ma trn nh sau
6
0
4
2
0
0
0

4 2 0 0 0
0 1 5 0 0
1 0 8 10 0
5 8 0 2 6
0 10 2 0 3
0 0 6 3 0

Ta c th nh sau
b

d
1

2
10

Bng chy th
V

a
e
b
c
f
d

bcdef
bcfd
cfd
fd
d

a
0
*

4
3*
*

2*
*

10
8*
*

12
12
12*
*

14
15
*

di t af l 15

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 21 -

n c s

GVHD: on Vn Thng
Chng III :

CI T CHNG TRNH

ti : Chng trnh tm ng i ngn nht t nh S n nh T theo


thut ton Dijkstra _S dng ngn ng lp trnh C
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define m 50
int C[m][m],DD[m],L[m],T[m];
int n;
void inmatran(char *st,int C[m][m])
{
cout<<"\n\n"<<st;
for(int i=1;i<=n;i++)
{
cout<<"\n";
for(int j=1;j<=n;j++)
cout<<C[i][j]<<"\t";
}
}
void docfile(char *st)
{
FILE*f;
int t;
f=fopen(st,"rt");
if(f!=NULL)
{
fscanf(f,"%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
fscanf(f,"%d",&t);
C[i][j]=t;
}
fclose(f);
}
}
void Dijkstra(int a,int z)
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 22 -

n c s

GVHD: on Vn Thng

{
for(int i=1;i<=n;i++)
{
L[i]=1000;
T[i]=1;
DD[i]=0;
}
L[a]=0;
while(T[z]==1)
{
for(int v=1;v<=n;v++)
if(T[v]==1 && L[v]!=1000) break;
for(int j=v+1;j<=n;j++)
if(T[j]==1 && L[j]<L[v]) v=j;
T[v]=0;
for(int x=1;x<=n;x++)
if(T[x]==1 && C[v][x]!=0)
if(L[x]> (L[v]+C[v][x]))
{
L[x]=L[v]+C[v][x];
DD[x]=v;
}
}
}
void duongdi(int a,int z)
{
cout<<"\n\n\tDo dai duong di ngan nhat : "<<L[z];
cout<<"\n\n\tDuong di: ";
while(DD[z]!=0)
{
printf("%d <-- ",z);
z=DD[z];
}
cout<<a;
}
void main()
{
clrscr();
docfile("d:\\ok\\dacs\\matran.dnc");
//ch ng dn ca ma trn
cout<<"\n\n*** TIM minPath() BANG THUAT TOAN DIJKSTRA. ***";
Dijkstra(a,z);
// thay 1 gi tr c th
duongdi(a,z);
// thay 1 gi tr c th
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 23 -

n c s

GVHD: on Vn Thng

getch();
}
*****Kt lun******
Tm li, thng qua mn hc ny gip em nm bt tt hn v bi ton tm ng i
ngn nht gia hai nh thng qua thut ton Dijkstra.
Tun theo cc nguyn tc m thy hng dn ra, tuy nhin vn cn nhiu sai st
trong qu trnh hon thnh n c s ny,mong thy gip nhiu hn....
******Ti liu tham kho*****
Ton ri rc_tc gi: Nguyn c Ngha, Nguyn T Thnh_NXB Gio Dc
***Nhn xt, hng pht trin, kin nh gi ca thy hng dn***
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 24 -

n c s

GVHD: on Vn Thng

....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................

SVTH : Nguyn Cng Hiu_SBD 0041

- Trang 25 -

You might also like