hue lam do an

Upload: nguyen-van-hung

Post on 12-Jul-2015

293 views

Category:

Documents


0 download

TRANSCRIPT

Phng php tham lam

MC LCM U.....................................................2 ..............................................................................................................................3 CHNG I: L THUYT........................................................................................3 .............................................................................................................................................3 1. Bi ton ti u t hp..................................................................................................3 2.Thut ton tham lam.....................................................................................................3 2.1. Pht biu bi ton:.................................................................................................3 2.2. Phng php gii:................................................................................................3 CHNG 2: GII QUYT VN ...........................................................5 1. Bi ton tr tin ca my rt tin t ng ATM:.........................................................5 2.1.1.Pht biu bi ton................................................................................................5 2.1.2. Phn tch bi ton...............................................................................................5 2.1.3. Chng trnh ci t..........................................................................................6 2.1.4. nh gi thut ton............................................................................................8 2. Bi ton ci ba l..........................................................................................................8 2.2.1. Pht biu bi ton:..............................................................................................8 2.2.2. Phn tch bi ton:..............................................................................................9 2.2.3.Ci t chng trnh:........................................................................................10 2.2.4.nh gi thut ton...........................................................................................11 3. Bi ton tm ng i ngn nht gia hai nh ca th - thut ton Dijkstra........11 2.3.1. Pht biu bi ton ............................................................................................11 2.3.2.Phn tch bi ton .............................................................................................11 2.3.3. Ci t chng trnh .......................................................................................16 2.3.4. nh gi thut ton:.........................................................................................17 4. Bi ton tm cy ph nh nht theo thut ton Kruskal.............................................17 2.4.1. Pht biu bi ton............................................................................................17 2.4.2. Phn tch bi ton:............................................................................................17 2.4.3. Ci t chng trnh........................................................................................19 2.4.4. nh gi thut ton..........................................................................................20 5. Bi ton tm cy ph nh nht theo thut ton Prim..................................................20 2.5.1. Pht biu bi ton.............................................................................................20 2.5.2. Phn tch bi ton.............................................................................................20 2.5.3. Ci t chng trnh........................................................................................23 6. THIT K CU TRC D LIU V GII THUT..............................24 CHNG 3: CI T CHNG TRNH ....................................................................24 V KT QU TH NGHIM...................................................................24 1.Gii thiu ngn ng lp trnh: ....................................................................................24 2. Chc nng v giao din chng trnh: ......................................................................25 2.1 Chc nng:...........................................................................................................25 2.2 Giao din ca chng trnh:.................................................................................25 Kt lun.............................................................................................................................25

n Mn Hc

Lp: 09SPT

Nhm: 8 1

Phng php tham lam

M U1. L do chn ti: sau khi kt thc hc phn phn tch thit k & gii thut th chng em kh n tng v phng php tham lam nn chng em quyt nh i su tm hiu vo phng php tham lam. Phng php ny c vn dng rt nhiu vo cc cc bi ton l thuyt( dijkstra,prim,kruskal),v thc t nh( bi ton rt tin t ng ATM,ngi du lch, ci ba l) 2. Mc tiu v nhim v ti: 1.1 Mc tiu Lm r v bn cht v s ng dng ca phng php tham lam vo thc t, ng thi bit cc bc thc hin ca mt ti ca n mn hc. 1.2 Nhim v ca ti: + Trn c s l thuyt th v phn tch thit k v gii thut, chng em tham kho v hon thnh thut ton c s ca phng php tham lam, trn c s l thuyt chng em p dng vo nhng chng trnh nh: bi ton Balo, ATM, Dijstra, Prim, Kruskal. 3.i tng v phm vi nghin cu ca ti: + i tng v phm vi nghin cu ca ti l cc thut ton phng php tham lam trong phn tch thit k v gii thut v l thuyt th . 4.Phng php nghin cu: -V l thuyt: Thu thp, phn tch, tng hp nhng ti liu cn thit hon thnh ti nh gio trnh mn phn tch thit k & gii thut, l thuyt th, lp trnh pascalti liu trn mng internet. - V thc nghim: Tm hiu cc ng dng thc t ca ni dung ti t xy dng chng trnh cho ti. 5. ngha khoa hc v thc tin ti: ti tuy cha thc s hon thin nhng da vo chng ta c th xy dng nn nhiu chng trnh nh cho bi ton ATM ti u phng n tr tin, cy ph nh nht ( Prim ) trong thc t gi s mun xy dng h thng ng st gia cc thnh ph m iu kin l hai thnh ph bt k c th thng thng vi nhau, sao cho tng chi ph xy dng tuyn ng l t nht 6.Cu trc ca ti ti gm 2 chng chnh: Chng I: Tm tt ni dung L Thuyt lin quan n ti Chng II: Gii quyt vn Chng III:

