You are on page 1of 6

GII THUT TM NG I NGN NHT

GIA HAI TP NH
ALGORITHMS OF THE PROBLEM OF FINDING THE SHORTEST PATHS
FROM A SET OF NODES TO ANOTHER SET OF NODES
TRN QUC CHIN NGUYN THANH TUN
Trng i hc S phm, i hc Nng

TM TT
Bi ton tm ng i ngn nht l vn quan trng trong l thuyt th, n c
nghin cu t lu v c nhiu ng dng trong nhiu ngnh khoa hc ni chung v khoa hc
my tnh ni ring. Nhiu gii thut (Dijkstra, Bellman-Ford, Floyd...) c pht trin tm
ng i ngn nht cho mt cp nh hay cho tt c cc cp nh. Bi vit ny nghin cu bi
ton tm ng i ngn nht gia hai tp nh trn th v xut mt gii thut hiu qu
gii bi ton ny.Gii thut c ci t trong ngn ng C# v cho kt qu th nghim kh
quan.
ABSTRACT
The shortest-path problem is an important isue in graph theory. It has been studied for a long
time and found diverse applications in various fields. Some algorithms (e.g. Dijkstra, BellmanFord, Floyd...) have been designed for solving a single source shortest-path or all pair
shortest-path problems. This paper treats the problem of finding shortest paths from a set of
nodes to another set of nodes in a graph and presents algorithms for solving this problem.
These algorithms have been programmed on the C # language with satisfactory results.

M U
Bi ton tm ng i ngn nht l bi ton quan trng trong L thuyt th, n c p
dng gii quyt rt nhiu bi ton trong thc t nh iu khin ti u, giao thng vn ti,
mng vin thng ...
Bi ton ny c th chia lm 2 loi:
Tm ng i ngn nht gia mt cp nh: Cho th G(V,E) c trng s cnh v hai
nh u, v thuc V tm ng i ngn nht t nh u n nh v trn th G. Cc gii thut
c pht trin gii bi ton dng ny tiu biu l cc gii thut: Dijkstra, Bellman-Ford,...
Tm ng i ngn nht gia tt c cc cp nh: Cho th G(V,E) c trng s cnh
tm ng i t nh u n nh v, vi mi cp nh u, v thuc V. Cc gii thut c pht
trin gii bi ton ny l: Floyd-Warshall, Johnson,...
Trong thc t nhiu khi ta khng ch cn tm ng i ngn nht gia hai nh m cn
cn xc nh ng i ngn nht gia mt tp nh ny n mt tp nh khc. Bi ton
c pht biu nh sau: Cho th G(V,E) c trng s cnh v hai tp nh
A,B V tm ng i ngn nht t tp nh A n tp nh B.
Bi vit ny nghin cu bi ton tm ng i ngn nht gia hai tp nh trn th v
xut mt s gii thut hiu qu gii bi ton.

NI DUNG
1. Tm ng i ngn nht gia mt cp nh
1.1. nh ngha
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:

(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) .
1.2. Gii thut Dijkstra
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 chng ti 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.
pv: 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}
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.

1.3. phc tp ca gii thut Dijkstra


a) 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).
b) Trng hp s dng danh sch k
phc tp ca gii thut Dijkstra l O((|V| + |E|)lg|V|).
(Xem [2] - trang 530-531. nh l 25.11)
1.4. nh l
Gii thut Dijkstra l ng.
(Xem [2] - trang 529-530. nh l 25.10)
2. Gii thut tm ng i ngn nht gia hai tp nh
2.1. nh ngha
Xt th c trng s cnh G=(V,E,w) vi cc tp nh A, B l cc tp con khc rng ca
V.
nh ngha 2.1 Gi (A,B) l tp hp ng i gia tt c cc cp nh ca hai tp nh A v
B. ng i ngn nht gia hai tp nh A v B, k hiu pmin(A,B), l ng i c di:
(pmin(A,B)) = min { ( p ) | p ( A, B )}
(pmin(A,B)) gi l khong cch gia hai tp nh A v B v k hiu l d(A,B).
Lu rng, nu A B , th d(A,B) = 0.
2.2. Gii thut
Cho th G(V,E,w). Cho
A l tp cc nh ngun.
B l tp cc nh ch.
K hiu:

l ng i ngn nht t A n B ti thi im ang xt.


d() l di ng i ngn nht t A n B ti thi im ang xt.
= |A|, = |B|
tm ng i ngn nht gia hai tp nh A, B chng ta c th thc hin gii thut
sau:
Gii thut 1 (S dng nh ngha)
u vo: G(V,E) v 2 tp nh A, B V
u ra: aA, bB, sao cho d(A,B) = d(a,b) nh nht, v pmin(A,B) = pmin(a,b)
B1.
Ta sp xp cc phn t ca tch -cc AB theo th t no
AB = {(u1,v1),(u2,v2),,(uk,vk)}

B2.
B3.

B4.

t
:= AB, = , d() = +
Chn (ui,vi) c ch s i nh nht. t (u,v)=(ui,vi)
Tm ng i ngn nht pmin(u,v)
Nu d(u,v)<d(), th t d()= d(u,v), = pmin(u,v)
:= {(u,v)}.
Nu , th quay v B2
Nu = , th kt thc, pmin(A,B) = , d(A,B) = d()

gii thut ny, tm c ng i ngn nht gia hai tp nh ta phi tm ng i


