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)} t := AB, = , d() = +

B2. B3.

B4.

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] [2] [3] [4] Trn Quc Chin, Gio trnh L thuyt th, Ti liu lu hnh ni b, Nng, 2002. Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Introduction To Algorithms, The MIT Press, 1999. Kenneth H.Rosen, Ton ri rc ng dng trong tin hc, bn dch ting Vit, Nxb KHKT, H Ni, 1997. 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. K. M. Chandy, J. Misra, Distributed Computation on Graphs, Shortest Path Algorithms, University of Texax at Autin, November 1982. Dijkstra.E, A note on two problems in connection with graphs, Numerische Mathematik, Vol.1, 1959.

[5] [6]

You might also like