n Mn Hc

Lp: 09SPT

Nhm: 8 2

Phng php tham lam

CHNG I:

L THUYT

1. Bi ton ti u t hp L mt dng ca bi ton ti u v c dng tng qut nh sau: Cho hm f(X) xc nh trn tp hu hn cc phn t D. Hm f(X) c gi l hm mc tiu. Mi phn t X D c dng X = ( x1, x2,, xn ) c gi l mt phng n. Cn tm mt phng n X* D sao cho f(X*) t min(max). Phng n X* nh th gi l phng n ti u. C th dng phng php vc cn xc nh phng n ti u ngha l xt tt c cc phng n trong tp D (hu hn). Mc d tp hp D l hu hn nhng tm phng n ti u cho mt bi ton kch thc n bng phng php vc cn ta c th cn mt thi gian m. p dng thut ton tham lam gii bi ton ti u t hp cho mt thi gian c th chp nhn c. 2.Thut ton tham lam 2.1. Pht biu bi ton: Tham n hiu mt cch dn gian l: trong mt mm c nhiu mn n mn no ngon nht ta s n trc v n cho ht mn th chuyn sang mn ngon th hai, li n ht mn ngon th hai ny v chuyn sang mn ngon th ba 2.2. Phng php gii: Gii thut tham lam (Greedy algorithm) l mt thut ton gii quyt mt bi ton theo kiu metaheuristic tm kim la chn ti u a phng mi bc i vi hy vng tm c ti u ton cc. Chng hn p dng gii thut tham lam vi bi ton ci ba l ta c gii thut sau: " mi bc hy chn vt c gi tr cao m trng lng li nh sao cho c th mang c nhiu qu". C cc c trng sau: Khng ng cho tt c cc bi ton ti u. Kh chng minh tnh ng ca thut ton. Thut ton n gin v d ci t. L gii cho nhng c trng nu trn, i vi nhiu bi ton, gii thut tham lam hu nh khng cho ra li gii ti u ton cc (nhng khng phi lun nh vy), v chng thng khng chy trn tt c cc trng hp. Chng c th bm cht ly mt s la chn nht nh mt cch qu sm, iu ny dn n hu qu l trong giai on sau, cc thut ton ny khng th tm ra cc li gii ton cc tt nht. V d, i vi bi ton tr tin ca my rt tin t ng ATM v bi ton ci n Mn Hc Lp: 09SPT Nhm: 8 3

Phng php tham lam

