Bài tập học phần toán rời rạc 2

pdf 110 trang phuongnguyen 2390
Bạn đang xem 20 trang mẫu của tài liệu "Bài tập học phần toán rời rạc 2", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_tap_hoc_phan_toan_roi_rac_2.pdf

Nội dung text: Bài tập học phần toán rời rạc 2

  1. TRƯNGðIHCSƯPHMKTHUTHƯNGYÊN KHOACƠNGNGHTHƠNGTIN BÀITP HCPHNTỐNRIRC2 Trìnhđđàoto : ðihc Hđàoto : Chínhquy/Liênthơng
  2. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 LI NĨI Đ U Cĩthnĩitốnhcrirclàmơntiênquytvàhiuqunhtđngưihc nângcaotưduytốnhctrongphântích,thitkthuttốnvàrènluynknăng lptrìnhvinhngthuttốnphctp.Khơngnhngthnĩcịnlà“cangõ”đ ngưi hc cĩ th tip cn vi rt nhiu modul trong khoa hc máy tính (như Chươngtrìnhdch,lýthuyttínhtốn,Trítunhânto, ).Bàitpđcngc vànângcaokinthctrongmơnhcnày Vnidung,bámsátvichươngtrìnhcanhàtrưngvàhthngbàitp cũngđưcbiênsontheocácchươnglýthuyt.Vimichươngsđưcchiathành 4phn: PhnA.Nhclilýthuyt :tĩmttcáckinthccơbn,cácvídvàcác lưuýhuích,cáckinhnghimtrongkhilptrình PhnB.ðbàitp: đưaracácloibàitpkhácnhau,vicácmcđkhác nhau. PhnC.Bàitpmu:HưngdngiimtsbàitiêubiutrongphnB,cĩ phântíchthuttốnvàcàiđtchươngtrình. PhnD.Bàitptgii :Ngưihcthchinvicgiicácbàitpnày Mongrngtàiliunàyđápngđưcphnnàonhucucahcsinh,sinhviên.ðây làbnđutiênchcchncịnrtnhiusaisĩt.Nhĩmtácgimongnhnđưcs đĩnggĩpcacácthycơgiáo,cácbnsinhviênvàcattcnhngaiquantâmti lĩnhvcnày. HưngYên,tháng7năm2010 BmơnCơngnghphnmm KhoaCơngnghthơngtin TrưngđihcsưphmkthutHưngYên Trang2
  3. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 MCLC Bài1:CáckháinimcơbncaLýthuytđth 5 Mctiêu 5 a.Nhclilýthuyt 5 b.ðbàitp 5 c.Hưngdngii 6 d.Bàitptgii 7 Bài2:Biudinđthtrênmáytính 10 Mctiêu 10 a.Nhclilýthuyt 10 b.ðbàitp 10 c.Hưngdngii 10 d.Bàitptgii 14 Bài3:ðthEuler 15 Mctiêu 15 a.Nhclilýthuyt 15 b.ðbàitp 16 c.Hưngdngii 16 d.Bàitptgii 19 Bài4:ðthhamilton 20 Mctiêu 20 a.Nhclilýthuyt 20 b.ðbàitp 20 c.Hưngdngii 20 d.Bàitptgii 22 Bài5:Tholuncàiđtđth,cácthuttốnlitkêchutrìnhEulervàHamilton. Tholunvbàitpln 23 Mctiêu 23 a.Nhclilýthuyt 23 b.ðbàitp 23 c.Hưngdngii 23 d.Bàitptgii 31 Bài6Thuttốntìmkimtrênđthvàngdng 34 Mctiêu 34 a.Nhclilýthuyt 34 b.ðbàitp 34 c.Hưngdngii 34 d.Bàitptgii 51 Bài7:Câyvàcâykhung 52 Mctiêu 52 a.Nhclilýthuyt 52 b.ðbàitp 53 c.Hưngdngii 54 d.Bàitptgii 55 Bài8:Tholunvcàiđtthuttốntìmcâykhungnhnhttrênđth 58 Mctiêu 58 Trang3
  4. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 a.Nhclilýthuyt 58 b.ðbàitp 58 c.Hưngdngii 58 d.Bàitptgii 70 Bài9,10:Bàitốntìmđưngđingnnht 71 Mctiêu 71 a.Nhclilýthuyt 71 b.ðbàitp 71 c.Hưngdngii 73 d.Bàitptgii 92 Bài12:Bàitốnlungccđitrongmng 97 Mctiêu 97 a.Nhclilýthuyt 97 b.ðbàitp 98 c.Hưngdngii 99 d.Bàitptgii 101 Trang4
  5. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài1:CáckháinimcơbncaLýthuytđth Mctiêu Lưutrđưcđthtrênmáytínhtheonhngphươngphápkhácnhau. Càiđtđưcchươngtrìnhchuynđigiacácphươngpháp. Sinhviêncĩkhnăngthc. a.Nhclilýthuyt Haiđnhx,yđưcgilàcpđnhliênthơng,nuhocgiaxvàycĩítnhtmt xíchnivinhau,hoctntiítnhtmtđưngđitysangx. ðthvơhưng G(V,E) đưcgilàđthliênthơng,numicpđnhcanĩ đuliênthơng. ðthcĩhưng G(V,E) đưcgilàđthliênthơngmch,numicpđnhca nĩđuliênthơng. Biudindnghìnhhc:GiscĩđthG(V,E). Biudinđnh:lycácđimtrênmtphnghaytrênkhơnggiantươngng vicácphntcatpVvàdùngngaykýhiucácphntnàyđghitrêncác đimtươngng. Biudincnh:Nucnhavihaiđnhđulàx,ythìnĩđưcbiudin bngđonthnghaymtđoncongnigiahaiđimx,yvàkhơngđiquacác đimtươngngtrongkhơnggian. Biudincung:nucungacĩđnhđulàx,đnhcuilày,thìnĩđưcbiu dinbngmtđonthnghocđoncongđưcđnhhưngđitxsangyvàkhơng quacácđimtươngngtrunggiankhác. HìnhnhnđưcgilàdngbiudinhìnhhccađthG(V,E).ðơikhi ngưitacũnggidngbiudinhìnhhclàmtđth. b.ðbàitp Bài1ChoGđthgm4phnG1,G2,G3vàG4nhưsau: a.Chratpđnh,cnh(vơhưng,cĩhưng,khuyên, )camiđthđãcho?Ch loiđthđĩ? b.ðthG,G1,G2,G3,G4vàG5cĩliênthơngko?Nuđthkoliênthơnghãy chracácthànhphnliênthơng? Trang5
  6. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 c.ðthG,G1,G2,G3,G4vàG5cĩchutrìnhko?Chracácchutrìnhcađth (nucĩ)? 1 2 5 8 00 G4 3 4 6 7 9 G2 G3 G1 c.Hưngdngii Bài1 a. Tênđth TpđnhV TpcnhE Loiđth G1 1,2,3,4 (1,2);(1,4);(2,3);(2,4);(3,4) Vơhưng G2 5,6,7 (5,6);(5,7);(6,7) Cĩhưng G3 8,9 (8,9) Vơhưng G4 0 G 1,2,3,4,5,6,7,8,9,0 (1,2);(1,4);(2,3);(2,4);(3,4); Hnhp (8,9) (5,6);(5,7);(6,7) b. Tênđth Tínhliênthơng Tênthànhphnliênthơng G1 Cĩ G1 G2 Cĩ G2 Trang6
  7. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 G3 Cĩ G3 G4 Cĩ G4 G Khơng G1,G2,G3,G4 c. Tênđth Cĩchutrình? Tênchutrình G1 Cĩ (1,2,4,1);(1,2,3,4,1);(2,3,4,2) G2 Khơng G3 Khơng G4 Khơng G Cĩ (1,2,4,1);(1,2,3,4,1);(2,3,4,2) d.Bàitptgii Bài1. Mtqunđocĩn(n )hịnđovàhaihịnđobtkìthucqunđođu cĩsđumiđưngngmtimttrongnhưnghịnđonyđunhhơnn.Chng minhrngtmthịnđotùyýthucqunđotacĩthđiđnmthịnđobtkì kháccaqunđobngđưngngm. Bài2 Khivnghhèmibnhcsinhcalp11AtrưngLêHngPhongđu traođiđachviítnhtmtnasbntronglp.Chngminhrngtrongthi giannghhèmibncalp11Ađucĩthbáotintrctiphaygiántipchocác bntronglp. Bài3 Trongmtcuchpcĩđúnghaiđibiukhơngquenhauvàmiđibiunày cĩmtslngưiqueđnd.Chngminhrngluơnluơncĩthxpmtsđi bieetrngichengiahaiđibinĩitrên,đngưingigiahaingưimàanh( ch)taquen. Hưngđn: Trang7
  8. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 ðgiiđưcbàitốntrêntrưchttaxâydngcácđthtươngng,sauđĩvn dngktqucađnhlý4.1,hqu4.1vàđnhlý4.2màsuyraktlun. Xuâydngđth • ðnh:Lycácđimtrongmtphnghaytrongkhơnggiantươngngvicác hịnđothucqunđo(cácbnhcsinhtronglp11A,cácđibiuđn hp). • Cnh:Haiđimx,yđưcnibngmtcnhkhivàchkhihaihịnđox,y cĩđưngngmtrctipvinhau(cácbnx,ytraođiđachchonhau,các đibiux,yquennhau) ðthnhânđưckýhiubng G1 ,( G2 ,G 3) ðthG1 mơttồnblưiđưngngmtrongqunđo ðthG2 mơttồnbquanhtraođiđachtronglp11A ðthG3 mơttồnbquenbittrongcácđibiutrongcácđibiuđn dhp. Vndngktqucácđnhlýđsuyraktlun Dohaihịnđobtkìđucĩtngsđumiđưngngmkhơngnhhơnn,nên haiđnhbtkìcađthG1 đucĩtngbckhơngnhhơnn.Bivytheođnhlý 4.1.đthG1 liênthơng,nênhaihịnđobtkìcĩđưnghmnivinhau. Vìmibnhcsinhtronglp11Atraođiđachviítnhtmtnasbntron lp,nênbccamiđnhca G2 khơngnhhơnmtnasđnhcađth.Khiđĩ ,theohqu4.1.đthG2 liênthơng.Bivyhaiđnhx,yđucĩxích nivi nhau.Khiđĩthơngquacácbntươngngvicácđnhthucxích ,màbntương ngviđnhxbáotinđưcchotươngngviđnhyvàngưcli. Haiđibiukhơngquennhau,thìhaiđnhtươngngkhơngknhau.Miđibiu nàylicĩmtslngưiquenđnhp,nêntrongđthliênthơng G3 cĩđúnghai đnhbclvàhaiđnhnàylikhơngknhau.Khidĩ,theođnhlý4.2,haiđnhnày liênthơngnêncĩítnhtmtxichnigiahaiđnhnày.Gis làmttrong nhngmixíchnigiahaibclnày.Davào taspxpcácđibiutương ngngigiahaingưimàanhchquen. Bài4ChoGđthnhưsau: Chratpđnh,cnh(vơhưng,cĩhưng,khuyên, )camiđthđãcho?Ch loiđthđĩ?ðthcĩliênthơngko?Nuđthkoliênthơnghãychracác Trang8
  9. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 thànhphnliênthơng?ðthcĩchutrìnhko?Chracácchutrìnhcađth(nu cĩ)? Trang9
  10. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài2:Biudinđthtrênmáytính Mctiêu Nêuđưccáccáchbiudinđthvàbiudinđthtrênmáytínhtrênmáytính. ðưarađưcmatrnk,danhsáchcáccnh,cungtươngngvi1đthcho trưc. Lưutrđưcđthtrênmáytínhtheonhngphươngphápkhácnhau. Phântíchđưcbàitốnthcttươngngphnlýthuytđãhc. Sinhviêncĩkhnăngthc. a.Nhclilýthuyt b.ðbàitp Bài1 ChoGđthgm4phnG1,G2,G3vàG4nhưsau: 1 2 5 8 00 G4 3 4 6 7 9 G2 G3 G1 a.BiudincácđthG,G1,G2,G3,G4dưidngmatrnk b.BiudincácđthG,G1,G2,G3,G4dưidngdanhsáchcnh(cung) c.BiudincácđthG,G1,G2,G3,G4dưidngdanhsáchk Bài2 Càiđtchươngtrìnhnhpdanhsáchkcađthtbànphímvàđưadanh sáchđĩramànhình. c.Hưngdngii Bài1 Trang10
  11. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Tênđth a.matrnk b.danhsách c.danhsáchk cnh(cung) G1 1234 Danhsáchcnh 124 1 0101 12 214 2 1001 14 34 3 0001 23 4123 4 1110 24 34 G2 567 Danhsáchcung 567 5 001 56 67 6 101 57 7 000 67 G3 89 Danhsáchcnh 89 8 01 89 98 9 10 G4 0 0 0 G 1234567890 Danhsáchcung 124 1 0101000000 12 214 2 1001000000 14 34 3 0001000000 21 4123 4 1110000000 23 567 5 0000001000 24 67 Trang11
  12. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 6 0000101000 32 89 7 0000000000 34 98 8 0000000010 41 0 9 0000000100 42 0 0000000000 43 56 57 67 Bài2Chươngtrìnhnhpdanhsáchkcađthtbànphímvàđưadanhsáchđĩ ramànhình Phântíchbàitốn : Trongrtnhiuthuttốnlàmvicviđthchúngtathưngxuyênphithchin cácthaotác:Thêmhocbtmtscnh.Trongtrưnghpnày Cutrúcdliu dùngtrênlàkhơngthuntin.Khiđĩnênchuynsangsdngdanhsáchkliên kt(LinkedAdjancencyList)nhưmơttrongchươngtrìnhnhpdanhsáchkca đthtbànphímvàđưadanhsáchđĩramànhình Chươngtrìnhminhha : ProgramAdjList; Const maxV=100; Type link=^node; node=record Trang12
  13. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 v:integer; next:link; End; Var j,x,y,m,n,u,v:integer; t:link; Ke:array[1..Vmax]oflink; Begin Write(‘Chosocanhvadinhcuadothi:’);readln(m,n); (*Khoitao*) forj:=1tondoKe[j]:=nil; forj:=1tomdo begin write(‘Chodinhdauvacuoicuacanh‘,j,’:’); readln(x,y); new(t);t^.v:=x,t^.next:=Ke[y];Ke[y]:=t; new(t);t^.v:=y,t^.next:=Ke[x];Ke[x]:=t; end; writeln(‘Danhsachkecuacacdinhcuadothi:’); forJ:=1tomdo begin writeln(‘Danhsachcacdinhkecuadinh‘,j,’:’); t:=Ke[j]; Trang13
  14. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 whilet^.next<>nildo begin write(t^.v:4); t:=t^.next; end; end; readln; End. d.Bàitptgii Trang14
  15. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài3:ðthEuler Mctiêu Kimtrađưcmtđthbtkỳcĩlàđtheulerhaykhơng. ÁpdngđưcthuttốntìmchutrìnhEuler,đưngEuler,vi1đthchotrưc. Lưutrđưcđthtrênmáytínhtheonhngphươngphápkhácnhau.Càiđt đưcchươngtrìnhchuynđigiacácphươngpháp. CàiđtđưcthuttốnTìmchutrìnhEuler. Càiđtđưcthuttốnduyêtđthduyttheochiusâuhocduyttheochiu rng. Sinhviêncĩkhnăngthc. a.Nhclilýthuyt Chutrình(t.ư.đưngđi)đơnchattccáccnh(hoccung)cađth(vơ hưnghoccĩhưng)Gđưcgilàchutrình(t.ư.đưngđi)Euler.Mtđth liênthơng(liênthơngyuđiviđthcĩhưng)cĩchamtchutrình(t.ư. đưngđi)EulerđưcgilàđthEuler(t.ư.naEuler) . Trang15
  16. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 ðnhlý ðth(vơhưng)liênthơngGlàđthEulerkhivàchkhimiđnhcaGđucĩ bcchn. Hqu ðthliênthơngGlànaEuler(màkhơnglàEuler)khivàchkhicĩđúnghai đnhbcltrongG. ThuttốnvchđưcmtchutrìnhEulertrongđthliênthơngGcĩbccami đnhlàchntheothuttốnFleurysauđây. XutpháttmtđnhbtkỳcaGvàtuântheohaiquytcsau: 1.Mikhiđiquamtcnhnàothìxốnĩđi;sauđĩxốđnhcơlp(nucĩ); 2.Khơngbaogiđiquamtcu,trphikhơngcịncáchđinàokhác. b.ðbàitp Bài1:ðthsaucĩlàđthnaEulerhayđthEulerko?Giithích? c.Hưngdngii Bài1:ðthsaucĩlàđthnaEulerhayđthEulerko?Giithích? Trang16
  17. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 b c a e d G1 ðthG1làđthnaEuler Thtvây,cácđnha,b,ecĩbclà2,4,4làbcchn,cácđnhcvàdcĩbclà3là bcl a b d c G2 ðthG2làđthnaEuler Thtvây,cácđnhcvàdcĩbclà2làbcchn,cácđnhavàccĩbclà1làbc l Trang17
  18. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 a b e d c f g G3 ðthG3khơnglàđthEuler ThtvyG3cĩ3đnha,dvàgcĩbclà1làbcl 1 5 2 4 3 G4 ðthG4làđthnaEulervìtheohqu Thtvây,cácđnh3,4,5cĩbclà2làbcchn,cácđnh1và2cĩbclà3làbcl Bài2 Trang18
  19. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Xutpháttu,tacĩthđitheocnh(u,v)hoc(u,x),gislà(u,v)(xố (u,v)).Tvcĩthđiquamttrongcáccnh(v,w),(v,x),(v,t),gis(v,w)(xố (v,w)).Tiptc,cĩthđitheomttrongcáccnh(w,s),(w,y),(w,z),gis(w,s) (xố(w,s)).ðitheocnh(s,y)(xố(s,y)vàs).Vì(y,x)làcunêncĩthđitheomt tronghaicnh(y,w),(y,z),gis(y,w)(xố(y,w)).ðitheo(w,z)(xố(w,z)vàw) vàtheo(z,y)(xố(z,y)vàz).Tiptcđitheocnh(y,x)(xố(y,x)vày).Vì(x,u)là cunênđitheocnh(x,v)hoc(x,t),gis(x,v)(xố(x,v)).Tiptcđitheocnh (v,t)(xố(v,t)vàv),theocnh(t,x)(xốcnh(t,x)vàt),cuicungđitheocnh (x,u)(xố(x,u),xvàu). d.Bàitptgii Trang19
  20. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài4:ðthhamilton Mctiêu KimtrađưcmtđthbtkỳcĩlàđthHamiltonhaykhơng. ÁpdngđưcthuttốntìmchutrìnhHamilton,đưngHamilton,vi1đth chotrưc. Lưutrđưcđthtrênmáytínhtheonhngphươngphápkhácnhau.Càiđt đưcchươngtrìnhchuynđigiacácphươngpháp. CàiđtđưcthuttốnTìmchutrìnhHalmiton. Càiđtđưcthuttốnduyêtđthduyttheochiusâuhocduyttheochiu rng. Sinhviêncĩkhnăngthc. a.Nhclilýthuyt ðthHamilton(naHamilton)làđthcĩchamtchutrình(đưngđi) Hamilton Hay ðưngđi(x[1],x[2], ,x[n])đưcgilàđưngđiHamiltonnux[i]≠x[j] (1≤i<j≤n) Chutrình(x[1],x[2], ,x[n],x[1])đưcgilàchutrìnhHamiltonnu x[i]≠x[j](1≤i<j≤n) Note!Chotinay,vnchưatìmraphươngphápviđphctpđathcđtìmchu trìnhcũngnhưđưngđiHamiltontrongtrưnghpđthtngquát. CĩthsdngthuttốnquayluiđlitkêchutrìnhHamilton b.ðbàitp Bài1:ðthsaucĩlàđthnaHamiltonhayđthHamiltonko?Giithích? c.Hưngdngii Bài1:ðthsaucĩlàđthnaHamiltonhayđthHamiltonko?Giithích? Trang20
  21. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 b c a e d G1 ðthG1làđthHamilton a b d c G2 ðthG2làđthnaHamilton a b e d c f g G3 ðthG3khơngcĩchutrìnhhayđưngđiHamilton Trang21
  22. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 1 5 2 4 3 G4 ðthG4làđthHamilton,vìcĩchutrìnhHamilton(1,3,5,2,4,1) d.Bàitptgii Trang22
  23. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài5:Tholuncàiđtđth,cácthuttốnlitkêchutrìnhEulervà Hamilton.Tholunvbàitpln Mctiêu Lưutrđưcđthtrênmáytínhtheonhngphươngphápkhácnhau. Chuynđigiacáckiubiudinđthtrênmáytính. Nângcaokhnănglàmvicnhĩm. Rènluyntưduysángto. Phântíchđưcbàitốnthcttươngngphnlýthuytđãhc. Sinhviêncĩkhnăngthc. a.Nhclilýthuyt Xemlitrongbài3vàbài4 b.ðbàitp Bài1TìmchutrìnhEulertrongđthG. Bài2TìmchutrìnhHalmitontrongđthG. c.Hưngdngii Bài1ðbài :CàiđtchươngtrìnhtìmchutrìnhEulertrongđthG. ChođthG=(X,E)tntichutrìnhEuler.Hãytìmchutrình(chitrìnhEulerlà chutrìnhđiquattccáccnhcađth,micnhđiquađúngmtln). Phântíchbàitốn : ðuvào: ðthG ðura:ChutrìnhEuler(nucĩ) 2.Thuttốn: Xutpháttmtđnhubtkỳ,khiđiquacnhnàothìxốcnhđĩkhiđthvà ghilittráisangphi.Khithchinthuttốncnlưuýnugpcnhbccu gia2thànhphnliênthơngthìtaphixốhtthànhphnliênthơngrimixố đncnhbccu. Trang23
  24. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Khixốcnhbccuthìphiloihtcácđnhtrơtri(nghĩalàkhơngkvibtc đnhnàothucđth). Cutrúcdliu: Biudinđthbngmatrnka(i,j),dođĩlưuýkhixốđimtcnhtachvic gána(i,j)=a(j,i)=0,đngthiphilưucnhvaxốvàomtmngkhác:MngCtr. Mnglt:array[1 Nmax]ofintegerdùngtrongthtctìmthànhphnliênthơng (gingnhưmtthuttốntìmthànhphnliênthơngtrìnhbàytrên). Mngdd:array[1 Nmax]ofBoolean,giátrdd[i]chobitđnhibloikhiđ thhaychưa.Nublithìdd[i]=True;ngưclidd[i]=False; Thtc ProcedureEuler_Cycle; Begin STACK:= ∅;CE:= ∅; Chonulamotdinhnaodocuadothi; STACK ←u; WhileSTACK ∅then Begin Y:=dinhdautientrongdanhsachKe(x); STACK ←y; (*loaibocanh(x,y)khoidothi*) Ke(x):=Ke(x)\{y}; Ke(y):=Ke(y)\{x}; Trang24
  25. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 End Else Begin x⇐STACK;CE ⇐x; End; End; End; Chươngtrìnhminhha : Program Chu_trinh_Euler; ConstNmax=100; Emax=100; Vara:array[1 Nmax,1 Nmax]ofinteger; Ctr:array[1 Emax,1,2]ofinteger; dd:array[1 Nmax]ofBoolean; lt:array[1 Nmax]ofinteger; SolC,N:integer; (*BinSolclàscnhcachutrình,stănglênmtđơnvmikhitađiqua mtcnh*). Program Timtplt(k :integer) ; (*Thtcnàytìmthànhphnliênthơnggingnhưthuttốntìnhthànhphn liênthơngtrìnhbàytrênchkhácmtđimlàtachtìmtpltđivicácđnhchưa bloikhiđth*). Vari:integer; Beginlt[k]:=sotp; Trang25
  26. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Fori=1toNdo Ifdd[i]and(lt[i]=0)and(a[i,k]=1)then Begin lt[i]:=sotp; Timtplt(i); End; End; Function KTLT (u,v:integer):Boolean; (*Hàmnàykimtraxemkhitaxốcnh(u,v)đithìđthcịnliênthơngnahay khơng?Nucịnthìstpltluơnbng1.ðâycoinhưkimtracnh(u,v)cĩphilà cnhbccuhaykhơng*). Vari:integer; Begin(*ðutiêntaphixốcnh(u,v)khiđthrimitinhànhkim tra*). a[u,v]:=0;a[u,v]:=0; Fillchar(lt,sizeof(lt),0); (*ðonmãsautìmstpltcađthđimđangxét*). Sotp:=0; Fori=1toNdo Ifdd[i]and(lt[i]=0)then Begin inc(sotp); Timtplt (i); End; Trang26
  27. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Ifsotp=1thenKTLT=True Else Bengin( *nukhơngcĩcnhbccuthìkhikhơiphc licnh(u,v)*). a[u,v]:=1 a[v,u]:=1 KTLT:=False End; End; Procedure Timchutrinh ; Vari,u,dem:integer; Beginsolc:=0; u:=1; (*Chutrìnhcataxutpháttđnh1,tuynhiênđiunàykhơngbtbuc*) Fori=1toNdo dd[i]true; (*Khitottccácgiátrdd[i]=Truenghĩalàchưacĩđnhnàob loi*) REPEAT Dem:=0; (*Binđmlàscnhkviđnhu*) Begin Fori=1toNdo Ifa[u,i]=1then Trang27
  28. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Begin (*xốcnh(u,i)khiđth*) a[u,i]:=0 a[i,u]:=0 (*Loiđnhukhiđth*) dd[u]:=False; (*ðuacnh(u,i)vàochutrình*). inc(solC); Ctr[solC,1]:=u; Ctr[solC,2]:=i; Break; End; End Else (*Ngưclinucịnnhiucnhniviutatìmmtcnhkhơngphilàcnh bccuvàxốcnhđĩđngthiđưanĩvàochutrình*) Ifdem>1then Begin Fori=1toNdo If(a[u,i]=1anddd[i]and KTLT (u,i)then (*Nucnh(u,i)thomãnkhơngphilàcnhbccuthìtachn: Nghĩa lànĩphikviu,chưabloikhiđthvàsaukhixốcnhkđĩ thìđthvnliênthơng.Riêngđiukinth3tadùnghàmKTLT(u,i)đ kimtraxemkhixáocnh(u,i)đithìđthcịnliênthơngnahaykhơng*). Begin (*ðonmãsauxốcnh(u,i)vàđưacnhnày Trang28
  29. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 vàochutrình*). a[u,i]:=0 a[i,u]:=0 inc(solC); Ctr[solC,1]:=u; Ctr[solC,2]:=i; Break; (*SaukhitìmđưcđnhithìtaphithốtkhivịnglpFornukhơngcĩ lnhBreakthìchươngtrìnhschysai*). End; End; (*Chunbchophéptipchutrìnhcachúngtalixutpháttđnh*) u:=1; UNTILdem=0; End; ProcedureGhifile; Varf:text; I:integer; Begin Assign(f,’kq.out’);Rewrite(f); Fori:=1tosolCdo writeln(f,Ctr[i,1],’‘,Ctr[i,2]); Close(f); BEGIN Trang29
  30. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Docfile; Timchutrinh; Ghifile; END. Bài2ðbài :LitkêttccácchutrìnhHamiltoncađth Phântíchbàitốn : Thuttốnsauđâyđưcxâydngdatrêncơsthuttốnquayluichophéplit kêttccácchutrìnhHamiltoncađth. Hìnhdưiđâymơtcâytìmkimtheothuttốnvamơt. ðthvàcâylitkêchutrìnhHamiltoncanĩtheothuttốnquaylui. Trongtrưnghpđthcĩkhơngquánhiucnhthuttốntrêncĩthsdngđ kimtrađthcĩphilàHamiltonhaykhơng. Chươngtrìnhminhha : ProcedureHamilton(k); (*lietkecacchutrinhHamiltonthuduocbangviecp hattriendaydinh(X[1],... ,X[k1])cuadothiG=(V,E)choboidanhsachke:Ke(v),v ∈V*) begin Trang30
  31. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 fory ∈Ke(X[k1])do if(k=N+1)and(y=v0)thenGhinhan(X[1],...,X[n],v0) else ifChuaxet[y]then begin X[k]:=y; Chuaxet[y]:=false; Hamilton(k+1); Chuaxet[y]:=true; end; end; (*Mainprogram*) begin forv ∈VdoChuaxet[v]:=true; X[1]:=0;(*v0lamotdinhnaodocuadothi*) Chuaxet[v0]:=false; Hamilton(2); end. d.Bàitptgii Bàitp1:Hinghbàntrịn TngthưkýðihiđngLiênhpquctriutpmtcuchpcĩNnhà ngoigiaocaNtchcthamgia.Cácđidinngoigiaođưcbtríngiquanh mtbàntrịn.Giamtstchccĩquanhcăngthng,vìvykhơngthxph Trang31
  32. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 ngicnhnhauđưc.Thơngtinvquanhgiacáctchcđưcchodưidng cpsnguyêni,jnugia2tchcnàycĩquanhcăngthng. HãylptrìnhgiúpTngthưkýLiênhpqucbtríchngiquanhbànhp.Các tchcđưcđánhst1tiN,0<N<=500. Dliuvào: tfileCONF.INP,dịngđutiênchasnguyênN,cácdịng sau, mi dịng mtcp s i,jcho bit các đi dinivàjkhơngngicnhnhau đưc.Ktthúclàmtdịngcha2s0. Ktqu:đưarafileCONF.OUT.Nukhơngcĩcáchbtríthamãnyêu cuthìđưarathơngbáoKHONGCO,trongtrưnghpngưcli–đưaradãyN snguyênxácđnhvtríaingicnhaiquanhbàntrịn. Víd: CONF.INPCONF.OUT 111974115821036 14 17 57 107 108 109 34 00 Bàitp2:Kimtrađưng Mttrmqungđưnggiaothơngphichutráchnhiêmvtìnhtrngca mtmnglưigiaothơngnigiacácđimdâncư.Hàngtháng,hphicmt điđikimtramtvịngquakhpmnglưiđxemxéttìnhtrnghinthica cácđưnggiaothơngnhmbáosachakpthinucĩnhucu.Hãyvitchương trìnhnhpvàomnglưigiaothơngvàgiúptrmquytđnhltrìnhcađikim trasaochocĩththămttccácconđưngmàtngchiudàiđonđưngđiqua lànhnht. Bàitp3:Mãđitun Hãycàiđtchươngtrìnhxácđnhltrìnhcaconmãtrênbànc8x8ơbt đutơ(i,j)điquattccácơcabàncvàmiơch1lnduynht. MrngvitrưnghpbànckíchthưcNxN. Bàitp4:Hinghbàntrịn Cĩ12ngưingichung1bàntictrịn.Mingưicĩítnht6ngưiquen. Hãychracáchspxpsaochomingưiđungicnhngưimìnhquen.Tng Trang32
  33. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 quát,hãyspNngưingichungquanhbàntrịnsaochomingưiđungicnh ngưimìnhquen.Bitmingưicĩítnht(N+1)/2ngưiquen. Trang33
  34. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài6Thuttốntìmkimtrênđthvàngdng Mctiêu Trìnhbàyđưcýtưng,cáchcàiđtvàcàiđtđưcthuttốnBFS,DFS. Nêuưunhưccatngthuttốnđivitngloiđth. Phântíchđưcbàitốnthcttươngngphnlýthuytđãhc. Sinhviêncĩkhnăngthc. Rènluyntưduysángto. a.Nhclilýthuyt b.ðbàitp Bài1 Dùngcâyđmơtktquduytchiusâuvàduyttheochiurngtrênđ thsau: Bài2 ChođthG=(X,E)vitpcácđnhXvàtpcáccungE.Xétxemđthcĩ baonhiêuthànhphnliênthơng,mithànhphnliênthơngbaogmnhngđnh nào? Bài3 Thuttốntìmđưngđitheochiusâu(thuttốnduyttheochiusâu) Bài4 Thuttốntìmđưngđitheochiurng(thuttốnduyttheochiurng) c.Hưngdngii Bài1 Dùngcâyđmơtktquduytchiusâuvàduyttheochiurngtrênđ thsau: Trang34
  35. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Duytrng Duytsâu: Bài2 Thuttốntìmsthànhphnliênthơng ChođthG=(X,E)vitpcácđnhXvàtpcáccungE.Xétxemđthcĩ baonhiêuthànhphnliênthơng,mithànhphnliênthơngbaogmnhngđnh nào? Phântíchbàitốn : 3 5 Trang35
  36. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 82 63 1 2 27 92 1 1 31 41 ðthvicácthànhphnLT ðuvào: a.Biudinđthbngmatrnk Dothi.txt Kq.txt 9 Sotphcuadothila:3 011100000 TPLT1baogomcacdinh:1234 101000000 TPLT2baogomcacdinh:58 110100000 TPLT3baogomcacdinh:679 101000000 000000010 000000101 Trang36
  37. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 000001001 000010000 000001100 Cutrúcdliu ðutiênđánhscácđnhlà0 (Dùngmtmngbiudincácthànhphnlàmngchúngtacntìm,banđu tagánttccácgiátrcamngbng0) LyrađnhLgánlt[i]:=1 +Duytcácđnhkca1gpđnhtiptheolàđnh2chưađưcđánhsta đánhs1gánlt[2]:=1sangbưctiptheo. +Duytcácđnhkca2,gpđnh1đưcđánhsrinênbqua,gpđnh chưađánhsnênđánhs1,gánlt[4]:=1sangbưctiptheo. +Duytcácđnhkca4,gpđnh1đánhsrinênbqua.Gpđnh2đánh srinênbqua.Gpđnh3chưađánhsnênđánhs1,lt[3]:=1sangbưctip theo. +Duytcácđnhkca3gptồncácđnhđánhsrinênkhơngđánhs nadngvicđánhs. Nhưvytađãtìmđưc1thànhphnliênthơng. Lyramtđnhchưađánhsvídtalyđnh6 Talilàmnhưtrêntalitìmđưcthànhphnliênthơngkhác. Nhưvytarútrađưc Cutrúcdliucabàitốnnày. ðiviđthvàcáccnhthìtacĩthdùngmatrnkhocdanhsáchk,và nênđctfileđđơnginhố. Dùngmtmnglt[1 n]biudinTPLTlt[i]:=Knuđnhithucthànhphn liênthơng. Chươngtrìnhminhha : Trang37
  38. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 a.Biudinđthbngmatrnk. a(i,j)=1nu2đnhivàjknhauvà=0nu2đnhivàjkhơngknhau. Programtim_thanh_phan_lien_thong; ConstNmax=100; Typemang=array[1 Nmax]ofinteger; Varlt:mang; a:array[1 Nmax,1 Nmax]ofbyte; N:integer; Sotp:integer; (*Thtcnàyđctfiledothi.txtsNlàsđnhcađthmatrnkbiudinđ th*) ProcedureDocfile; Vari,j:integer; f:text; Begin Assign(f,’dothi.txt’);reset(f); Readln(f,N); Fori:=1toNdo Read(f,a[i,j]); Close(f); End; (*Thtcđquynàydùngđtìmcácđnhthucmtthànhphnliênthơng*) ProcedureDocfile; Vari,j:integer; Trang38
  39. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Beginlt[k]:=sotp; (*Duytquacácđnhcađth*) Fori:=1toNdo (*Nuđnhikvikvàchưađánhduthìtagithtcđquy.Tìm LTnghĩalàliđánhduvàduytcácđnhkcai*) lf(lt[i]=0)and(a[i,k]=1)then TimLT(i); End; (*Thtcnàyđưccoinhưbưc2trongvd*) ProcedureTimTPLT; Vari:integer; Beginsotp:=0; (*Duytcácđnhchưađưcđánhdu*) Fori:=1toNdo (*Nucĩmtđnhchưathucthànhphnliênthơngnàolt[i]=0nghĩa làtìmramtthànhphnminêntatăngslưngthànhphnvàbtđutađi tìmthànhphnliênthơngmiđĩbngthtcđquyTimLT(i)*) lflt[i]=0then Begin Inc(sotp); TimLT(i); End; End; (*Thtcinracácthànhphnliênthơngcađth*) Trang39
  40. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 ProcedureGhifile; Vari,j:integer; Begin Writeln(‘sothanhphanlienthongcuadothil:;sotp); Fori:=1tosotpdo Begin Writeln(‘TPLT’,i,’baogomcacdinh:’); Forj:=1toNdo (*nujthucthànhphnliênthơngthithìinra*) lflt[j]=ithen Write(J,’‘); Writeln; End; Readln; End; BEGIN Docfile; TimTPLT; Ghifile; END. b.Biudinđthbngdanhsáchcnh Matrncachúngta(vídtrên)đưcvitdưidng: 2 3 4 9 Trang40
  41. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 1 3 0 1234 240 213 130 324 800 413 7 9 0 58 69 0 679 500 769 6 7 0 85 967 a[i,9]làslưngcácđnhkviđnhi; a[i,j]chínhlàcácđnhkvicácđnhi(j=1,2,3, ) KhiđĩthtcDocfileđưcvitlinhưsau: ProcedureDocfile; Vari,j,t:integer; f:text; BeginAssign(f,’dothi.txt’);reset(f); Readln(f,N); Fori:=1tosotpdo Bengin Read(f,t); Whilenoteoln(f)do Begin Read(f,t); Trang41
  42. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Inc(j); a[i,j]:=t; End; a[i,0]:=j; End; Close(f); End; ThtcGhifilevàthuctcTimTPLTkhơngcĩgìthayđi ThtcTimTPLTthayđinhưsau: ProcedureTimLT(k:integer); Vari:integer; Begin Lt[k]:=sotp; Fori:=1toa[k,0]do Iflt[a[k,i]]=0then TimLT(a[k,i]); End; Bài3 ðbài :Thuttốntìmđưngđitheochiusâu(thuttốnduyttheochiu sâu).TìmđưngđigiahaiđnhxpvàkttrênđthGvơhưngvàkhơngcĩtrng s. Phântíchbàitốn : Trang42
  43. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Thuttốncabàitốnnàycũnggingnhưthuttốntìmthànhphnliên thơngcađth.Trongphn Cutrúcdliucĩdùngmngtrưcđlưuđưngđi tđnhxpđnđnhkt. Chươngtrìnhminhha : ProgramDuyetchieusau; ConstNmax=100; TypeMang=array[1 Nmax]ofinteger; Matran=array[1 Nmax,1 Nmax]ofinteger; Vara:Matran; so,duong:mang; N:integer; (*thtcđctpvàghitpgingnhưbàitrưcchđcthêmhaiđnhxpvàkt *) ProcedureDuyet(k:integer); Vari:integer; Begin Fori:=1toNdo (*Duytcácđnhkvik*) lf(a[i,k]=1)and(truoc[i]=0)then Begin(*tagánđnhđãđitrưcđnhilàđnhk*) Truoc[i]:=k; Duyet(i); End; End; Trang43
  44. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 ProcedureDuyetsau; Vari:integer; Begin Fori:=1toNdotruoc[i]:=0 Truoc[xp]:=1; Duyet(xp); End; ProcedureTimduong; (*thtcnàygingthtctìmngưctrongduytchiurng,nhưngchtìm mtđưngđingnnhttrongrtnhiuđưngđingnnhttxpđnkt*). Var i,u:integer; Begin sold:=0; u:=kt; REPEAT Inc(sold); Duong[sold]:=u; U:=truoc[u]; UNTILu=1; End; BEGIN Doctiep; Duyetsau; Timduong; Trang44
  45. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Ghitep; END. Bài4ðbài :Thuttốntìmđưngđitheochiurng(thuttốnduyttheochiu rng).ChođthvơhưngG=(X,E).Hãytìmđưngđingnnhtgia2đnhxpvà ktchotrưc(đưngđingnnhtlàxíchcĩ2đulàxpvàktvàđiquaítcunghoc ítđnhnht). Phântíchbàitốn Sdnghàngđiđgiiquytbàitốnnày.Cáchđưamtđnhcađthvà ly1đnhrasdngphituântheomtquytcnhtđnh. Sdngmtmngđánhduđưngđitruoc:array[1 Nmax]ofinteger Khiđitđnhxpmàmuncĩđưngđingnnhtđnuthìtaphiquađnh truoc [u],muncĩđưngđingnnhtđntruoc[u]thìtaphiđiqua truoc [ truoc [u]], Yêucu:Sauthtcduyttheochiurngthìtaphitìmđưcmng truoc. Khitogiátrbanđucamng truoc bng0. B1:Khitohàngđi. ðưaxpvàohàngđi.Gán truoc [xp]:=1 B2:REPEAT Ly1đnhrakhihàngđi.Gisđnhu. Duytnhngđnhkviu,gisduytđnđnhv. Nutrưc[v]=0thìtađưavvàohàngđiđngthigántruoc[v]:=u. Nghĩalàmunđiquavthìphiđiquađnhtrưcđĩlàu; B3:Kimtravcĩphilàkthaykhơng,nucĩthìthốtkhithtc; Nutruoc[v] 0 Trang45
  46. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Hàngđirngnghĩalàkhơngcịnđnhnàotronghàngđi. Trênđâylàsưncathtcduytchiurng,nusaunhngbưcnàymà truoc[kt]=0nghĩalàkhơngtntiđưngđitxpđnkt. B4:(Timđưngđithơngquamng truoc) Dùngmtmng duong :array[1 Nmax]ofintegerđbiudincácđnhnm trênđưngđi.Mngnàythhinđưngđingưctktvxp.Dođĩkhiinktqu ramànhìnhtaphiinngưctcuimng. Khiđuu:=kt; sold:=0(slưngđnhtrênđưngđikhiđubng0) REPEAT Tăngsoldlên1đơnv gán duong [sold]:=u; đingưclibưctrưcu:=truoc[u]; UNILTu=1 B5:Inktqu. Thuttốnhơikhĩhiu.Bnsthyrõtrongphncàiđtchươngtrình. Cutrúcdliu Mng2chiua(ij)biudinmatrnliênthuccácđnhvàcáccungcađ th. Mng truoc vàmng duong mơtnhưtrên. Mngq(quene)mơtcutrúccahàngđi. Thtc ProgramDuyet_chieu_rong; ConstNmax=100; Typemang=array[1 Nmax]ofinteger; Trang46
  47. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Var q,truoc,duong:mang; A:array[1 Nmax,1 Nmax]ofbyte; Sold;N,xp,kt,qf,ql:integer; (*qfqueuefirstlàconchyđuhàngđi qlqueuelastlàconchycuihàngđi*) Chươngtrìnhminhha : Procedure Docfile; Varij:integer; f:text; Begin Assign(f,‘dothi.txt’);reset(f); Readln(f,N); Fori:=1toNdo Forj:=1toNdo Read(f,a[ij]); Close(f); Readln(f,xp,kt); End; (*Thtckhiđnghàngđi*); ProcedureInitQ; Begin ql:=1 qf:=0 Trang47
  48. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 End; (*Thtcđưamtđnhvàocuihàngđi*) PrcedurePut(k:integer); Begin q[ql]:=k; inc(ql); End; (*Hàmlymtđnhrakhihàngđi–lyđuhàngđi*) FunctionGet:integer; Begin Get:=q[qf]; inc(qf); End; (*Hàmkimtrahàngđirnghaykhơng*) FunctionQempty:Boolean; Begin Qempty:=(qf>ql); End; (*Thtcduytchiurng*) ProcedureDuyetCR; Trang48
  49. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Varv,u:integer; Begin InitQ ; Put (xp; Truoc [xp]:=1; REPEAT U:=Get; (Duytcácđnhkcau*) Forv:=1toNdo If(a[u,v]=1and(truoc[v]=0)then Beign (*Nuvkviuvàchưađiquathìđánhduvàđưavvàohàngđi*) Truoc[v]:=u; Put(v); End; UNILT Qempty or(truoc[kt]<>0); End; (*Thtctìmmngđưngđitxpđnktdngngưc*) Procedure Timduong ; Varu:integer; Beginsold:=0; u:=kt; REPEAT Trang49
  50. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 inc(sold); Duong[sold]:=u; u:=truoc[u]: UNILTu=xp; End; (*Thtcinktquramànhình*) Procedure Inkq ; Vari:integer; Begin Iftruoc[kt]=0then Writeln(‘khongcoduongditư‘,xp,‘den’,kt) else BeginWriteln(‘Duongditư‘,xp,‘den’,kt); (*Khiinphiinngưcmngđưngtsoldtrv1*) Fori:=solddownto1do Write(duong[i],‘‘); End; Realn; End; BEGIN Docfile; Trang50
  51. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 DuyetCR; (*Chcchnrngnucĩđưngđiđnđnhktthìtamitìmmngđưng*) Iftruoc[kt]<>0then Timduong; Inkq; END. d.Bàitptgii Trang51
  52. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài7:Câyvàcâykhung Mctiêu Mctiêucabàinàyngưihccĩkhnăng:Xácđnhđưcmtđưngđi,mt chutrìnhtrongđthbtkỳ. Biudinđthtrênmáytínhbngcácphươngphápkhácnhau. ÁpdngđưcthuttốnKruskalvàPrimđtìmcâykhungnhnhtngvimt đthxácđnh.Càiđtđưcthuttốn. Phântíchđưcbàitốnthcttươngngphnlýthuytđãhc. Sinhviêncĩkhnăngthc. a.Nhclilýthuyt Cácđnhnghĩa:đth,cnh,cung,đnhk,cây,câykhung. Cácphươngphápbindinđthtrênmáytính ðnhlý3.4.2: ChoTlàmtđthcĩn ≥2đnh.Cácđiusaulàtươngđương: 1) Tlàmtcây. 2) Tliênthơngvàcĩn −1cnh. 3) Tkhơngchachutrìnhvàcĩn −1cnh. 4) Tliênthơngvàmicnhlàcu. 5) GiahaiđnhphânbitbtkỳcaTluơncĩduynhtmtđưngđisơcp. 6) Tkhơngchachutrìnhnhưngkhithêmmtcnhmithìcĩđưcmtchu trìnhduynht. Bàitốncâykhungnhnht ThuttốnKruskalviýtưng“chndn” B1:Chncnhtrngsnhnht B2:Chncnhtrngsnhnhttrongcáccnhcịnli B3:Chncnhtrngsnhnhttrongcáccnhcịnli,màkotothànhchu trình. Trang52
  53. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Lplibưc3chotikhichnđưcn1cnh. ThuttốnPrimviýtưng“lanta”.GislantatđnhA B1:ChncnhtrngsnhnhtthucA(tccĩ1đulàđnhA) Gislàcnh(A,B) B2:ChncnhtrngsnhnhttrongcáccnhcịnlithucAhocB(tccĩ 1đulàđnhAhocB).Gislàcnh(C,B)hoc(C,A) B3:ChncnhtrngsnhnhttrongcáccnhcịnlithucAhocBhoc C,màkotothànhchutrình. Lplibưc3chotikhichnđưcn1cnh. b.ðbàitp Bàitp1 :Chođthvơhưngcĩtrngssau: Biudinđthdngmatrnk,danhsáchcnh(cung),danhsáchlienkt. ÁpdngthuttốnPrim(xutpháttiđnh1)hocKruskaltìmcâykhungnhnht chođthtrên. Bài2ÁpdngthuttốnKruskalđtìmcâykhungnhnhtcađthchotrong hìnhdưiđây: Trang53
  54. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 c.Hưngdngii Bàitp1 : ThuttốnPrimviýtưng“lanta”,xutpháttđnh1“lanta”tacĩcáccnh tothànhcâykhungnhnhtlnlưtlà:(1,5);(5,4);(4,2)và(4,3) GiV(E)làtpcácđnh(cnh)cađth, Vt(Et)làtpcácđnh(cnh)cacâykhungnhnhtcntìm. ThuttốnPrimvicácbưcthtđưcmiêuttrongbngsau: Bưc E Et Vt Khito {} {1} 1 {(1,5)} {1,5} 2 {(1,5);(5,4);} {1,5,4} 3 {(1,5);(5,4);(4,2)} {1,5,4,2} 4 {(1,5);(5,4);(4,2)và {1,5,4,2,3}=V=>dng (4,3)} Chúý: ThuttốnKruskalviýtưng“chndn”cácđnhcĩtrngsnhnhttrongcác cnhcịnli,nukotothànhchutrình.Quátrìnhlplichotikhichnđưcn1 cnh. Cáccnhđưcchnđtothànhcâykhungnhnhtlnlưtlà:(2,4);(4,5);(4,3)và (1,5) Trang54
  55. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 ThuttốnPrimviýtưng“lanta”,xutpháttđnh4 “lanta”tacĩcáccnhtothànhcâykhungnhnhtlnlưtlà:(4,2);(4,5);(4,3) và(1,5) Vicácbưctht(tlàm) Bài2: Bưckhito.ðtT:=Ỉ.Spxpcáccnhcađththeothtkhơnggimca đdàitacĩdãy: (3,5),(4,6),(4,5),(5,6),(3,4),(1,3),(2,3),(2,4),(1,2) dãyđdàitươngngcachúng 4,8,9,14,16,17,18,20,23. balngpđutiêntalnlưtbsungvàotpTcáccnh(3,5),(4,6),(4,5).Rõ ràngnuthêmcnh(5,6)vàoTthìstothành2cnh(4,5),(4,6)đãcĩtrongTchu trình.Tìnhhungtươngtcũngxyrađivicnh(3,4)làcnhtiptheocadãy. Tiptheotabsungcnh(1,3),(2,3)vàoTvàthuđưctpTgm5cnh: T={(3,5),(4,6),(4,5),(1,3),(2,3)} Chínhlàtpcnhcacâykhungnhnhtcntìm. d.Bàitptgii Bàitp1: Biudinđthdngmatrnk,danhsáchcnh(cung),danhsáchlien kt. ÁpdngthuttốnPrimvàKruskaltìmcâykhungnhnhtchođthsau: Trang55
  56. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bàitp2:Mngantồn ChomtmngN(N<=20)máytínhđưcđánhst1đnN.Sơđmng đưcchobihgmMkênh(đon)nitrctipgiamtscpmáytrongmng, mkênhtươngngvimcp.Chobitchiphítruyn1đơnvthơngtintheomi kênhcamng. Ngưitacnchuynmtbcthơngđiptmáysđnmáyt.ðđmboan tồn,ngưitachuynbcthơngđinnàytheohaiđưngtruyntinkhácnhau(tc khơngcĩkênhnào)camngđưcsdngtrongchaiđưngtruyntin;chophép haiđưngtruyntincùngđiquamtsmáytính).Chiphícamtđưngtruyn đưchiulàtngchiphítrêncáckênhcanĩ.ðơngiáđưngtruyntmáyssang máytđưctínhnhưsau: Vihaimáysvàt,cùngbcthơngđipcĩđdàilà1đơnvthơngtin,đơn giátruynchocp(s,t)đưctínhbngtngchiphíchuynthơngđipantồn (bngtngchiphícahaiđưngtruyntin)lànhnht. Mngtruyntinnĩitrênthamãntínhchtantồntheonghĩalàtmtmáy btkỳluơntruynđưc(mtcáchantồn)thơngđiptimtmáybtkỳkhác.Khi mtmngantồn,ngưitatínhđưcđơngiácamnglàtngđơngiámiđưng truyntmtmáybtkỳtimtmáybtkỳkhác. Trang56
  57. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 MatrnđơngiácamnglàmnghaichiuAcĩNdịngvàNct,màgiá trphntA[i,j]chínhlàđơngiátmáyisangmáyj. Câu1: Chotrưcmtmng,hãykimratínhantồncamngđĩ. Câu2: Khimngkhơngantồnđưcphépbsungmtskênhtruynđ nĩtrthànhantồn.ðơngiámikênhtruynbsungtheođưccoibnghailn giátrccđiđơngiácáckênhđãcĩ.Mikênhbsungđưccoicĩđơngiánhư nhau.Hãytìmcáchbsungcáckênhmimàđơngiámnglànhnht. Câu3: Khimngantồnhocsaukhibsungkênhđmngantồn,hãyin rađơngiámngvàmatrnđơngiá. Dliuvào: chotrongfileINP.B2vicutrúcnhưsau: Dịngđutiênghi2sn,mcáchnhaubiducách. Midịngthitrongsmdịngtiptheoghithơngtinvkênhnithica mnggm3sd[i],c[i],g[i]trongđĩd[i],c[i]làchscahaimáytươngngvi kênhnàyvàg[i](nguyêndương)làchiphíđtruynmtđơnvthơngtintmáy d[i]đnmáyc[i]theokênhnày.Cácgiátrg[i]chotrưckhơngvưtquá40(và nhưvyđơngiácáckênhbsungkhơngvưtquá80). Ktqu:ghirafileOUT.B2theoquicáchsau: Dịngđutiênghi1snguyênpthhinmngcĩantồnhaykhơngvàpcĩý nghĩalàslưngkênhcnbsung.p=0cĩnghĩamngantồn;p>0cĩnghĩamng khơngantồnvàcnbsungpkênhnađmngantồnvichiphíbsungít nht. pdịngtiptheoghipkênhbsung.Cáchghinhưtrongfiledliuvào. Dịngtiptheoghiđơngiácamngantồn. Ndịngtiptheoghimatrnđơngiácamngantồn:mihàngcama trnghitrênmtdịng. Bàitp3:Xâydngđưngngnưc Cĩ1trmcpnưcvàNđimdâncư.Hãyxâydngchươngtrìnhthitktuyn đưngngnưccungcpđnminhàsaochotngchiudàiđưngngphidùng làítnht.Gisrngcácđưngngchđưcnigia2đimdâncưhocgia trmcpnưcviđimdâncư. Trang57
  58. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài8:Tholunvcàiđtthuttốntìmcâykhungnhnhttrênđth Mctiêu Càiđtđưcthuttốnxâydngtpcácchutrìnhcơbn. CàiđtđưcthuttốnPrim,Kruskalđđưaracâykhungnhnhtcađthcho trưc. Mrngýtưng,mrngthuttốnPrim. Càiđtđưcthuttốnxâydngtpcácchutrìnhcơbn. Phântíchđưcbàitốnthcttươngngphnlýthuytđãhc. Sinhviêncĩkhnăngthc. Rènluyntưduysángto. a.Nhclilýthuyt b.ðbàitp Bài1 TìmcâybaotrùmnhnhtcađthGdungthuttốnKruskal Bài2 TìmcâybaotrùmnhnhtcađthGdungthuttốnPrim c.Hưngdngii Bài1ðbài :TìmcâybaotrùmnhnhtcađthG Phântíchbàitốn : Trưchttaphixétvídsau: 8 3 2 1 7 2 37 5 1 8 Trang58
  59. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 2 1 4 1 7 6 61 9 Tưtưngcathuttốnlàđưatngcnhvàocâybtđutnhngcnhcĩtrngs nhnhtvàlàmchođnkhicâybaogmttccácđnhcađth. GisTlàcâybaotrùmcntìm.VàtpVlàtpbaogmcáctpGicĩtínhcht nhưsau: G icĩphntlàcácđnhcađthmàchúngđưcnivinhaubicáccnhđã đưcđưavàoT.TmtđnhthucG iluơncĩđưngđiđnmtđnhkháccũng thucG i. GiaocaG i vàG J bngrng. ViđnhnghĩanhưtrêntanhnthyrõràngrngmimttpG ithuctpVlà mtcâybaotrùmconnhnht.Nhưvythuttốncachúngtanhưmtbàitốn quynplàgpnhưngcâybaotrùmnàythànhnhngcâytrùmlnhơnchođnkhi nĩgmttccácđnhcađthvàđươngnhiêntaphininhngcâybaotrùmG i nàybngnhngcnhcĩtrngsnhnht.KtthúckhiV={{1,2,3 ,n}}={X}; Banđu: +Câybaotrùmcađthlàrngnghĩalàchưacĩcnhnàođưcđưavàocâybao trùm.(T=). +G i chínhlànhngđnhcađth=>V={{1},{2},{3} ,{n}} Thuttốnđưcvitcthvivídtrênnhưsau: KhitoT={} V={{1},{2},{3},{4},{5},{6},{7},{8},{9}} ðưacnhnhnht(1,2)vàocâykhiđĩ1đưcnivi2nênthay{1}và{2} trongVbng{1,2} Trang59
  60. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 T={(1,2)} V={{1},{2},{3},{4},{5},{6},{7},{8},{9}} ðưacnh(4,5)vàocây: T={(1,2);(4,5)} V={{1,2},{3},{4,5},{5},{6},{7},{8},{9}} ðưacnh(5,6)vàocây: T={(1,2);(4,5);(5,6)} V={{1,2},{3},{4,5,6},{7},{8},{9}} ðưacnh(6,9)vàocây: T={(1,2);(4,5);(5,6);(6,9)} V={{1,2},{3},{4,5,6,9},{7},{8}} ðưacnh(1,4)vàocây: T={(1,2);(4,5);(5,6);(6,9);(1,4)} V={{1,2,4,5,6,9},{3},{7},{8}} ðưacnh(5,7)vàocây: T={(1,2);(4,5);(5,6);(6,9);(1,4);(5,7)} V={{1,2,4,5,6,9},{3},{8}} ðưacnh(3,5)vàocây: T={(1,2);(4,5);(5,6);(6,9);(1,4);(5,7);(3,5)} V={{1,2,3,4,5,6,7,9};{8}} ðưacnh(7,8)vàocây: T={(1,2);(4,5);(5,6);(6,9);(1,4);(5,7);(3,5);(7,8)} V={{1,2,3,4,5,6,7,8,9}} KtthúcvìV={X}; Trang60
  61. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Chúý:Thtchncáccnhđưavàocâylàưutiêncáccnhcĩtrngsbéhơn. Cutrúcdliu Tabiudinđthdưidnglitkêcáccung(chápdngchođthnh) Nhưvydungmtmnghaichiu: e:array[1 Emax,1 3]ofInteger vie[i,3]làtrngscacung(e[i,1],e[i,2], ,emax) MngT:array[1 Emax,1 2]ofIntegerbiudincáccnhđưcđưavàoT. DùngbinsolTđxácđnhslưngcnhđãđưavàocâyT; (khitosolT:=0nghĩalàcâyT=) BiudinVlàtphpcacáctphprtphctp,dođĩtadùngmt Cutrúcd liuđơnginđmơphngtpVnhưsau: MngtapV:array[1 Nmax]ofinteger TrongđĩhaiđnhivàjthuccùngmttpG knàođĩnunhưtapV[i]=tap[j] NhưvybanđugiátrcamngtapVlàtapV[i]gánbngi; mibưckhitaghépcácđnhca2tpG k vàG hthànhmttpthìtachvicgán ccácgiátrcatpG kbnggiátrcatpG h. VídviN=10; mtbưcnàođĩ mngtapV=[1,2,2,6,6,2,1,4,4,10] tahiulàV={{1,7};{2,3,6},{4,5},{8,9},{10}} đnbưctiptheotađưacnh(4,6)vàocâynghĩalàcngp2tp{2,3,6}và{4,5} thànhmt.TagántapV[4]=tapV[2;] tapV[5]=tapV[2;]; KhiđĩmngtapV=[1,2,2,2,2,2,1,4,4,10] ðiunàyrtcĩlikhitagphaitphpconvinhau. Trang61
  62. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Vitồnbdliuđưcmơtnhưtrêntacĩphncàiđtchươngtrình: Chươngtrìnhminhha : Programkruskal; ConstNmax=100; Emax=1000; Typemangcanh=array[1 Emax,1 2]ofinteger; Dinh=array[1 Nmax]ofinteger; Vare,T;Mangcanh; TapV:Dinh; N,solE,solT:integer; (*solElàscnhcađthcịnsolTlàscnhđưcđưavàoT*) PrrocudureDoctep; (*Dliuvàogmcĩ: DịngđutiênchasN Tdịngthhaitrđimidịngcha3snguyênlà2đnhcamtcnhvàtrng scacnhđĩ. *) Varf:text; i,j,k:integer; BeginAssign(f’,cung.txt’);Reset(f); Readln(F,N); SolE:=0; Whilenoteof(f)do Trang62
  63. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 beginRead(f,i,j,k); Inc(solE); e[solE,1]:=i; e[solE,2]:=j; e[solE,3]:=k; End; Close(f); End; ProcedureSapxep; (*Dùngphươngphápspxpnibtđspxpcáccnhtheothttrngst nhtiln(*) Varij:integer; Beign Fori:=1tosolE1do Forj:=i+1tosolEdo Ife[i,3]>e[j,3]then Doicho(i,j); End; ProcedureDoicho(i,j;integer); Vartemp:integer; Begin Temp:=e[i,1]; Trang63
  64. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 e[i,1]:=e[j,1]; e[j,1]:Temp; Temp:=e[i,2]; e[i,2]:=e[j,2]; e[j,2]:=Temp; Temp:=e[i,3]; e[i,3]:=e[j,3]; e[j,3]:=Temp; End; ProcedureTimCay: Vari,k,temp:integer; Begin solT:=0;(*T=*) Fori:=1toNdo TapV[i]:=i; K:=0; While(notKttapV)and(K tapV[e[k,2]]then (*Nu2đnhe[k,l]vàe[k,2]chưathuccùng1câyconthìtamiđưavàocâyT Trang64
  65. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 vàthchintip.Ngưclithìbquacnhnàyđtránhtothànhchutrìnhtrong cây*) Begin Inc(solT); T[solT,1]:=e[k,1]; T[solT,2]:=e[k,2]; (*ðngnhtgiátrtrong2tpconcha2đnhe[k,1]vàe[k,2]caV*).ðưacnh vàocâykhung. temp:=tapV[e[k,2]]; Fori:=1toNdo IftapV[i]=tempthen TapV[i]:=TapV[e[i,2]]; End; End; End; FunctionKTtapV:Boolean; (*HàmkimtraxemcácgiátrcatpVcĩbngnhauhaykhơng*) Vari:integer; BeginKTtapV:=True; Fori:=2toNdo IftapV[i]<>tapV[i]then BeginKTtapV:=False; Exit; Trang65
  66. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 End; End; ProcedureGhiTep; (*TachvicđưacâyTramànhình*) Vari:integer; begin Writeln(‘CaccungthuoccaybaotrumnhonhatTla:’) Fori:=1tosolTdo Writeln(T[i,l];‘‘;T[i,2]; Readln; End; BEGIN DocTep; Sapxep; TimCay; GhiTep; END. Bài2 ðbài: TìmcâybaotrùmnhnhtcađthG Phântíchbàitốn : GisTlàcâybaotrùmtithiucnxâydng.Gixtabtđutđnhu. GiUlàtpcácđnhkvicácđnhcĩcungnivicâyT; KhitoU=u; Trang66
  67. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 T=; B1:Chn(u,v)làcnhcĩtrngsbénhtviu B2:ðưađnhvvàotpU; B3:NuU=Xthìktthúc;ngưclithìquaylibưc1; Cutrúcdliu Tabiudinđthdưidnglitkêcáccung(chápdngchođthnh) Nhưvydungmtmnghaichiu: e:array[1 Emax,1 3]ofInteger vie[i,3]làtrngscacung(e[i,1],e[i,2], ,emax) MngT:array[1 Emax,1 2]ofIntegerbiudincáccnhđưcđưavàoT. DùngbinsolTđxácđnhslưngcnhđãđưavàocâyT; (khitosolT:=0nghĩalàcâyT=) BiudinVlàtphpcacáctphprtphctp,dođĩtadùngmt Cutrúcd liuđơnginđmơphngtpVnhưsau: MngtapV:array[1 Nmax]ofinteger TrongđĩhaiđnhivàjthuccùngmttpG knàođĩnunhưtapV[i]=tap[j] NhưvybanđugiátrcamngtapVlàtapV[i]gánbngi; mibưckhitaghépcácđnhca2tpG k vàG hthànhmttpthìtachvicgán ccácgiátrcatpG kbnggiátrcatpG h. VídviN=10; mtbưcnàođĩ mngtapV=[1,2,2,6,6,2,1,4,4,10] tahiulàV={{1,7};{2,3,6},{4,5},{8,9},{10}} đnbưctiptheotađưacnh(4,6)vàocâynghĩalàcngp2tp{2,3,6}và{4,5} thànhmt.TagántapV[4]=tapV[2;] Trang67
  68. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 tapV[5]=tapV[2;]; KhiđĩmngtapV=[1,2,2,2,2,2,1,4,4,10] ðiunàyrtcĩlikhitagphaitphpconvinhau. TpUlàtpcácđnhcĩcungniviT,khaibáoT,X:setof1 Nmax; Cácthànhphndliukháckhaibáogingnhưphntrưc. ProgramPrim; ConstNmax=100; Emax=1000; Type mangcanh=array[1 Emax,1 3]ofinteger; Tap=setof1 Nmax; Var e,T:Mangcanh; VTX:Tap;{X:Tpđnhcađth;V T:Tpđnhcacây} N,solE,solT:integer; (*Thtcđcfilevàghifiletươngtnhưtrên*) ProcedureTimcay; Var k,i,j:integer; TrongsoMin:Longint; Begin solT:=0;V T=[xp] X:=[]; Fori:=1toNdo X:=X+[i]; Trang68
  69. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 REPEAT (*Tìmcnh(u,v)saochouvàcĩtrngsnhnht*) TrongsoMin:=MaxLongint; Fork:=1tosolEdo Begin If(e[k,l]inV Tandnote[k,2]inV Tand(e[k,3]<TrongsoMin) then Begin i:=e[k,1]; j:=e[k,2]; TrongsoMin:=e[k,3; End; Ifnote[k,1]inV Tand(e[k,2]inV Tand(e[k,3]<TrongsoMin) then Begin i:=e[k,2]; j:=e[k,1]; TrongsoMin:=e[k,3]; End; (*ðưajvàotpU*) vT=V T+[j]; (*ðưacnh(i,j)vàocâyT*) inc(solT); Trang69
  70. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 T[solT,1]:=i; T[solT,2]:=j; UNILTU=X; End; BEGIN Docfile; Timcay; Ghifile; END. d.Bàitptgii Trang70
  71. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài9,10:Bàitốntìmđưngđingnnht Mctiêu Mctiêucabàinàyngưihccĩkhnăng:Biudinđthtrênmáytínhbng cácphươngphápkhácnhau. Ápdngđưcthuttốnfordbellmanvàdijkstratìmđưngđingnnhtngvi mtđthxácđnh.Càiđtđưcthuttốn. Phântíchđưcbàitốnthcttươngngphnlýthuytđãhc. Sinhviêncĩkhnăngthc. a.Nhclilýthuyt Thuttốndijkstraviýtưng“lanta”vàlưu1chstimiđnh. ðtìmliđưngđingnnht,talưuctênđnhlinktrưcnĩtrênđưngđi ngnnht. b.ðbàitp Bàitp1: Biudinđthdngmatrnk,danhsáchcnh(cung). ÁpdngthuttốnDijkstratìmđưngđingnnhttđnh5ticácđnhcịnli chođthsau: Bài2Tìmđưngđingnnhtt1đncácđnhcịnlicađth Trang71
  72. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài3ðưathư Nhàbácđưathưcĩvicbn,bácđưathưrtstrutmunvnhàngay nhưngbácphiđưamtthưquantrngchoanhBqunBaðình.Hinti bácqunThanhXuân.ðưngđitchbáctinhàanhBphiđiquamts qunhuynkhácvikhongcáchgiacácqunnhưsau.Hãygiúpbácđưa thưtìmđưngđingnnhtvithigianítnhtđbáccĩthvnhanhchĩng giiquytcơngvicgiađình. Bài4Hbtmi Mtconhđngtrênđicaonhìnxungkhurngvàpháthinra5conmi 5vtríkhácnhau.ConhmunbtconNaitrongs5convtđĩlàNai,Gà, Hươu,Th,Bịđăntht.KhiconHmunbtconNaiđĩ,nĩphichyqua đưngmà4convtcịnliđangđng.Vtrívàkhongcáchmàcácconvt đưcbiudinnhưsau.TìmđưngđiđquãngđưngmàconHphichy làngnnhtđbtđưcconNai. Bài5Mèobtchut MèoTom(1)rìnhchúchutnhJeny(4)đangăntrmphomat.TchTomđn Jenycĩcáixơnưc(2),chucâycnh(3),ghsofa(5)vithigianđTomchy đncácđvttrênvàgiacácđvtcũngnhưthigianTomchytcácđvt đnJenynhưsau:xơnưcchucâycnh Trang72
  73. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Tom Jeny ghsofa TomcĩthchyđnnpchcácđvttrênđrìnhvàbtJeny.Tìmthigian nhnhtđTomchyđnbtJenymàkhơngbJenypháthin(nhnpvàocácđ vtcĩtrênđưngđi) Bài6 ChođthcĩtrngsG=(X,E).Tìmđưngđingnnhtgia2đnhxpvà ktthúccađth c.Hưngdngii Bài1: Biudinđthdngmatrnknhưsau: 0 18 M 13 12 18 0 11 3 M M 11 0 5 9 13 3 5 0 4 12 M 9 4 0 DùngthuttốnDijkstragimtrngs1lntimiđnhtacĩ: Kíhiu: Trang73
  74. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 D[i]:Chstiđnhi(Tngtrngstđnhxutpháttiđnhi,đưccpnht theotngbưccathuttốn) T[i]:Tênđnhkngaytrưcđnhitrênđưngđingnnhtđưccpnhttheo tngbưccathuttốn Bưc ðnh5 Cácđnh D[1],T[1] D[2],T[2] D[3],T[3] D[4],T[4] đưc chưaxét chn Khito 5 1,3,4,2 12,5 ∞ 9,5 4,5 1 4 1,3,2 12.5 7,4 9,5 4,5 2 2 1,3 12,5 7,4 9,5 4,5 3 3 1 12,5 7,4 9,5 4,5 4 1 12,5 7,4 9,5 4,5 Trongđĩ,bưckhitođưcchotrongdịngđutiên. Thchinbưc1,trongD[v],viv=1,2,3,4dịngđutiên,thìD[4 ] =4lànhnhtnênđnh4đưcchn.TaxácđnhlicácD[v]chocácđnhcịnli 1,2và3.ChcĩD[2]lànhđivàD[2]=7,vìD[4]+c(4,2)=4+3=7< ∞. Tiptcthchincácbưc2,3,4tathuđưcđdàiđưngđingnnhtt đnh0ticácđnh1,2,3,4đưcchodịngcuicùngtrongbng,chnghnđ dàiđưngđingnnhtt5ti2làD[2]=7vàđĩlàđdàicađưngđi5 42. Bài2Tìmđưngđingnnhtt1đncácđnhcịnlicađth Trang74
  75. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Ktqutínhtốntheothuttốnđưctrìnhbàytheobngdưiđây:Quyưcvit haithànhphncanhãntheothtd[v].ðnhđưcđánhdu*làđnhđưcchnđ cđnhnhãnbưclpđangxét,nhãncanĩkhơngbinđicácbưctiptheo,vì thtađánhdu(). Bưclp ðnh1 ðnh2 ðnh3 ðnh4 ðnh5 ðnh6 Khi 0,1 1,1 * ∞,1 ∞,1 ∞,1 ∞,1 1 6,2 3,2 * ∞,1 8,2 2 4,4 * 7,4 8,2 3 7,4 5,3 * 4 6,6 * Bài 3 Nhà bác đưa thư cĩ vic bn, bác đưa thư rt st rut mun v nhà ngay nhưngbácphiđưamtthưquantrngchoanhBqunBaðình.Hintibác qunThanhXuân.ðưngđitchbáctinhàanhB phi đi qua mt s qun huynkhácvikhongcáchgiacácqunnhưsau Trang75
  76. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Hãygiúpbácđưathưtìmđưngđingnnhtvithigianítnhtđbáccĩthv nhanhchĩnggiiquytcơngvicgiađình. *Phântíchbàitốn:BácđưathưcnchuynthưtqunThanhXuântiQunBa ðìnhnhưnglikhơngcĩđưngđitrctiptqunThanhXuântiqunBaðình màphiđiquamtsqunkhác.ViđimxutphátlàqunThanhXuântìmcác conđưngcĩthđitiqunBaðìnhvàtínhkhongcáchgiahaiqunđĩkhiđi quacácconđưngkhácnhau. Ta tính khong cách t Qun Thanh Xuân (Q.TX) ti các Q.Thanh Trì (Q.TT), Q.HồngMai(Q.HM),Q.TâyH(Q.TH),Q.Hàðơng(Q.Hð).Tathykhơngcĩ đưngđitrctiptQ.ThanhXuânđnQ.Hàðơng,nêncịn3slachnlàđi quaQ.TT,Q.HMvàQ.TH.Tacĩkhongcáchtươngnglà: Q.TX Q.TT=1km; Q.TX Q.HM=7km; Q.TX Q.TH=6km; NX:QuãngđưngtQ.TXđnQ.TTngnnhtvi1km.Vytaschnvàđánh duliđinày. TiptctínhđưngđitQ.TTđnQ.HM,Q.TH,Q.HðvàQ.Bð.Tacĩ: Q.TT Q.HM=∞; Q.TT Q.TH=3km; Q.TT Q.Hð=4km; Trang76
  77. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Q.TT Q.Bð=1km; NX:QuãngđưngtQ.TTđnQ.Bðlàngnnht1kmvàlàđíchcachuynđi. VytngkhongcáchtQ.TX Q.Bðlà1+1=2km. Giscácđnh1,2,3,4,5,6tươngngvicácqunThanhXuân,HồngMai,Tây H,ThanhTrì,HàðơngvàqunBaðình.Tacĩđthsau: TìmđưngđingnnhttqunThanhXuântiBaðìnhlàtìmđưngđingn nhtgiatđnh1tiđnh6cađthtrên.ÁpdngthuttốnDijkstratacĩbng sau: 1 2 3 4 5 6 Khito 1,0* 1,∞ 1,∞ 1,∞ 1,∞ 1,∞ 1 1,7 1,6 1,1* 2 4,4 4,5 4,2* 3 * 6,4 4 * Tbngtrêntathyconđưngngnnhtđđitđnh1tiđnh6là1 4 6 vitrngslà2,nĩicáchkhácbácđưathưcĩthđitqunThanhXuântiqun ThanhTrìvàtiqunBaðìnhviquãngđưnglà2km. Trang77
  78. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài4 Mtconhđngtrênđicaonhìnxungkhurngvàpháthinra5conmi 5vtríkhácnhau.ConhmunbtconNaitrongs5convtđĩlàNai,Gà, Hươu,Th,Bịđăntht.KhiconHmunbtconNaiđĩ,nĩ phichy qua đưngmà4convtcịnliđangđng.Vtrívàkhongcáchmàcácconvtđưc biudinnhưsau.TìmđưngđiđquãngđưngmàconHphichylàngnnht đbtđưcconNai. *Phântíchbàitốn:Conhkhơngthbtđưcttc5convtđĩ,vànĩchcĩth chn1.TrongcácconđưngđđiđnchconNaimànĩmunbtđĩ,cĩnhng conđưngdàivàngnkhácnhau.Nĩphitínhtốnsaochoquãngđưngchyđn conNaiđĩlàngnnhtđđphịngconvtđĩnhìnthytxavàbchy. GivtríH,Bị,Th,Hươu,Naitươngnglà1,2,3,4vicácđnhcađthsau: ðđit1đn5tatínhkhongcácht1đncácđnhcịnli: 1 2=4 1 3=∞ Trang78
  79. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 1 4=∞ 1 5=∞ Tathycĩđưngđiduynhtlà1 2. Tiptctínhkhongcácht2 3,4,5tacĩ: 2 3=10 2 4=2 2 5=8 NX:Quãngđưng2 4lànhnht.ðánhduvàchnconđưngnày. Khichnđưngđi,nuđưngnàođãđưcchnvàđánhduskhơngđưcxétli na.Vycịnli2đnhchưaxétlà3và5,nhưngkhơngcĩđưngđitrctipt4 3,chcịnđưng4 5vikhongcáchlà1kmvàlàmcđíchcabàitốn. KL:ðưngđingnnhtt1 5là1 2 4 5vikhongcáchlà1+4+2=7 ÁpdngthuttốnDjstraltacĩbngsau: 1 2 3 4 5 Khito 1,0* 1,∞ 1,∞ 1,∞ 1,∞ 1 1,4* 2 2,14 2,6* 2,12 3 4,7* 4 Nhìnvàobngtrêntathyđưngđingnnhtt1đn5là1245vitrngs là7. NĩicáchkhácconHmunbtvàănthtconNaithìHphiđiquachconBịvà conHươu. Bài5 Trang79
  80. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 MèoTom(1)rìnhchúchutnhJeny(4)đangăntrmphomat.TchTomđn Jenycĩcáixơnưc(2),chucâycnh(3),ghsofa(5)vithigianđTomchy đncácđvttrênvàgiacácđvtcũngnhưthigianTomchytcácđvt đnJenynhưsau:xơnưcchucâycnh Tom Jeny ghsofa TomcĩthchyđnnpchcácđvttrênđrìnhvàbtJeny.Tìmthigian nhnhtđTomchyđnbtJenymàkhơngbJenypháthin(nhnpvàocácđ vtcĩtrênđưngđi) Bàilàm: Gisvtrícácđitưngtươngngvicácđnh1,2,3,4,5cađthsau: Phântíchtươngtnhư2bàitốntrêntastìmđưcconđưngcntìm ÁpdngthuttốnDijkstrađtìmđưngđingnnhtt1 4 1 2 3 4 5 Khito 1,0* 1,∞ 1,∞ 1,∞ 1,∞ 1 1,3* 1,12 Trang80
  81. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 2 2,8 2,7* 3 5,15* 4 Davàobngtrêntacĩconđưngngnnhtlà1–2–54vithigianlà15 Bài6 ChođthcĩtrngsG=(X,E).Tìmđưngđingnnhtgia2đnhxpvà ktthúccađth. Phântíchbàitốn : Phươngpháp1:Timiđnhthchinvicgimtrngsnhiuln. Bàitốnnàycũngdùngmng truoc đánhducácđnhtrênđưngđinhưtrênvà dùngcutrúchàngđi. Cĩmtđimmilànĩcnthêmmtmng trongso :array[1 Nmax]of (tuỳvàobàitốn cĩthlàkiurealhockiulongint). Trongso [i]bngtngtrngscacáccungnmtrênđưngđitínhtđnhxpcho đni.Bàitốncachúngtatrthànhtìmmng trongso [i]saochonĩđtgiátr nhnht. Thuttốncaphnnàyrtgingthuttốnduytchiurngnhưngcitinmt chútlàcĩgnthêmmngtrngs. Khiduytcácđnhkcamtđnhuvalyrakhihànhđi,gpmtđnhik viutakhơngcnbit truoc [i] làđnhnào,màtachquantâmđưngđituđni cĩngnhơnđưngcũkhơng( trongso [i]??? trongso [u] + a[u,i]. Trongso [i]chínhlàđưngđicũđnđnhi, trongso [u]+a[u,i]làđưngđimit đnhuđiđn. Nuđưngmingnhơnnghĩalà trongso [u]+a[u,i]< trongso [i]thìtaghinhn đưngđimi,taphidánli: trongso [i]:= trongso [u]+a[u,i]; Trang81
  82. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 truoc [i]:=u; Thuttốnđưctrìnhbàycthnhưsau: Khito: Mngtrongso[i]=Maxlongint; Truoc[xp]:=1; Khiđnghàngđivàđưaxpvào; Thchinbưclp. REPEAT Ly1đnhkhihàngđignvàobinu; Duytcácđnhikviu; (Nuđưngđimingnhơnđưngđicũthìthchingimtrngschoi) Nutrongso[i]>trongso[u]+a[u,i]thì +trongso[i]:=trongso[u]+a[u,i]; +truoc[i]:=u; UNILT ; Chươngtrìnhminhha : ProgramDIJSTRA_phuongphap1; ConstNmax=100; Type MATRANKE=array[1 Nmax,1 Nmax]ofinteger; MANG=array[1 Nmax]ofLongint; Var a:MATRANKE; q,duong,truoc,trongso:MANG; Trang82
  83. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 N,sold,xp,kt,qf,ql:Integer; fifo:text: (*fi:fileinputlatepdocdulieuvao fo:fileoutputlatepdocdulieura*) Procedore Doctep ; Var i,j:integer; Begin Asign(fi,’matran:inp’);Reset(fi); Readln(fi,N); Fori:=1toNdo Forj:=1toNdo Read(fi,a[i,j]); Readln(f,xp,kt); Close(f); End; ProcedureInitQ: (*Thutuckhoidonghangdoi*) Begin qf:=0; ql:=1; End; Trang83
  84. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Procedure Put (u:integer); (*Duamotphantuvaohangdoi*) Begin Inc(ql); q[ql]:=u; End; FunctionGet:Integer; (*Hamlaymotphanturakhoihangdoi*) Begin Get:=q[qf]; inc[qf]; End; Function Qempty :Boolean; (*Hamkiemtrahangdoidaronghaychưa*) Begin Qempty:=(qf>ql); End; Procudure Dijstra (*Thutucduyet Dijstratheophuongphap1:giamtrongsonhieulan*) Vari,u:integer; Trang84
  85. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Begin (*cacbuockhoitao(giongtrongphanthuattoan)*) truoc[xp]:=1; Fullhar( )=Fori:=0toNdoTrongso[i]:=MaxLongint; Trongso[xp]:=0; InitQ; Put(xp); (*Batdauvonglap*) REPEAT (*Laymotdinhkhoihangdoiganvaobienu*) u:= Get; Fori:=1toNdo (*Duyettatcacacdinhicuadothi*) If(a[u,i]>=0)and(trongso[i]>trongso[u]+a[u,i]then (*Neudinhikevoiuvaduongdiculonhonduongdimoi thi:*) Begin(* Ganlaigiatriduongdimoi*) trongso[i]:=trongso[u]+a[u,i]; (*danhdauduongdimoideniquadinhtruocdolau*) truoc [i]:=u; Put (i); End; UNILTQempty: (*Ketthuckhikhongdiduocnua*) End; Trang85
  86. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Procedure Timnguoc; Varu:integer; Begin sold:=0;(*Mngđưngrng*) (*Banđugánubngkt*) u:=kt; Repeat (*Vimibưclpghiuvàomngduong*) Inc(sold); duong[sold]:=u; (*Munđnbưctiptheophignu=truoc [u]*) u:=truoc[u]; Uniltu=1;(*Ketthuckhiu:=1doluctruoctagantruoc[xp]=1). End; procedure Ghitep : Varij:integer; Begin Asign(fo,‘kq.out’);Rewrite(fo); Iftruoc[kt]<>0then Begin Timnguoc ; Fori:=solddownto1do Write(fo,duong[i],‘‘)’ Trang86
  87. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Endelse Writeln(f,0); Close(fo); End; BEGIN Doctep; Dijstra; Ghitep; END. Phươngpháp2:Gimtrngs1lntimiđnh. ðlàmrõthuttốnnàytaxétvídcthsau: G=(X,E)đưarahìnhv Mngmatrntrngsnhưsau: 1 1 2 5 1 1 1 1 1 1 3 1 1 1 3 2 1 1 7 1 1 1 5 5 3 7 1 5 1 13 1 4 1 1 1 5 1 2 1 1 1 1 1 2 1 6 2 6 1 1 1 13 1 6 1 7 Tatìmđưngđibtđutđnh1. Trang87
  88. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Cácbưcthchincathuttốnđivivídnàynhưsau: (M=MaxLongint).Trìnhtthchinmibưcttráisangphi. ðnhcĩ trngs Bưc TpA TpB Mngtrongso MngTruoc nhnht trongB B1 [1] [2,3,4,5,6,7] [0,M,M,M,M,M,M] [1,0,0,0,0,0,0,] B2 [1] [2,3,4,5,6,7] [0,1,2,5,M,M,M] [1,1,1,1,0] B3 2 [1,2] [3,4,5,6,7] [0,1,2,4,M,M,M] [1,1,1,2,0,0,0] B4 3 [1,2,3] [4,5,6,7] [0,1,2,4,M,M,M] [1,1,1,2,0,0,0] B5 4 [1,2,3,4] [5,6,7] [0,1,2,4,8,M,17] [1,1,1,2,4,0,4] B6 5 [1,2,3,4,5] [6,7] [0,1,2,4,8,10,17] [1,1,1,2,4,5,4] B7 6 [1,2,3,4,5,6] [7] [0,1,2,4,8,10,16] [1,1,1,2,4,5,6] B8 7 [1,2,3,4,5,6,7] [] nt Nt B9 Ktthúc Bàitốnnàycũngdùng mngtrưcđánhducácđnhtrênđưngđinhưtrên nhưngkhơngdùngcutrúchàngđi. Dùngmtmngtrongso:array [1 Nmax]of (tuỳvàobàitốn cĩthlàkiurealhockiulongint). Trongso [i] bngtngtrngscacáccungnmtrênđưngđitđnhxpchođn i.Bàitốncachúngtatrthànhtìmmng trongso [i]saochonĩđtgiátrnh nht. ChiatpcácđnhcađthXthành2phn a.TpcácđnhcĩtrngsđưcgáncđnhA. b.TpcácđnhcĩtrngsđưcgántmthiB. Trang88
  89. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 TrongsutquátrìnhduytnhngđnhđưcđưavàotpAthìtrngscađnhđĩ khơngthayđivàlàđdàiđưngđingnnhttxpđnnĩ,nhngđnhtpBcĩ trngsthayđiđnkhinhnhtthìđưcđưavàotpA.Cáchthayđitrngs đnhnhtđưcthhinnhưsau: B1:Khito Khitocácgiátrcamngtrongso=Maxlongint(hocMaxreal) LphaitpAvàB.BanđuArngcịnB=X Duytttccácđnhukviđnhxpthìgántrongso[u]=a[u,xp]vàtruoc[u]= xp; REPEAT B2:TìmđnhvthuctpBcĩtrngsnhnht. ðưađnhvvàotpA(B/{v};A+{v}) B3:DuytttccácđnhithucBmàkviv Nutrongso[i]>trongso[v]+a[i,v]thì +Gánlitrongso[i]:=trongso[v]+a[i,v]; +ðngthigántruoc[i]:=v; UNILT ; Cutrúcdliu Matrnkbiudinquanhcađth: a(i;j)=1nuikhơngnivij >=nuinivijvàa(a,j)làtrngscacung9i,j). Mng truoc và trongso đưcmơtnhưtrên. Mng duong đlưucácđnhtrênđưngđi. ðbiudintpAvàBtadùngkiutphp. tap:setof Trang89
  90. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Trongphncàiđttrên,khaibáotpAchlàminhhồchothuttốncịntrongbài tốnnàykhơngcnthitphisdngtpA,tahiungmkhiloimtphntkhi tpBthìnghĩalàtađãđưanĩvàotpA. Chươngtrìnhminhha : Program Difstra_Phuongphap2; ConstNmax=100; TypeMang=array [0 Nmax]ofLongint; Tapcacdinh=setofa Nmax; Var a:array[1 Nmax,1 Nmax]ofinteger; duong,truoc,trongso:Mang; N,sold,xp,kt:Integer; tapA,tapB:setofTapcacdinh; (*ChtrìnhbàythtcDijstra,cácthtckháctươngtnhưphntrên*) Prcedure Dijstra; Vari,u,v:integer; Begin(*B1khitocácgiátrcnthit*) Fori;=0toNdo Trongso [i]:=MaxLongint; (*KhitotpBlàtpttccácđnhcađth*) tapB:=[]; Fori:=1toNdo tapB:=tapB+[i]; (*ðưaxpvàotpA*) tapA:=[xp] Trang90
  91. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 tapB:=tapB[xp]; truoc[xp]:=1; (*Tìmcácđnhkvixpgntrngsvànhânchonhngđnhđĩ*) Fori:=1toNdo ifa[xp;i]>=0then Begin trongso[i]:=a[xp,i]; truoc[i]:=xp End; REPEAT (*TìmđnhvcĩtrngsnhnhttrongtpBvàđưavàotpA,loikhitp B*). j:=Dinh_co_trong_so_min; tapA:=tapA+[j]; tapB:=tapB+[j]; (*TìmttccácđnhthucBkviđnhvvàthchinvicgimtrngs chochúng*). Fori:=1toNdo If(iintapB)and(a[i,j]>=0and(trongso[i]>trongso[j]+a[i,j])then Begin trongso[i]:=trongso[j]+a[i,j]; truoc[i]:=j; End; UNILTtapB=[]; Trang91
  92. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 End; (*HàmtìmđnhcĩtrngsnhnhttrongcácđnhthuctpB*) FunctionDinh_co_trong_so_min:Integer; Vari,t:integer; BegintS[it]:=maxint Fori:=1toNdo If(iintapBand(trongso[i]<trongso[t]then t:=i; Dinh_co_trong_so_+min:=t End; d.Bàitptgii Bàitp1:ÁpdngthuttốnDijkstratìmđưngđingnnhtchođthsau: Trang92
  93. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bàitp2:Dichuyntrêncáchìnhtrịn ChoNhìnhtrịn(đánhst1đnN).Mtngưimunđithìnhtrịnnày sanghìnhtrịnkháccntuântheoquiưc: Nukhongcáchgia2đimgnnhtca2hìnhtrịnkhơngquá50cmthì cĩthbưcsang. Nukhongcáchnàyhơn50cmvàkhơngquá80cmthìcĩthnhysang. Cáctrưnghpkháckhơngthsangđưc. Mtđưngđithìnhtrịnnàysanghìnhtrịnkhácđucgilàcàng"tt"nu slnphinhylàcàngít.Haiđưngđicĩslnnhybngnhauthìđưngđinào cĩshìnhtrịnđiquaíthơnthìđưngđiđĩ"tt"hơn. Cáchìnhtrịnđưcchotrongmtfilevănbn,trongđĩdịngthimơt hìnhtrịnshiui(i=1,2, ,N)baogm3sthc:hồnhđtâm,tungđtâm,đ lnbánkính(đơnvđobngmét). Lptrìnhđccáchìnhtrịntmtfilevănbn(tênfilevàotbànphím),sau đĩcmilnđcshiuhìnhtrịnxutphátSvàhìnhtrịnktthúcTtbànphím, chươngtrìnhsđưarađưngđitSđnTlà"ttnht"theonghĩađãnêu(hoc thơngbáolàkhơngcĩ). Yêucuđưngđiđưcvitdưidngmtdãycácshiuhìnhtrịnlnlưt cnđưcđiquatrongđĩnĩirõtngscácbưcnhy,tngscáchìnhtrịnđiqua vànhngbưcnàocnphinhy. Giihnshìnhtrịnkhơngquá100. Bàitp3:Tìmhànhtrìnhtnítxăngnht Trang93
  94. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Trênmtmnglưigiaothơng,mtngưimunđitđimAđnđimB bngxemáy.Xechađưctiđa3lítxăngvàchy100kmht2,5lít.Cáctrm xăngchđưcđtcácđimdâncư,khơngđtgiađưngvàngưinàykhơng mangtheobtkỳthùngchaxăngnàokhác.Hãyvitchươngtrìnhnhpvàomng lưigiaothơngvàxácđnhgiúpngưinàytuynđưngđitAđnBsaochoít tnxăngnht. Bàitp4:Dichuyngiacácđo Trênmtđoquc,cĩNhịnđo.Gisttccácđođucĩhìnhdnglà hìnhchnhtnmngang.Trênmihịnđocĩthcĩsânbaynmtrungtâmđo, cĩthcĩcngnm4gĩcđo.Trênmiđođucĩtuynđưngxebuýtni4 gĩcđovinhauvàvitrungtâmđo.Gia2đocĩthđilibngmáybaynu c2đođucĩsânbayvàcĩthđilibngtàunuc2đođucĩcng. Gisrng: Cáctuynđưng(b,khơng,thy)đulàđưngthng. Chiphíchomikmvàtcđcamiloiphươngtinlà: Phươngtin Tcđ Chiphí (km/h) (đ/km) Máybay 1000 1000 Xebuýt 70 100 Tàuthy 30 50 Hãyvitchươngtrìnhxácđnhtuynđưngvàcáchdichuyngia2hịn đotrongđoqucsaocho: Thigiandichuynítnht. Chiphídichuynítnht. Thigiandichuynítnhtnhưngvimtstinchiphíkhơngquáð đng. Trang94
  95. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 ChiphídichuynítnhtnhưngvithigiandichuynkhơngvưtquáT gi. Bàitp5:Tìmđưngngnnht GisXlàtpcáckhudâncư,Ulàtpcácđưngsánilincáckhuđĩ.Ta gismichgiaonhaucacácconđưngđuthucX.Viconđưngu,sl(u) làđdàicautínhbngkm.Hãychratuynđưngđitmtkhuisangkhujsao chotngchiudàilànhnht. Bàitp6:ðưngđitrênlưi Cho1matrnA[M,N],miphntcanĩcha1stnhiên.T1ơ(i,j) tacĩthđisangơknĩ(cĩchung1cnh)nugiátrcaơknàynhhơngiátr lưutrong(i,j).Hãytìm1đưngđitơ(i,j)tiơ(k,l)trênmatrnsaochophiđi quaítơnht.Hãytìm1đưngđitơ(i,j)tiơ(k,l)trênmatrnsaochotnggiá trcácơphiđiquanhnht. Bàitp7:Tìmđưngvichiphíphitrchophép CĩNthànhphđưcđánhst1 Nnivinhaubngcácđonđưng mt chiu.Miđonđưngbaogm2thơngs:ðdàivàchiphíđicađonđưng. Asngtithànhph1vàAmundichuynđnthànhphNnhanhnhtcĩ th. BnhãygiúpAtìmra đưngđingnnhttthànhph1đnthànhphN màAcĩ khnăngchitrtin. Dliuvào :ROADS.IN DịngđutiênchasnguyênK,0<=K<=10000,stinmàAcĩ. Dịngth2chasnguyênN,2<=N<=100,sthànhph. Dịngth3chasnguyênR,1<=R<=10000,tngsđonđưng. MidịngtrongsRdịngtiptheomơtmtđonđưngbngcácsS, D,LvàTcáchnhaubiítnhtmtkhongtrng. +Slàthànhphkhihành,1<=S<=N. +Dlàthànhphđn,1<=D<=N. Trang95
  96. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 +Llàđdàicađonđưng,1 Nvành hơnK. ROADS.IN ROADS.IN 5 0 6 4 7 4 1223 1452 2433 1210 3424 2311 1341 3410 4621 ROADS.OUT 3520 1 5432 ROADS.OUT 11 Trang96
  97. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bài12:Bàitốnlungccđitrongmng Mctiêu TrìnhbàyđưctưtưngchđocathuttốnFord_Fulkersonvàcàiđtđưc thuttốn. Phântíchđưcbàitốnthcttươngngphnlýthuytđãhc. Sinhviêncĩkhnăngthc. a.Nhclilýthuyt ðnhnghĩa1 .TagimnglàđthcĩhưngG=(V,E),trongđĩcĩduy nhtmtđnhskhơngcĩcungđivàogilàđimphát,duynhtmtđnhtkhơng cĩcungđiragilàđimthuvàmicunge=(v,w) ∈Eđưcgánvimts khơngâmc(e)=c(v,w)gilàkhnăngthơngquacacunge. ðnhnghĩa2 .GischomngG=(V,E).TagilungftrongmngG= (V,E)làánhxf:E R +gánchomicunge=(v,w) ∈Emtsthckhơngâm f(e)=f(v,w),gilàluơngtrêncunge,thomãncácđiukinsau: 1.Lungtrênmicunge ∈Ekhơngvưtquákhnăngthơngquacanĩ:0 ≤f(e)≤c(e), 2.ðiukincânbnglungtrênmiđnhcamng:Tnglungtrêncác cungđivàođnhvbngtnglungtrêncáccungđirakhiđnhv,nuv ≠s,t: Div f (v) = ∑ f (v) − ∑ f (v, w) = 0 w∈Γ − (v ) w∈Γ + (v ) Trongđĩ Γ − (v) tpcácđnhcamngmàtđĩcĩcungđnv, Γ + (v) tpcác đnhcamngmàtvcĩcungđnnĩ: Γ − (v) = {w ∈V (: w,v) ∈ E},Γ + (v) = {w ∈V (: v, w) ∈ E}. 3.Giátrcalungflàs val ( f ) = ∑ f (s, w) = ∑ f (w,t .) w∈Γ+ (s) w∈Γ− (t ) Trang97
  98. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bàitốnlungccđitrongmng ChomngG=(V,E).Hãytìmlungf*trong mngvigiátrlungval(f*)làlnnht.Lungnhưvytasgilàlungccđi trongmng. Giiquytbàitốn TmngG=(V,E)khnăngthơngquacáccungvàcácđnh.Tasgii quyttheohaibưcsau: 10XácđnhmngG’. 20TìmlungccđitrongmngG’.Btđutlungzerovikhnăng thơngquacung. ThuttốnFord–Fulkerson 1.Xutpháttmtlungchpnhnđưcf. 2.TìmmtđưngđitănglungP.Nukhơngcĩthìthuttốnktthúc.Nu cĩ,tipbưc3dưiđây. 3.Nu δ(P)=+ ∞thuttốnktthúc. Thuttốngánnhãn(Thelabelingalgorithm) 1.Nut ∈VThocVT= ∅,thuttốnktthúc.Ngưclithìchnmtđnhu ∈VTđthămvàđưanĩrakhiVT.Xétttccácđnhcnhu,tclàxétmi cungcĩdng(u,v)và(v,u). 2.Nu(u,v) ∈E,F(u,v) 0vàvchưagánnhãnthìgánnhãnnĩvàđưavàotp VT. b.ðbàitp Bài1ÁpdngthuttốnFordFullkersontìmlungccđibngcáchgánnhãn cholungzerosau: Trang98
  99. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 a 7,0 b 6,0 5,0 4,0 4,0 s 4,0 c t 5,0 3,0 12,0 7,0 d 9,0 e c.Hưngdngii Bài1 +Bưclp1: s→a→b→t, δ1=1 a(s+, 6) 7,0 b(a+, 6) 6,0 5,0 4,0 4,0 4,0 s c(s+, 4) t(e+, 2) 5,0 3,0 (s, ∞) 12,0 7,0 d(s+, 7) 9,0 e(d+, 4) a 7,4 b 6,4 5,0 4,4 4,0 s 4,0 c t 5,0 3,0 12,0 7,0 d 9,0 e +Bưclp2: s→a→b→c→e→t, δ2=2 Trang99
  100. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 a(s+, 2) 7,4 b(a+, 2) 6,4 5,0 4,4 4,0 4,0 s c(b+, 2) t(e+, 2) 5,0 3,0 (s, ∞) 12,0 7,0 d(s+, 7) 9,0 e(c+, 2) a(s+, 0) 7,6 b(a+, 1) 6,6 5,0 4,4 4,2 4,0 s c(s+, 4) t(e+, 1) 5,0 3,2 12,2 (s, ∞) 7,0 d(s+, 7) 9,0 e(c+, 1) a 7,6 b 6,6 5,0 4,4 4,2 s 4,0 c t 5,0 3,2 12,2 7,0 d 9,0 e +Bưclp3: s→c→e→t, δ3=1 a 7,6 b 6,6 5,0 4,4 4,2 s 4,1 c t 5,0 3,3 12,3 7,0 d 9,0 e +Bưclp4: s→d→e→t, δ4=7 Trang100
  101. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 a 7,6 b 6,6 5,0 4,4 4,2 s 4,1 c t 5,0 3,3 12,10 7,7 d 9,7 e a(s+, 0) 7,6 b(a+, 1) 6,6 5,0 4,4 4,2 4,1 s c(s+, 3) t(e+, 7) 5,0 3,3 12,3 (s, ∞) 7,0 d(s+, 7) 9,0 e(d+, 7) +Bưclp5: s→c→d→e→t, δ5=2 a 7,6 b 6,6 5,0 4,4 4,2 s 4,3 c t 5,2 3,3 12,12 7,7 d 9,9 e a(s+, 0) 7,6 b(a+, 1) 6,6 5,0 4,4 4,2 4,1 s c(s+, 3) t(e+, 2) 5,0 3,3 12,10 (s, ∞) 7,7 d(c+, 3) 9,7 e(d+, 2) +Bưclp6:Khơngcịnđưngtănglungna, Val(f max )=6+3+7=16. d.Bàitptgii Bàitp1: ChoG=(V,E)đthcĩhưngtrongđĩkhơngcĩcung (s,t). Chng minhrngsđưngđicơbnnihaiđnhsvàtlàbngsítnhtcácđnhcađ thcnloibđtrongđthkhơngcịnđưngđinisvit. Trang101
  102. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bàitp2: XâydngthuttốntìmtpE 1ttccáccungcađthmàvictăng khnăngthơngquacabtkỳcungnàotrongEđudnđntănggiátrcalung ccđitrongmng. Bàitp3: Chohaidãysnguyêndương{p i, i=1,2, ,m}và{q j,j=1,2, ,n}.Hãy xây dng ma trn A={a ij : i=1,2, ,m; j=1,2, n} vi các phn t aij ∈{0,1}cĩtngcácphnttrêndịngilàp i,tngcácphnttrênctjlàq j. Bàitp4: Cĩmchàngtrai,ncơgáivàkbàmi,mibàmip(p=1,2, ,k)cĩmt danhsáchL pmtschàngtraivàcơgáitrongscácchàngtraivàcơgáinĩitrênlà kháchhàngcabàta.Bàmipcĩthseduyênchobtccptraigáinàolàkhách hàngcabàta,nhưngkhơngđsctchcquád p đámcưi.Hãyxâydngthut tốncăncvàodanhsáchLp,d p, p=1,2, ,k;đưaracáchtchcnhiunhtcác đámcưigiamchàngtraivàncơgáivisgiúpđcacácbàmi. Bàitp5:Chuynbi CubévN(N<=100)vịngtrịn,đánhst1tiNvàtơmàucácvịngtrịn đĩ(cĩthcĩcácvịngtrịncĩmàugingnhau),sauđĩnitngcpcáccungđnh hưng,micungcĩmtmàunhtđnh.Cácmàu(cacungvàvịngtrịn)đưc đánhst1đn100. Cubéchn3snguyênkhácnhauL,KvàQnmtrongphmvit1tiN, đtvàotrongcácvịngtrịnsLvàKmivịngmthịnbi,sauđĩbtđudi chuynbitheonguyêntcsau: Bichđưcchuyntheocungcĩmàutrùngvimàucavịngtrịncha viênbith2. Bichđưcchuyntheochiucung Haiviênbikhơngđưcđngthicùngmtvịngtrịn; Khơngnhtthitphidichuynlnlưtcácviênbi, Quátrìnhdichuynktthúc,khimttronghaiviênbitivịngtrịnQ. Hãylptrìnhxácđnhcáchdichuynđchmdtquátrìnhsaumtsít nhtcácbưcchuyn. DliuvàotfileBL.INP: Trang102
  103. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Dịngđu:4snguyênNLKQ Dịngth2:NsnguyênC 1,C 2, ,C n;C ilàmàuvịngtrịni Dịngth3:snguyênM(0<M<10000) Mdịngsau:midịng3snguyênA iB iD i;xácđnhcungmàuD i tvịngtrịnA itivịngtrịnB i. Cácstrênmtdịngcáchnhaumtducách. KtquđưarafileBL.OUT: Dịngđu:COhocKHONG,chobitquátrìnhcĩktthúcđưc haykhơng, NudịngđulàCOthìdịng2chasnguyênxácđnhsbưc chuyntithiu. BL.INP BL.OUT 5341 CO 23214 3 8 212 415 452 452 513 322 234 531 351 Trang103
  104. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 Bàitp6:Bngđin Mtlưiơvuơngđưcphtrênmtbngđinhìnhvuơng.Vtrínmtrên giaoca2đưngkcalưisđưcgilànút.Ttccĩnxnnúttrênlưi. Cĩmtsnútchatipđim.Nhimvcabnlàcnnicáctipđimvi cácnúttrênbiêncabngbicácđondâydn(gilàcácmch).Cácmchch đưcchydctheocácđưngkcalưi(nghĩalàkhơngđưcchytheođưng chéo).Haimchkhơngđưcphépcĩđimchung,vìvyhaimchbtkỳkhơng đưcphépcùngchyquacùngmtđonđưngkcalưicũngnhưkhơngđưc chyquacùngmtnútcalưi.Cácmchcũngkhơngđưcchydctheocác đonkcalưitrênbiên(mchphiktthúckhinĩgpbiên)vàcũngkhơng đưcchyquanútchatipđimkhác. Víd:Bngđinvàcáctipđimđưcchotronghình2a.Núttơđmtrong hìnhvthhinvtrícáctipđim. Yêucu:Vitchươngtrìnhchophépniđưcmtsnhiunhtcáctip đimvibiên.Cáctipđimtrênbiênđãthamãnđịihiđtra,vìthkhơng nhtthitphithchinmchnichúng.Nunhưcĩnhiuligiithìchicnđưa ramttrongschúng. Dliuvào: filevănbnELE.INP: Dịngđutiênchasnguyênn(3<=n<=15). Midịngtrongsndịngtiptheochankýtphâncáchnhaubi mtducách.Mikýtchlà0hoc1.Kýt1thhintipđim, kýt0thhinnútkhơngcĩtipđimtrênvtrítươngngcalưi. Cácnútđưcđánhst1đnn*ntheothtttráisangphi,t Trang104
  105. BàitpTỐNRIRC2BmơnCơngnghphnmm2010 trênxungdưi.Chscanútchatipđimslàchscatip đim. Ktqu: ghirafileELE.OUT: Dịngđutiênchaklàstipđimlnnhtcĩthnivibiênbi cácmch. Midịngtrongskdịngtiptheomơtmtmchnimttrong sktipđimvibiêntheoquicáchsau:đutiênlàchscatip đimđưcni,tipđnlàdãycáckýtmơthưngcamchni: E:đơng,W:tây,N:bc,S:nam.Giachsvàdãykýtphicĩ đúngmtducách,cịngiacáckýttrongdãykýtkhơngđưccĩ ducách. Ktquphiđưcđưaratheothttăngdncachstipđim. Víd: ELE.IN ELE.OUT 6 11E 000111 16NWN 000010 17SE 000111 27S 000000 28NWWSS 001111 29S 000101 Bàitp7: MtkhĩahcgmNmơnhc,mơnhciphihctrongtingày.Gia cácmơnhccĩmiquanhtrưc/sau:cĩmơnhcchhcđưcsaukhiđãhc mtsmơnhckhác.MiquanhđĩđưcthhinbimtmnghaichiuA[i,j]; i,j=1, ,NtrongđĩA[i,j]=1/0vàA[i,i]bng0vimii,A[i,j]=1khivàch khimơnhciphiđưcdyxongtrưckhihcmơnj(ngàyktthúcmơniphi Trang105