Chng 5: Gii thut trn th5.1. Cu trc lu tr th bng danh sch k5.2. Tm kim trn th5.3. Cy bao trm ngn nht5.4. Sp xp tp
5.1. Lu tr bng danh sch kDanh sch cc nh v1, v2,..., vnDanh sch k ca mi nh Adj(vi) , i=1..n
5.2. Tm kim trn thTm kim u tin chiu suTm kim u tin chiu rngTm ng i ngn nht
K hiu: V(G)=tp cc nh ca G, E(G)=tp cc cnh ca G. Hm Color(u) ch trng thi cc nh trong qu trnh tm kim. Color(u) nhn mt trong 3 gi tr : WHITE, GRAY, BLACK. Lc u, Color(u)=WHITE ngha l cha c xt, vi nhng nh u bt u xt, Color(u)=GRAY, khi u xt xong Color(u)=BLACK
Ni dung bi ton tm kimCho th G=(V,E) v mt nh s. Xut pht t nh s, hy duyt qua tt c cc nh ca th
K hiu: V(G)=tp cc nh ca G, E(G)=tp cc cnh ca G.Hm Color(u) ch trng thi cc nh trong qu trnh tm kim. Color(u) nhn mt trong 3 gi tr : WHITE, GRAY, BLACK. Lc u, Color(u)=WHITE ngha l cha c xt, vi nhng nh u bt u xt, Color(u)=GRAY, khi u xt xong Color(u)=BLACK
5.2.1. Tm kim u tin chiu su (DFS)Procedure DFS(G) {Khi to: Mi nh u cha c xt }for each u V[G] do color[u]:= WHITE ;for each nh u V[G] do if color[u] = WHITE then DFS-Visit (u) Procedure DFS-Visit (u)color[u] := GRAYfor each v Adj[u] do if color[v] =WHITE then DFS-Visit (v) color[u]:= BLACKTh tc quy:
Tm kim u tin chiu su (DFS)Procedure DFS(G,s) For each u in V[G] do color[u]:= WHITE ;color[s]:=GRAY;Push(s,Stack)While Stack # u:= Pop(Stack); if c v Adj(u) and color(v)=WHITE then color(v):=GRAY ; Push(v,Stack); else color(u):=BLACK;end;CH :Hm Push(v,Stack) t phn t v vo nh ngn xp StackHm Pop(Stack) ly phn t ng nh ngn xp ra khi ngn xp Th tc khng quy:
V d:DFS(A)
Stack (Sm)vAdj(v) Trngnh trngnh enAAB,C,D,EB,C,D,E,FA,BBCC,D,E,FA,B,CCE,FD,E,FA,B,C,EED,FEA,B,CCFDA,B,C,FFDA,B,C,F,DDDA,B,C,FFFA,B,CCCA,BBBAAARng
V d: DFS(A) (tip)
V d: DFS(A) (tip)
5.3.2. Tm kim u tin chiu rng (BFS)Procedure BFS(G,s) for each u V[G] do color[u]:= WHITE;Prev(u)=Null; color[s]:=GRAY;Q:= {s}While Q # do u:= Head(Q); /*ly u l phn t ng u hng i xt*/For each v Adj(u) if color(v)= WHITE then color(v):=GRAY; Prev(v):= u; ENQUEUE(Q,v);/*t v vo cui hng i*/DeQueue(Q,u);/* G u khi hng i */Color(u):= BLACK;
V d:BFS(A)
QueuevAdj(v) Trngnh trngnh enAAB,C,D,EB,C,D,E,FAB,C,D,EBFBC,D,ECFFCD,E,FDDE,FEEFFFRng
Q=B,C,D,EV d:BFS(A)Q=C,D,EQ=E,FQ=D,E,FQ=FQ=Rng
5.2.3. Tm ng i ngn nhtINPUT: G= Hm trng s W: E R+nh s VOUTPUT:ng i ( di) ngn nht t nh s ti tt c cc nh trong G
Gii thut DIJSKTRAT chc d liu
Vi mi u V(G), t L(u) l di ng i ngn nht t s n u, Pre(u) l nh ng trc nh u trn ng i ngn nht t s n u.Gi S l tp cc nh u c tnh xong gi tr hm L(u);Gi Q l hng i c u tin gm cc nh cha tnh xong L(u);
Gii thut DIJSKTRA- ngn ng t nhin
1. {Khi to} Vi mi vV(G) t L(v):= +, Pre(u)=Null ; L(s):=0; Q:= {} (rng)
2. {Lp: Mi bc tnh xong L(u) ca mt nh u} 2.1. Nu mi nh ca G nm trong Q th dng. 2.2. Chn nh u c L(u) nh nht, cha nm trong S b sung vo S Vi mi v Adj(u) {tnh li L(v)} nu L(v)> L(u)+W(u,v) th t li L(v):= L(u)+W(u,v) ; Pre(v):=u; Quay li 2.1
Gi m gii thut DIJSKTRAGi m- Khi toFor each v in V(G) do L(v):= +; Pre(v):= Null; Q:=V(G); L(s)= 0; Ch gii: Hm Q l hng i u tin lc u gm tt c cc nh ca G
Gii thut DIJSKTRAGi m- Vng lpWhile Q # do u:=ExtrackMin(Q); S:=S U {u} For each v in Adj(u) do if L(v)> L(u)+ W(u,v) then L(v):= L(u)+ W(u,v); Ch :Q l hng i c u tin vi tiu chun Disk(u) nh nht;ExtrackMin(Q) l th tc ly phn t c gi tr hm Disk(u) nh nht khi Q
V d: Dng gii thut DIJSKTRA Tm ng i ngn nht t A ti tt c cc nh ca G.Gi tr hm L(u) qua cc bc
B sung vo SABCDEFG0A03492F03392B033782C0337826G0337826D0337826E0337826
M t tng bc
6.3. Tm cy bao trm nh nhtGii thut PrimGii thut Kruskal INPUT: G= lin thng, n nh, m cnhHm trng s : E R+OUTPUT:T= cy bao trm nh nht
Gii thut PrimM t bng ngn ng t nhin/*Khi to: mi nh cha xt*/V:={s}, E={} (rng); n=1; While n < n do Begin Chn cnh (u,v) vi u V, v V-V c (u,v) nh nht V:=V {v} ; E:= E {(u,v)} ; n:=n+1; End;Ghi ch: lp trnh cn dng mt Cu trc ng cc tiu v mt hng i c u tin
Gi m Gii thut PRIMProcedure PRIM(G,w,r);Q:=V(G)For each u in Q do Key(u):= +;Key(r):=0;Pre(r):=Null;While Q # do u:= Extract(Q); for each v in Adj(u) do if v Q and Key(v) < w(u,v) then Key(v):= w(u,v); Pre(v):=u; Ghi ch: Q l mt cu trc hng i c u tin theo tiu chun gi tr hm Key(u) nh nht;Th tc Extract(Q)ly phn nh c Key(u) nh nht khi Q;
V d: Gii thut PRIM
B sung loi b cnh c xtB sung cnhB sung nhAAB,AC,AD,AFABBBE,BDAFFFC,FGFGGGC,GD,GEACCCDCDDGEE 7 nh
Gii thut PRIM (tip)
c trng ca gii thut PRIMTrong qu trnh xy dng , T lun l mt cy con ca G. Khi T cha tt c cc nh ca G, T tr thnh cy bao trm ca G
Gii thut KRUSKALM t bng ngn ng t nhinV:={}, E={} (rng); m=0; While m < n-1 do Begin Chn cnh (u,v) c (u,v) nh nht sao cho khi thm vo E th T khng c chu trnh E:= E {(u,v)} ; m:=m+1;End;
Gi m gii thut KRUSKALProcedure KRUSCALA:= For each u in V(G) do Make-Set(u);Sp xp cc cnh ca E(G) theo trong s khng gim w;For each (u,v) in E(G) if Find-Set(u) Find-Set(v) then A:= A U (u,v); Union(u,v);Ch :A l rng cc cy trong qu trnh xy dngMake_Set(u) l th tc to mt tp ch gm mt phn t u;Hm File-Set(u) tm tp hp c cha phn t uTh tc Union(u,v) thc hin php hp hai tp cha u v v.
Gii thut Kruskal- V d
Cnh xtCc cy trong rngChnAB(3){A},{B},{C},{D},{E}, {F},{G}ABAD(4){A,B},{D},{C},{E},{F}, {G}ADFG(4){A,B,D}, {C},{E},{F},{G}FGBD(5){A,B,D}, {C},{E},{F,G}--CF(6){A,B,D}, {C},{E},{F,G}CFAF(6){A,B,D}, {E},{C,F,G}AFAC(7){A,B,D,C,F,G}, {E}----DG(8){A,B,D,C,F,G}, {E}----EG(8){A,B,D,C,F,G}, {E}EGDC(9){A,B,D,C,F,G,E}--BE(9){A,B,D,C,F,G,E}--
Gii thut KRUSKAL: V d Trong qu trnh xy dng T lun khng c chu trnh nn l mt rngBACDEFG36746945988
c im ca gii thut KRUSKALTrong qu trnh xy dng T c l cy khng?Trong qu trnh xy dng T lun khng c chu trnh nn l mt rng, c th khng l mt cyKhi no mt cnh (u,v) to thnh mt chu trnh vi cc cnh c trong T ?Khi hai u mt u, v thuc cng mt cy ca T
6.4. Sp xp t pBi ton: Cho mt th c hng, hy xp cc nh trn mt ng thng sao cho cc cnh lun hng t tri sang phiBACFED
Gii thut sp xp tpNgn ng t nhin m t thut ton tm sp xp tp ca G=(V,E) nh sau:Nu mi nh ca G u c bc vo >0 th G khng c sp xp tp.Nu v V(G) c bc vo bng 0 (khng c cnh i vo) th n t n u danh sch, xa v v cc cnh xut pht t v khi G c G. Tip tc lm nh trn vi G .
Sp xp tp V dA BFBDFCECFEEFF
Tm cy bao trm theo chiu su1. Chn nh bt k v0 cho vo cy T2. Xt nh v mi cho vo T v cha xt xong: Nu c nh u k vi v v cha nm trong T th b xung cnh (v,u) v nh u vo T; thay v bng u tip tc xt nh u nh vi v; Nu tt c cc nh k vi v u nm trong T th nh v c xt xong v quay li xt nh ng trc v trong qu trnh tm kimNu nh v0 c xt xong th dng.
V d BACDEFG
XtB xung cnh v nh(v)A(AB), nh B(B)=AB(BD), nh D (D)=BD(DC), nh C (C)=DC(CF), nh F(F)=CFKhng cn,quay li CCKhng cn, quay li DD(CG), nh GG(GE), nh E
Tm cy bao trm theo chiu rng
Ht chng
Top Related