ba l s c trnh by phn sau, khng mt thut ton tham lam c bit no m bo tm thy cc li gii ti u. Tuy nhin, cc thut ton ny vn hu ch v chng d thit k v cho ra cc c lng tt v li gii ti u. Nu c th chng minh rng mt thut ton tham lam cho ra kt qu ti u ton cc cho mt lp bi ton no , th thut ton thng s tr thnh phng php c chn la, v n chy nhanh hn cc phng php ti u ha khc nh quy hoch ng. Cc v d cho gii thut loi ny l thut ton Kruskal v thut ton Prim dnh cho bi ton cy ph nh nht, thut ton Dijkstra dnh cho bi ton ng i ngn nht. Ni chung, gii thut tham lam c nm thnh phn: 1. Mt tp hp cc ng vin (candidate), t to ra li gii 2. Mt hm la chn, theo la chn ng vin tt nht b sung vo li gii 3. Mt hm kh thi (feasibility), dng quyt nh nu mt ng vin c th c dng xy dng li gii 4. Mt hm mc tiu, n nh gi tr ca li gii hoc mt li gii cha hon chnh 5. Mt hm nh gi, ch ra khi no ta tm ra mt li gii hon chnh. M hnh thut ton Chn S t tp A bao gm cc ng vin (S: tp cc i din c chn l li gii ca bi ton) Tnh cht tham lam ca thut ton c nh hng bi hm Chon. - Khi ng S = ; - Trong khi A : -Chn phn t tt nht ca A gn vo x : x := Chon(A); - Cp nht cc i tng chn: A = A-{x}; - Nu S U {x} tha mn yu cu bi ton th: Cp nht li gii: S = S U {x}; Mt cch tng qut thut ton tham lam c th ci t nh sau: Function thamlam(A: tp hp); Begin S:= ; While (S cha l li gii) and ( A) do Begin n Mn Hc Lp: 09SPT Nhm: 8 4

Phng php tham lam

chn x thuc C nh hm Chon; A:=A\{x}; If S U {x} c trin vng then S:=S U {x}; If S l li gii then return SElse Return 0;

CHNG 2:

GII QUYT VN

Trong chng ny, ng dng thut ton tham lam vo gii mt s bi ton ti u t hp. 1. Bi ton tr tin ca my rt tin t ng ATM: 2.1.1.Pht biu bi ton Trong my ATM c sn cc loi tin c mnh gi 500.000 ng, 200.000 ng, 100.000 ng, 50.000 ng, 20.000 ng, 10.000 ng. Gi s mi loi tin c s lng khng hn ch. Khi c khch hng cn rt s tin l n ng, tnh chn n 10.000 ng( n>= 10.000 ). Hy tm mt phng n tr tin sao cho tr n ng vi s t bc t nht. 2.1.2. Phn tch bi ton Gi X = ( x1, x2,x3, x4,x5,x6 ) l mt phng n tr tin. Vi x1, x2,x3, x4,x5,x6 ln lt l s t tin 500.000 ng, 200.000 ng, 100.000 ng, 50.000 ng, 20.000 ng, 10.000 ng. Theo yu cu ta tm min (x1+ x2 + x3 + x4+ x5+x6 ) sao cho: x1 * 500.000 + x2 * 200.000 + x3 *100.000 + x4 *50.000 + x5 * 20.000 +x6*10.000 =n. M t thut ton: tng nh nht th cc t tin mnh gi ln phi c chn nhiu nht: Trc ht ta chn ti a cc t bc 500.000 ngha l x1 l s nguyn ln nht sao cho x1*500.000 x1 = n div 500.000. S tin cn rt cn li l: n - x1 *500.000. Chuyn sang chn t 200.000 v tip tc cho cc mnh gi khc cho n khi kt thc. C th: Vi n = 1.290.000 ng. x1= 1.290.000 div 500.000 = 2. S tin cn li l:1.290.000 2*500.000 = 290.000. x2 = 290.000 div 200.000 = 1. S tin cn li l: 290.000 1*200.000 = 90.000. x3 khng c chn. x4 = 90.000 div 50.000 = 1. S tin cn li l:90.000 1*50.000 = 40.000. x5 = 40.000 div 20.000 =2. S tin cn li l:40.000 2*20.000 = 0. n Mn Hc Lp: 09SPT Nhm: 8 5

Phng php tham lam