ngn nht gia . cp nh, y = |A| v = |B|. Trong thc t khi m th G c s
lng nh ln v nu cc tp nh ngun v tp nh ch c nhiu nh th phc tp ca
gii thut ny l ..O(|V|2) ( y gii thut tm ng i ngn nht gia hai cp nh
B3 l gii thut Dijkstra vi phc tp O(|V|2)).
Khi nim Cy ng i ngn nht
Cy ng i ngn nht T(a)=(V(a),E) l th con c hng ca G sao cho:
1. V(a) l tp hp cc nh c nh du trong gii thut tm ng i ngn nht t nh
a.
V(a) = {v V | kv = true}
2. T(a) l cy c gc a.
3. vV(a), ng i t a n v trong T(a) l ng i ngn nht t a n v trong G.
T(a) = (V(a),E) gi l cy ng i ngn nht cc i nu n l cy ng i ngn nht
tho:
V(a) = V
V - V(a) = {v V | d(a,v) = }
Vi khi nim cy ng i ngn nht ta c th a ra mt gii thut khc hiu qu hn
gii thut 1:
hoc

Gii thut 2
u vo: G(V,E) v 2 tp nh A, B V
u ra: aA, bB, sao cho d(A,B) = d(a,b) nh nht, v pmin(A,B) = pmin(a,b)
B1.
Ta sp xp cc phn t ca A theo th t no
A = {u1,u2,,uk}
t
A = A, = , d() = +
B2.
Chn uiA c ch s i nh nht. t u = ui.
B3.
Tm cy ng i ngn nht T(u)(V(u),E) cho n khi V(u) B hoc T(u) cc i
(V(u) B = ).
Nu V(u) B , th
Chn v = V(u) B
Xc nh ng i ngn nht pmin(u,v)
Nu d(u,v) < d(), th t d() = d(u,v), = pmin(u,v)
Sang B4.
Nu T(u) l cc i, th sang B4
B4
A = A {u}
Nu A , th quay v B2.
Nu A = , th kt thc, pmin(A,B) = , d(A,B) = d()

phc tp ca gii thut ny l .O(|V|2). Cui cng chng ti xin xut mt gii
thut khc hiu qu hn.
Gii thut 3
u vo: G(V,E) v 2 tp nh A, B V
u ra: aA, bB, sao cho d(A,B) = d(a,b) nh nht, v pmin(A,B) = pmin(a,b)
B1.
Ta sp xp cc phn t ca A theo th t no
A = {u1,u2,,uk}
t
A = A, = , d() = +
B2.
Chn ui A c ch s i nh nht. t u = ui.
B3.
Tm cy ng i ngn nht T(u)(V(u),E) cho n khi V(u) B hoc T(u) cc i (V(u)
B = ).
Nu T(u) l cc i, th t A = A V(u), sang B4
Ngc li: Chn v = V(u) B
Xc nh ng i ngn nht pmin(u,v)
Tm u pmin(u,v) A gn nh v nht
A:= A - pmin(u,v)
Nu d(u,v) < d(), th t d():= d(u,v), := pmin(u,v)
B4
Nu A . Quay v B2.
Nu A = , th kt thc, pmin(A,B) = , d(A,B) = d()
3. Kt qu th nghim
th nghim v nh gi cc gii thut trn chng ti vit mt chng trnh nh ci
t v minh ha cho cc gii thut bng ngn ng C#.
Chng trnh c giao din nh sau:

Test cc gii thut:


Chng trnh xt n cc th c dng sau vi mi nh c xc nh bi ta
ca n (h,c):
1
2
3
n
1
2

m-1
m

Vi 100 nh v 270 cnh vi hng v trng s c la chn ngu nhin t 1 n 9 v


20 nh ngun, 20 nh ch cng c la chn ngu nhin.
Kt qu trung bnh sau 100 ln chy:
Gii thut
Gii thut 1
Gii thut 2
Gii thut 3

Thi gian (ms)


4854.581
41.981
37.657

Ta thy rng th c xy dng nh trn, Gii thut 3 hiu qu hn gii thut 1:


99% v hiu qu hn gii thut 2: 10%.
4. Kt lun
Qua bi bo ny chng ti m rng bi ton tm ng i ngn nht gia hai tp nh
t a ra mt s gii thut gii quyt bi ton ny, cc gii thut c ci t trn
my tnh v c so snh nh gi hiu qu.
Hng pht trin tip theo ca ti ny l tip tc m rng v pht trin bi ton tm
ng i ngn nht gia hai tp nh ng thi da trn cc gii thut thit k chng ti s
a ra mt s gii thut gii nhiu bi ton khc nhau, c th l cc bi ton nh:
- Bi ton tm ng i ngn nht vi a nh ngun, a nh ch
- Bi ton tm ng knh gia hai tp hp nh ca th.
TI LIU THAM KHO
[1] Trn Quc Chin, Gio trnh L thuyt th, Ti liu lu hnh ni b, Nng, 2002.
[2] Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Introduction To Algorithms,
The MIT Press, 1999.
[3] Kenneth H.Rosen, Ton ri rc ng dng trong tin hc, bn dch ting Vit, Nxb KHKT,
H Ni, 1997.
[4]
I-Lin Wang, Shortest Paths and Multicommodity Network Flows, A Thesis Presented
to The Academic Faculty, School of Industrial and Systems Engineering Georgia
Institute of Technology, April 2003.
[5]
K. M. Chandy, J. Misra, Distributed Computation on Graphs, Shortest Path
Algorithms, University of Texax at Autin, November 1982.
[6]
Dijkstra.E, A note on two problems in connection with graphs, Numerische
Mathematik, Vol.1, 1959.

You might also like