X6= 0; Vy X = (2,1,0,1,2,0) => Tng s t bc :6 t y, thut ton tham lam cho li gii ti u nht Ch : Nu p dng thut ton ny cho bi ton i tin c in trong mt s trng hp khng cho kt qu ti u nh mong mun. Gi s, bn mun nhn s t bc t nht khi i 160.000 ng bng cc t bc mnh gi 120.000 ng, 50.000 ng, 10.000 ng. Li gii ca thut ton tham lam cho trng hp ny l: X = (1,0,4) => Tng s t bc nhn c l: 5 t. Trong khi li gii X = (0,3,1) => Tng s t bc nhn c l: 4 t li cho kt qu ti u hn. 2.1.3. Chng trnh ci t program may_atm; uses crt; var s:longint;tt:char; n,n1,n2,n3,n4,n5,n6:integer; Procedure Doitien(s:longint); var n,n1,n2,n3,n4,n5,n6:integer; Begin n:=0;n1:=0;n2:=0;n3 :=0;n4:=0;n5:=0;n6:=0; If s>=500000 then begin n1:=s div 500000; Writeln('so to 500 ngan la:', n1); End; If (s mod 500000)>=200000 then begin n2:=(s mod 500000) div 200000; Writeln('so to 200 ngan la:',n2); End; If (s mod 500000) mod 200000>=100000 then begin n3:=((s mod 500000) mod 200000) div 100000; Writeln('so to 100 ngan la:', n3); End; If ((s mod 500000) mod 200000) mod 100000>=50000 then begin n4:=(((s mod 500000) mod 200000) mod 100000)div 50000; Writeln('so to 50 ngan la:',n4); End; n Mn Hc Lp: 09SPT Nhm: 8 6

Phng php tham lam

If (((s mod 500000) mod 200000) mod 100000) mod 50000>=20000 then begin n5:=(( ((s mod 500000) mod 200000) mod 100000)mod 50000) div 20000; Writeln('so to 20 ngan la:',n5); end; if (( ((s mod 500000) mod 200000) mod 100000)mod 50000) mod 20000>=10000 then begin n6:=(((((s mod 500000) mod 200000) mod 100000)mod 50000) mod 20000) div 10000; Writeln('so to 10 ngan la:',n6); end; n:=n1+n2+n3+n4+n5+n6; write('tong so to tien nhan duoc la:',n); end; CHNG TRNH VIT BNG MNG: vn: integer; m: array [1..20] of integer; i,code:integer; tl:char; procedure nhap_n; var st: string; kt1,kt2: boolean; begin repeat write('nhap n');readln(st); n:= length(st); kt1:= true; kt2:= false; for i:=1 to n do Val(st[length(st)-i+1],m[i],code); for i:=1 to 4 do if(m[i] 0) then kt1 := false; for i:=n downto 1 do if(m[i] 0) then kt2:= true; if(kt1 = false) then writeln('phai la boi cua 10000'); if(kt2 = false) then writeln('khac 0'); until((kt1 = true) AND (kt2 = true)); end; function chia(x: longint; a: integer): integer; var st,t: string[30]; s: integer; begin n Mn Hc Lp: 09SPT Nhm: 8 7

Phng php tham lam

st := ''; for i:=a to n do begin Str(m[i],t); st:= t + st; end; val(st,s,code); m[a] := s mod x; for i:=a+1 to n do m[i] := 0; chia := s div x; end; Begin repeat nhap_n; writeln(chia(5,6):5, ' to 500000 nghin'); writeln(chia(2,6):5, ' to 200000 nghin'); writeln(chia(1,6):5, ' to 100000 nghin'); writeln(chia(5,5):5, ' to 50000 nghin'); writeln(chia(2,5):5, ' to 20000 nghin'); writeln(chia(1,5):5, ' to 10000 nghin'); write('Co muon tiep tuc nua ko? (C/K)');read(tl); until (tl='K'); readln; End.

2.1.4. nh gi thut ton Bi ton ch c 6 cu lnh iu kin Ifthenv mt s cu lnh nhp xut khc.Mi cu lnh c phc tp l O(1), cc cu lnh ni tip nhau nn ta c Thut ton tham lam p dng cho bi ton ny cho chng ta phc tp ch l O(1). Thut ton tham lam khng cho li gii ti u cho tt c cc bi ton i tin c in. Vi nhng bi ton c nhiu loi tin vi mnh gi khc nhau th bi ton ca chng ta s di v phc tp. 2. Bi ton ci ba l 2.2.1. Pht biu bi ton: Cho mt ci bal c th ng mt trng lng W v n loi vt, mi loi vt c trng lng gi v mt gi tr vi. Tt c cc loi vt u c s lng khng n Mn Hc Lp: 09SPT Nhm: 8 8

Phng php tham lam

hn ch. Tm mt cch la chn cc vt ng vo bal, chn cc loi vt no, mi loi c bao nhiu sao cho tng trng lng khng vt qu W v tng gi tr l ln nht 2.2.2. Phn tch bi ton: Theo yu cu ca bi ton th ta cn nhng vt c gi tr cao m trng lng li nh sao cho c th mang c nhiu qu, cng qu khi t l gi tr/trng lng (n gi) cng cao. vt c n gi cao nht s c chn trc vi s lng ti a v tng trng lng khng vt qu trng lng cho php ca ba l. Tip tc chn nh vy vi cc vt c n gi nh hn cho trng lng cn li ca ba l. M t thut ton: Thut ton tham lam p dng cho bi ton ny l: 1.Tnh n gi cho cc loi vt. 2. Xt cc loi vt theo th t n gi t ln n nh. 3. Vi mi vt c xt s ly mt s lng ti a m trng lng cn li ca ba l cho php. 4. Xc nh trng lng cn li ca ba l v quay li bc 3 cho n khi khng cn c th chn c vt no na. V d: Ta c mt bal c trng lng l 37 v 4 loi vt vi trng lng v gi tr tng ng c cho trong bng bn: Loi vt A B C D Trng lng 15 10 2 4 Gi tr 30 25 2 6

T bng cho ta tnh n gi cho cc loi vt ny theo th t n gi gim dn ta c bng sau: Loi vt Trng lng B 10 A 15 D 4 C 2 Gi tr 25 30 6 2 n gi 2.5 2.0 1.5 1.0

Ta c th t u tin ln lt l: B, A, D, C. Vt B c xt u tin v chn ti a l 3 ci v mi ci c trng lng l 10 v bal c trng lng 37. Sau khi chn 3 vt B th trng lng cn li ca bal l 37- 3 *10 = 7. Vt A c trng lng l 15 ln hn trng lng cn li ca bal nn A khng c chn. n Mn Hc Lp: 09SPT Nhm: 8 9

Phng php tham lam

Xt vt D: D c trng lng l 4 < 7, vy chn c 1 vt D. Trng lng cn li ca bal sau khi chn thm D l: 7 4 = 3. Cui cng ta s chn c 1 vt C. Nh vy ta chn 3 vt loi B, 1 loi D v 1 loi C. Tng trng lng l 3 *10 + 1 * 4 +1 * 2= 36 v tng gi tr l 3*15 + 1* 6 +1*2 = 83. 2.2.3.Ci t chng trnh: -Mi vt c biu din bi mt mu tin c cc trng: * Ten: Lu tr tn vt. * Trong_luong : Lu tr trng lng ca vt. * Gia_tri: Lu tr gi tr ca vt. * Don_gia: Lu tr n gi ca vt. * Phuong_an: Lu tr s lng vt thep phong n. Danh sch cc vt uc biu din bi 1 mng cc vt. BALO.INP BALO.OUT program Bai_toan_ba_lo_sd_kt_THAM_LAM2; type DoVat = record Ten:string[5]; TLg,GTri,DGia:real; pAn:integer; end; DSDoVat = array[1..10] of DoVat; var dsdv:DSDoVat; n:integer; w:real; f:text; procedure Greedy(var dsdv:DSDoVat; w:real); var i,j:integer; t:DoVat; Begin (1) for i:=2 to n do for j:=n downto i do if dsdv[j].DGia > dsdv[j-1].DGia then begin t:=dsdv[j]; dsdv[j]:=dsdv[j-1]; dsdv[j-1]:=t; end; (2) for i:=1 to n do begin n Mn Hc Lp: 09SPT Nhm: 8 10

Phng php tham lam

dsdv[i].pAn:=chon(dsdv[i].TLg,w); w:= w - (dsdv[i].pAn * dsdv[i].TLg); end; END; 2.2.4.nh gi thut ton R rng cng vic chnh ca thut ton l sp xp mng dsdv theo th t gim dn ca n_gi. Cu lnh (2) ch c phc tp l O(n). Cu lnh (1) dng sp xp mng dsdv, gm 2 cu lnh For lng nhau c phc tp l O(n2). => phc tp ca thut ton l O(n2). Nhn xt: phc tp ph thuc vo thut ton m ta s dng sp xp mng. Chng trnh trn dng k thut ni bt do phc tp c c 2 l O(n ). Trong trng hp s dng k thut QuickSort th phc tp ch l O(nlogn). 3. Bi ton tm ng i ngn nht gia hai nh ca th - thut ton Dijkstra 2.3.1. Pht biu bi ton Cho th c trng s G=(V,E). K hiu w(i,j) l trng s ca cnh (i,j). di ng i = v0v1v2 ... vn-1vn l tng cc trng s L( ) =

w(vi =1

n

i 1

, vi )

Cho hai nh a, z ca th. Bi ton t ra l tm ng i ngn nht t a n z. 2.3.2.Phn tch bi ton Thut gii tm ng i ngn nht t nh a n nh z trong th lin thng c trng s. Trng s ca cnh (i,j) l w(i,j) > 0 v nh x s mang nhn L(x). Khi kt thc thut gii L(z) chnh l chiu di ngn nht t a n z. u vo. th lin thng G=(V,E,w) c trng s w(i,j)>0 vi mi cnh (i,j), nh a v z. u ra. L(z) chiu di ng i ngn nht t a n z, v ng i ngn nht. Thut ton: (1) Khi to: Gn L(a):=0. Vi mi nh x a gn L(x) = . K hiu T := V (2) Chn v T sao cho L(v) c gi tr nh nht, tc l: L(v):=min{L(u) | u T} t: T := T - {v} (3) Nu z = v, kt thc, L(z) l chiu di ng i ngn nht t a n z. n Mn Hc Lp: 09SPT Nhm: 8 11

Phng php tham lam

T z ln ngc theo nh c ghi nh ta c ng i ngn nht. Ngc li nu z v, sang bc (4). Nu gi tr nh nht bc (2) l , kt thc, kt lun khng tn ti ng i t a n z. (4) Vi mi xT k v nu L(x)>L(v) + w(v,x), th gn L(x) := L(v)+w(v,x) V ghi nh nh v cnh nh x sau ny xy dng ng i ngn nht. Quay v bc (2) V d : Tm ng i ngn nht t nh a n nh z trong th sau

- Thc hin bc 1: t T := {a,b,c,d,e,f,g,z} v L(a) := 0, L(b)=L(c)=L(d)=L(e)=L(f)=L(g)=L(z):= Cc tham s c biu din trn th nh sau:

n Mn Hc

Lp: 09SPT

Nhm: 8 12

Phng php tham lam

Cc s trong ngoc l nhn L(x), xT. - Thc hin bc 2: L(a) = min{L(x) xT}=0 suy ra v=a v T := T {a} = {b,c,d,e,f,g,z} - Thc hin bc 3: V z v, sang bc 4 - Thc hin bc 4: nh b v f k nh a. Ta c L(b) := min{L(b),L(a)+2} = 2 L(f) := min{L(f),L(a)+1} = 1 Cc nh khc khng thay i. th c cc nhn nh sau:

Ghi ch. Cc ch ci bn phi mi nh l nhn nh t tr nh nht cc biu thc tnh min. - Thc hin bc 2: L(f) = min{L(x) xT}=1 suy ra v=f v T := T {f} = {b,c,d,e,g,z} - Thc hin bc 3: z v, sang bc 4 - Thc hin bc 4: nh d v g k nh f. Ta c L(d) := min{L(d),L(f)+3} = min{, 1+3} = 4 L(g) := min{L(g),L(f)+5} = min{, 1+5} = 6 Cc nh khc khng thay i. th c nhn nh sau :

n Mn Hc

Lp: 09SPT

Nhm: 8 13

Phng php tham lam

- Thc hin bc 2: suy ra v=b v L(b) = min{L(x) xT}=2 T := T {b} = {c,d,e,g,z} - Thc hin bc 3: z v, sang bc 4 - Thc hin bc 4: nh c, d v e k nh b. Ta c L(c) := min{L(c),L(b)+2} = min{, 2+2} = 4 L(d) := min{L(d),L(b)+2} = min{4, 2+2} = 4 L(e) := min{L(e),L(b)+4} = min{, 2+4} = 6 Cc nh khc khng thay i. th c nhn nh sau :

- Thc hin bc 2: suy ra v=c v n Mn Hc

L(c) = min{L(x) xT}=4Lp: 09SPT Nhm: 8 14

Phng php tham lam

T := T {c} = {d,e,g,z} - Thc hin bc 3: z v, sang bc 4 - Thc hin bc 4: nh e v z k nh c. Ta c L(e) := min{L(e),L(c)+3} = min{6, 4+3} = 6 L(z) := min{L(z),L(c)+1} = min{, 4+1} = 5 Cc nh khc khng thay i. th c nhn nh sau:

- Thc hin bc 2: suy ra L(d) = min{L(x) xT}=4 T = T {d} = {e,g,z} - Thc hin bc 3: z v, sang bc 4 - Thc hin bc 4: nh e k nh d. Ta c L(e) := min{L(e),L(d)+4} = min{6, 4+4} = 6 Cc nh khc khng thay i. th c nhn nh sau:

n Mn Hc

Lp: 09SPT

Nhm: 8 15

Phng php tham lam

- Thc hin bc 2: L(z) = min{L(x) xT}=5 suy ra v=z T = T {z} = {e,g} - Thc hin bc 3: z=v, Kt thc. L(z) = 5 l di ng i ngn nht t a n z. T z ta i ngc li theo cc nh c ghi nh zcba. Ta suy ra ng i ngn nht l : abcz 2.3.3. Ci t chng trnh Procedure Dijkstra; Begin Repeat For v:=1 to n do if (d[v] > d[u]+a[u,v]) {and not (chon[v])}then begin d[v]:=d[u]+a[u,v]; truoc[v]:=u; {str(truoc[v],st); kq:=kq+st+'->'; } end; {Tim dinh u, v thoa man d[u]=mind[z]; z thuoc V va not chon[z]} min:=maxint; For i:=1 to t do if not (chon[i]) and (d[i]< min) then begin min:=d[i]; u:=i; n Mn Hc Lp: 09SPT Nhm: 8 16

Phng php tham lam

end; If min maxint then chon[u]:=true; until chon[t] or (min = maxint); End; 2.3.4. nh gi thut ton: Thut ton m t bi 2 vng lp lng nhau nn phc tp l T(n)=O(n2). 4. Bi ton tm cy ph nh nht theo thut ton Kruskal 2.4.1. Pht biu bi ton Cho G=(V,E) l th v hng lin thng c trng s, mi cnh eE c trng s m(e) 0. Gi s T=(Vt,Et) l cy ph ca th G (Vt=V). Ta gi di m(T) ca cy ph T l tng trng s ca cc cnh ca n:

m(T)= eET

m(e)

.

Bi ton t ra l trong s tt c cc cy ph ca th G, hy tm cy ph c di nh nht. Cy ph nh vy c gi l cy ph nh nht ca th v bi ton t ra c gi l bi ton tm cy ph nh nht. Ch : *Khi nim cy: Cy l th lin thng khng cha chu trnh *Khi nim cy ph: Cho th G=(V,E). Cy T gi l cy ph ca G, nu T l th con cha tt c cc nh ca G. 2.4.2. Phn tch bi ton: + u vo. th G=(V,E) vi trng s. Cc nh k hiu l 1, 2, ... , n Trng s ca cnh (i,j), (i,j)E, k hiu l cij + u ra. Cy ph nh nht T, hoc kt lun th khng lin thng Thut ton: (1) Khi to: T = (V, ) l th gm cc nh ca G v khng c cnh. (2) Kim tra iu kin kt thc: Nu T c n-1 cnh, Kt thc. Kt lun: T l cy ph nh nht. Ngc li sang bc (3) (3) Thm cnh: Chn cnh c trng s nh nht khng thuc T sao cho khi thm cnh ny vo T th khng to ra chu trnh trong T. Quay li bc (2). Ngc li, nu khng chn c cnh thm vo T th kt thc. Kt lun th G khng lin thng. V d: Tm cy ph nh nht ca th sau:

n Mn Hc

Lp: 09SPT

Nhm: 8 17

Phng php tham lam

w(T)=0 (2) Kim tra: S cnh ca T e=0, sang bc (3) (3) hm cnh: Trong cc cnh khng thuc T cnh (c,d) c di nh nht l 1. Thm cnh (c,d) vo T. Ta c T = ({abcdef}, {(c,d)}) , w(T)=w(T)+1=1 v s cnh e=1 (2) Kim tra: S cnh ca T l 1, sang bc (3) (3) Thm cnh: Trong cc cnh khng thuc T cnh (a,c) c di nh nht l 2 v khng cng cc cnh ca T to thnh chu trnh. Thm cnh (a,c) vo T. Ta c T = ({abcdef}, {(c,d),(a,c)}) , w(T)=w(T)+2=3 v s cnh e=2 (2) Kim tra: S cnh ca T l 2, sang bc (3) Thm cnh: Trong cc cnh khng thuc T cnh (e,f) c di nh nht l 2 v khng cng cc cnh ca T to thnh chu trnh. Thm cnh (e,f) vo T. Ta c T = ({abcdef}, {(c,d),(a,c),(e,f)}) , w(T)=w(T)+2=5 v s cnh e=3 (2) Kim tra: S cnh ca T l 3, sang bc (3) (3) Thm cnh: Trong cc cnh khng thuc T cnh (a,e) c di nh nht l 3 v khng cng cc cnh ca T to thnh chu trnh. Thm cnh (a,e) vo T. Ta c: T = ({abcdef}, {(c,d),(a,c),(e,f),(a,e)}) , w(T)=w(T)+3=8 v s cnh e=4 (2) Kim tra: S cnh ca T l 4, sang bc (3) (3) Thm cnh: Trong cc cnh khng thuc T cnh (a,b) c di nh nht l 4 v khng cng cc cnh ca T to thnh chu trnh. Thm cnh (a,b) vo T. Ta c: T = ({abcdef}, {(c,d),(a,c),(e,f),(a,e),(a,b)}) , w(T)=w(T)+4=12 v s cnh e=5 (2) Kim tra: S cnh ca T l 5, Kt thc. n Mn Hc Lp: 09SPT Nhm: 8 18

(1) Khi to: T = ({abcdef}, ), khng c cnh, s cnh e=0, trng s

T

Phng php tham lam

Kt lun: Ta c cy ph nh nht gm cc cnh (c,d),(a,c),(e,f),(a,e),(a,b)

vi tng trng s l w(T) = 12. 2.4.3. Ci t chng trnh const oo=maxint; type mg=array[1..30] of integer; mang=array[1..30] of boolean; var m:integer; {so canh} n:integer; {so dinh} dau,cuoi,trso :mg; {dinh dau,cuoi va trong so canh thu i=1..m } tplt:mg; {so hieu thanh phan lien thong cua dinh i=1..n} choncanh:mang;{danh dau canh i da duoc chon,i=1..m} lienthong:boolean; tongtrongso:integer; sotplt:integer; {so thanh phan lien thong} f:text; Procedure capnhattplt(x,y:integer); var i:integer; Begin for i:=1 to n do if tplt[i]=y then tplt[i]:=x; end; Procedure Kruskal; var i,min,imin:integer; Begin lienthong:=true; repeat n Mn Hc Lp: 09SPT Nhm: 8 19

Phng php tham lam

min:=oo; for i:=1 to m do if (tplt[dau[i]]tplt[cuoi[i]]) and (trso[i]