MỤCLỤC LỜICẢMƠN...1 LỜICAMĐOAN...2 MỞĐẦU...5 Chương1CÁCKHÁINIỆMCƠBẢNVỀLÝTHUYẾTĐỒTHỊ...8 1.1.. Yêucầu Donhữngnhiệmvụđãnêutrên,luậnvănphảithựchiệnđượcnhữngyêucầusau: - Phươngphápchuyêngia:
Trang 1LỜICẢMƠN
EmsẽkhônghoànthànhluậnvănnếukhôngcósựhướngdẫnvàchỉbảocủacôgiáoLưuThịBíchHương.EmxinchânthànhcảmơnsựhướngdẫncủaCô
Xinchânthànhcảmơnsựgiúpđỡ,độngviêncủacácbạnlớpK34-CNTTtrongquátrìnhthựchiệnluậnvănnày
Làsinhv i ê n lầnđầunghiêncứukhoahọcc h ắcchắnđ ề tàicủae m khôngtránhkhỏinhữngthiếusót,vìvậyemrấtmongsựđónggópýkiếnc ủacácthầycôgiáovàcácbạnđểđềtàicủaemđượchoànthiện.Mộtlầnnữaemxinchânthànhcảmơncônglaodạydỗchỉbảocủacácthầycôgiáo.Kínhchúcquýthầyc ôgiáomạnhkhoẻ,tiếptụcđạtđượcnhiềuthắnglợitrongnhgiêncứukhoahọcvàsựnghiệptrồngngười
Emxinchânthànhcảmơn!
HàNội,tháng04năm2012Sin
hviênthựchiện
NgôThịQuyên
Trang 2NgôThịQuyên
Trang 3MỤCLỤC
LỜICẢMƠN 1
LỜICAMĐOAN 2
MỞĐẦU 5
Chương1CÁCKHÁINIỆMCƠBẢNVỀLÝTHUYẾTĐỒTHỊ 8
1.1 Địnhnghĩađồthị 8
1.2 Cácthuậtngữcơbản 12
1.3 Địnhnghĩađườngđi,chutrình,đồthịliênthông 15
1.4 Mộtsốkháiniệm 19
1.4.1 Đườngđingắnnhấtxuấtpháttừmộtđỉnh 20
1.4.2. ThuậttoánDijkstra 21
1.4.3 Đườngđitrongđồthịkhôngcóchutrình 24
1.4.4 Đườngđingắnnhấtgiữatấtcảcáccặp đỉnh 28
Chương2THUẬTTOÁNTÌM ĐƯỜNGĐINGẮNNHẤT 29
2.1 ThuậttoántìmkiếmBreathFirstSearch(BFS) 29
2.2 ThuậttoántìmkiếmDepthFirstSearch(DFS) 33
2.3 ThuậttoántìmkiếmDepthwiseSearch 34
2.4 Thuậttoántìmkiếmtốtnhấtđầutiên 35
2.5. Thuậttoántìmđườngđ i cóg i á thànhnhỏnhất T 38
2.6. Tìmkiếmcựctiểusửdụnghàmđánhgiá –ThuậttoánA* 41
2.7. Thuậttoántìmkiếmleođồi 44
2.8. Tìmkiếmvớitrithứcbổsung 47
Chương3XÂYDỰNGỨNGDỤNG 48
3.1. Phátbiểubàitoán 48
Trang 43.2. Giảiquyếtbàitoán 49 KẾTLUẬNVÀHƯỚNGPHÁTTRIỂN 54 TÀILIỆUTHAMKHẢO 55
Trang 5Đồthịđượcsửdụngđểgiảiquyếtcácbàitoántrongnhiềulĩnhvựckhácnhau.Chẳnghạn,đồthịcóthểs ử dụngđ ể x á c địnhcácmạchvòngtrongvấnđềgiảitíchmạchđiện.Chúngtacóthểphânbiệtcáchợpchấthoáhọchữucơkhácnhauvớicùngcôngthứcphântửnhưngkhácnhauvềcấutrúcphânt ửnhờđồthị.Chúngt acóthểxácđịnhxemhaimáytínhtrongmạngcóthểtraođổithôngtinđượcvớinhauhaykhôngnhờmôhìnhđồthịc ủ a mạngmáytính.Đồthịcótrọngsốtrêncáccạnhcóthểsửdụngđểgiảic ác
b ài toánnhư:tìmđườngđingắnnhấtgiữahaithànhphốtrongcùngmộtmạnggiaothông.Chúngtacònsử dụngđ ồthịđểgiảicácbàitoánvề lậplịch,thờikhoábiểu,v à phânb ố tầnsốchocáctrạmphát thanhv à truyềnhình
Chínhvìvậy,emchọnđềtài“Thuậttoántìmđườngđingắnnhấtvàxâyd ựngứngdụng”nhằmtì mhiểul à cáckháiniệmcơbản,c á c bàitoánứngdụngqua
ntrọngcủalýthuyếtđồthị,cácthuậttoántìmđườngđingắnnhất vàxâydựngứngdụngcàiđặtchươngtrìnhtrênmáytính
Trang 61.2 Mụcđích
Tìmhiểulàcáckháiniệmcơbản,cácbàitoánứngdụngquantrọngcủalýthuyếtđồthị,cácthuậttoántìmđườngđingắnnhất vàxâydựngứngdụng
2 Nhiệmvụ, yêucầu
2.1 Nhiệmvụ
Phảinêuđượccáckháiniệmcơbảnvềlýthuyếtđồthị,thuậttoántìmđườngđingắnnhấtcho,nhằmmụcđíchmôphỏngquátrìnhhiểnthịđườngđ idựatrênngônngữVisualC#
2.2 Yêucầu
Donhữngnhiệmvụđãnêutrên,luậnvănphảithựchiệnđượcnhữngyêucầusau:
- Phươngphápchuyêngia:Thamkhảoýkiếncủacácchuyêng ia để
cóthểthiếtkếchươngtrìnhphùhợpvớiyêucầuthựctiễn,nộidungx ửlýnhanhđápứngyêucầungàycàngcaocủangườisửdụng
Trang 74.2 Phạmvinghiêncứu
Phạmvilu ậnvăncủaemdừnglạiởviệcnghiêncứumộtphầnứngdụngtrongviệctìmđườngđingắnnhất
5 Ýnghĩakhoahọccủađềtài
Nếuđềtài“Thuậttoántìmđườngđingắnnhấtvàxâydựngứngdụng”đ
ượcthựchiệnthìnósẽtrởthànhmộttàiliệuthamkhảochosinhviêntrongviệcnghiêncứucácthuậttoántìmđườngđingắnnhất
6 Cấutrúccủakhoáluận
Ngoàiphầnmởđầuvàkếtluận,khoáluậnbaogồm3chương:Chương1.C
áckháiniệmcơbảncủalýthuyếtđồthị
Chương2.Lýthuyếtvềthuậttoántìmđườngđingắnnhất.Chương3.Xâydựngứngdụng
Trang 8thểhìnhdungđƣợctạisaolạicầnđếncácloạiđồthịkhácnhau,chúngtasẽnêuvídụsửdụngchúngđểmôtảmộtmạngmáytính.Giảsửtacómộtmạnggồmcácmáytínhvàcáckênhđiệnthoại(gọitắtlàtênthoại)nốicácmáytínhnày.Chúngtacóthểbiểudiễncácvịtríđặtmáytínhbởicácđiểmvàcáckênhthoạinốichúngbởicácđoạnnối,xemhình1
Trang 9Hình2 Sơđồmạngmáytínhvớiđakênhthoại
Địnhnghĩa2.MộtđađồthịG=(V,E)gồmmộttậpkhácrỗngVmàcácphầntửc
ủanógọilàcácđỉnhvàmộthọEvàcácphầntửcủanógọilàcáccạnh,đólàcáccặpkhôngcóthứtựcủacácđỉnhphân
biệt.Haicạnhđượcgọilàcạnhbộihaysongsongnếuchúngcùngtươngứngvớimộtcặpđỉnh
Trang 10Hình3 SơđồmạngmáytínhvớikênhthôngbáoRõràng,mỗiđơnđồthịđềulàđađồthị,nhưngkhôngphảiđađồthịnàocũnglàđơnđồthị,vìtrongđađồthịcóhaihaynhiềuhơncạnhnốimộtc ặ p đỉnhnàođó
Trongmạngmáytínhcóthểcónhữngkênhthoạinốimộtmáytínhnàođ ó vớichínhnó(chẳnghạnvớimụcđíchthôngbáo).Mạngn h ư vậyđượcchotronghình3.Nhưvậyđađồthịkhôngthểmôtảđượcmạngnhưvậy,bởivìcónhữngkhuyên(cạnhnốimộtđỉnhvóichínhnó).Trong trườnghợpnàychúngtacầnsửdụngđếnkháiniệmgiảđồthịvôhướng,đượcđịnhnghĩanhưsau:
Địnhnghĩa3.MộtgiảđồthịG=(V,E)gồmmộttậpkhácrỗngVmàcácphầntử
củanógọilàcácđỉnhvàmộthọEvàcácphầntửcủanógọilàcáccạnh,đólàcáccặpkh ôngcóthứtựcủacácđỉnh(khôngnhấtthiếtlàphânbiệt).
VớivV,nếu(v,v)Ethìtanóicómộtkhuyêntạiđỉnhv
Cáckênhthoạitrongmạngmáytínhcóthểchỉchophéptruyềntintheomộtc h i ề u C
hẳnghạntronghình4máychủởHàNộichỉcóthểnhậntintừcác
Trang 11máyởđịaphương,cómộtsốmáychỉcóthểgửitinđi,còncáckênhthoạichophéptruyềntintheocảhaichiềuđượcthaythếbởihaicạnhcóhướngngượcchiềunhau
Hình4.MạngmáytínhvớicáckênhthoạimộtchiềuTađiđếnđịnhnghĩasau:
Địnhnghĩa4.MộtđồthịcóhướngG
=(V,E)gồmmộttậpkhácrỗngV màcácphầntửcủanógọilàcácđỉnhvàmộttập Emàcácphầntửcủanógọilàcáccung, đólàcáccặpcóthứtựcủacácphầntửthuộcV.
Nếutrongmạngcóthểcóđakênhthoạimộtchiều,tasẽphảisửdụngđếnkháini
ệmđađồthịcóhướng:
Địnhnghĩa5.MộtđađồthịcóhướngG=(V,E)gồmmộttậpkhácrỗngVmàc
ácphầntửcủanógọilàcácđỉnhvàmộthọEmàcácphầntửcủanógọilàcáccung,đól àcáccặpcóthứtựcủacácphầntửthuộcV.
Trongcácphầntiếptheo,chủyếuchúngtasẽlàmviệcvớiđơnđồthịv ô hướngvàđơnđồthịcóhướng.Vìvậy,đểchongắngọn,tasẽbỏ
quatínht ừđơnmỗikhinhắcđếnchúng
Trang 121.2 Cácthuậtngữcơbản
Trongmụcnày,chúngtasẽtrìnhbàymộtsốthuậtngữcơbảncủalýthuyếtđồthị.Trướctiên,taxétcácthuậtngữmôtảcácđỉnhvàcạnhcủađồthịvôhướng
Định nghĩa6.Haiđỉnhuvà
vtrongđồthị(vôhướng)G=(V,E)đượcgọilàliềnkềnếu(u,v)E.Nếue=(u,v)thì egọilàcạnhliênthuộcvớicácđỉnhuvàv.Cạnhecũngđược
Trang 13ỉnhglàđỉnhcôlập,avàdlàcácđỉnhtreo.Bậccủađỉnhcótínhchấtsau:
Địnhlý1.GiảsửG=(V,E)làđồthịvôhướngvớimcạnh.Khiđó2m=∑ deg(v) Chứngm i n h R õ ràngtrongmỗicạnhe = ( u , v ) đượctínhmộtlầntrongd
eg(u)vàmộtlầntrongdeg(v).Từđósuyratổngtấtcảcácbậccủacácđỉnhbằnghailầnsốcạnh
haitrongvếphảiởtrênlàsốchẵn.Từđósuyratổngthứnhất(chínhlàtổngbậccủacácđỉnhbậclẻ)cũngphảilàsốchẵn,dotấtcảcácsốhạngcủanólàsốlẻ,nêntổngnàyp h
ả ig ồ m mộts ố chẵnc á c sốhạng.Vìvậy,s ố đỉnhb ậ c l ẻ phảil à sốchẵn
Taxétcácthuậtngữtươngtựchođồthịcóhướng
Địnhnghĩa8.Nếue=(u,v)làcungcủađồthịcóhướngGthìtanóihaiđỉnhuv
àvlàkềnhau,vànóicung(u,v)nốiđỉnhuvớiđỉnhvhoặccũng
Trang 14nóicungnàylàđirakhỏiđỉnhuvàđivàođỉnhv.Đỉnhu(v)sẽđượcgọilàđỉnhđầu(cuối )củacung(u,v).
deg-(a)=1, deg-(b)=2,deg-(c)=2, deg-(d)=2,deg-(e)=2.deg+
(a)=3, deg+(b)=1,deg+(c)=1,deg+(d)=2, deg+(e)=2
Domỗicung(u,v)sẽđượctínhmộtlầntrongbánbậcvàocủađỉnhvvàmộtlầntrongbánbậc racủađỉnhunênta có
Địnhlý2.GiảsửG=(V,E)làđòthịcóhướng, khiđó:
∑deg+(v)=∑deg-(v)=|E|
Rấtnhiềutínhchấtcủađồthịcóhướngkhôngphụthuộcvàohướngtrêncáccungcủanó.Vì
vậy,trongnhiềutrườnghợpsẽthuậntiệnhơnnếutab ỏ quahướngtrêncáccungcủađồthị.Đồthịvôhướngthuđượcbằngcách
Trang 15Đườngđinóitrêncòncóthểbiểudiễndướidạngcáccạnh:( x 0 ,x 1 )
,(x 1 ,x 2 ), ,( x n-1 ,x n ).
Đỉnhugọilàđỉnhđầu,cònđỉnhvgọilàđỉnhcuốicủađườngđi.Đườngđi
cóđỉnhđầutrùngvớiđỉnhcuối(tứclàu=v)đượcgọilàchutrình.Đườngđi haychutr ìnhđượcgọilàđơnnếunhưkhôngcócạnhnàobịlặplại.
Vídụ4.Trênđồthịvôhướngchotronghình1:a,d,c,f,elàđườngđiđơnđộdà
i4.Cònd,e,c,akhônglàđườngđi,do(e,c)khôngphảilàcạnhcủađồthị.Dãyb,c,f,e,blàchutrìnhđộdài4.Đường đia,b,e,d,a,bcóđộdàilà5khôngphảilàđườngđiđơn,docạnh(a,b)cómặttrongnóhailần
Hình7.ĐườngđitrênđồthịKháiniệmđườngđivàchutrìnhtrênđồthịcóhướngđượcđịnhnghĩahoàntoàntươngtựnhưtrườnghợpđồthịvôhướng,chỉkháclàtachúýđếnhướngtrêncáccung
Trang 16Địnhnghĩa11.Đườngđi độ dàintừđỉnhuđến đỉnv,trongđónlàsốnguyêndương,trênđồthịcóhướngG=(V,A)làdãyx o ,x 1 , ,
x n-1 ,x n trongđóu=x 0 ,v=x n ,(x i ,x i+1 )A,i=0,1,2, ,n-1
Đườngđinóitrêncòncóthểbiểudiễndướidạngcáccung:( x 0 ,x 1 )
,( x 1 ,x 2 ), ,( x n-1 ,x n ).
Đỉnhugọilàđỉnhđầu,cònđỉnhvgọilàđỉnhcuốicủađườngđi.Đườngđi
cóđỉnhđầutrùngvớiđỉnhcuối(tứclàu=v)đượcgọilàchutrình.Đườngđ i haychutr ìnhđượcgọilàđơnnếunhưkhôngcócungnàobịlặplại.
Vídụ5.Trênđồthịcóhướngchotronghình7:a,d,c,f,elàđườngđiđơnđộd
ài4.Cònd,e,c,akhônglàđườngđido(e,c)khôngphảilàcungcủađồthị.Dãyb,c,f,e,blàchutrìnhđộdài4.Đườngđia,b,e,d,a,bcóđộdàilà5khôngphảilàđườngđiđơn,docung(a,b)cómặttrongnóhailần
Xétmộtmạngmáyt í n h Mộtcâuhỏiđặtr a l à haimáytínhb ấ t k ỳ trongmạngnàycóthểtraođổiđượcthôngtinvớinhauhoặctrựctiếpquakênhnốichúnghoặcthôngquamộthoặcvàimáyt í n h trunggiantrongmạng?
Nếusử dụngđồ thịđể biểudiễnmạngmáytínhn ày (trongđócácđỉnhcủađồthịtươngứngvớicácmáytính,còncáccạnhtươngứngvớicáckênhnối)câuhỏiđóđượcphátbiểutrongngônngữđồthịnhưsau:Tồntạih a y chăngđườngđigiữamọicặpđỉnhcủađồthị?
Địnhnghĩa12.ĐồthịvôhướngG=(V,E)đượcgọilàliênthôngnếuluôntìm
đượcđườngđigiữahaiđỉnhbấtkỳcủanó.
Nhưvậyhaimáytínhbấtkỳtrongmạngcóthểtraođổithôngtinđượcvớinhaukhivàchỉkhiđồ thịtươngứngvớimạngnàylàđồthịliênthông
thông
Vídụ6.Tronghình8:ĐồthịGlàliênthông,đồthịHlàkhôngliên
Trang 17Hình8.ĐồthịliênthôngGvàđồthịHgồm3thànhphầnliênthôngH1,H2, H3.
Địnhnghĩa13.TagọiđồthịconcủađồthịG=(V,E)làđồthịH=(W,F),tr
ongđóWVvà FE
Trongtrườnghợpđồthịlàkhôngliênthông,nósẽrãrathànhmộtsốđ ồ thịconliênthôngđôimộtkhôngcóđỉnhchung.Nhữngđồthịconliênthôngnhưvậytasẽgọilà
Địnhnghĩa14.Đỉnhvđượcgọilàđỉnhrẽnhánhnếuviệcloạibỏvcùngvới
cáccạnhliênthuộcvớinókhỏiđồthịlàmtăngsốthànhphầnliênthôngcủađồthị.Cạn
heđượcgọilàcầunếuviệcloạibỏnókhỏiđồthịlàmtăngsốthànhphầnliênthôngcủa
đồthị.
Trang 18Vídụ8.TrongđồthịG ởhình8,đỉnhdvàelàđỉnhrẽnhánh,còncáccạnh(d,g)và(e,f) làcầu.
Đốivớiđồthịcóhướng,cóhaikháiniệmliênthôngphụthuộcvàoviệctacóxétđếnhướngtrêncáccunghaykhông
Địnhnghĩa1 5 ĐồthịcóhướngG=(V,A)đ ư ợ c gọilàliênthôngmạnhnếul
uôntìmđượcđườngđigiữahaiđỉnhbấtkỳcủanó.
Địnhnghĩa16.ĐồthịcóhướngG=(V,A)đượcgọilàliênthôngyếunếuđồthị
vôhướngtươngứngvớinólàđồthịvôhướngliênthông.
Rõràngnếuđồthịlàliênthôngmạnhthìnócũnglàliênthôngyếu,nhưngđiềungượclạilàkhôngluônđúng,nhưchỉratrongvídụdướiđây
Vídụ9.Tronghình9đồthịG làliênthôngmạnh,cònHlàliênthôngyếunhưngkhônglàliênthôngmạnh
Hình9.ĐồthịliênthôngmạnhG,ĐồthịliênthôngyếuH
Mộtcâuhỏiđặtralàkhinàocóthểđịnhhướngcáccạnhcủamộtđồthịvôhướngliênthôngđểcóthểthuđượcmộtđồthịcóhướngliênthôngmạnh?
Tasẽgọiđồthịnhưvậylàđồthịđịnhhướngđược.Địnhlýdướiđâychotatiêuchuẩnnhậnbiếtmộtđồthịcólàđịnhhướngđượchaykhông
Địnhlý3.Đồthịvôhướngliênthônglàđịnhhướngđượckhivàchỉk h i mỗicạ
nhcủanónằmtrênítnhấtmộtchutrình.
Trang 19Chứngminh.Điềukiệncần.Giảsử(u,v)làmộtcạnhcủađồthị,từsựtồntại
đườngđicóhướngtừuđếnvvàngượclạisuyra(u,v)phảinằmtrênítnhấtmộtchutrình
Điềukiệnđủ.Thủtụcsauđâychophépđịnhhướngcáccạnhcủađồthịđểthuđ
ượcđồthịcóhướngliênthôngmạnh.GiảsửClàmộtchutrìnhnàođótrong
đồthị.Địnhhướngcáccạnhtrênchutrìnhnàytheomộthướngđivòngtheonó.Nếutấtcáccạnhcủađồthịlàđãđượcđịnhhướngthìkếtthúcthủtục Ngượclại,Clàmộtcạnhchưađịnhhướngcóchungđỉnhvớiítnhấtmộttrongsốcác
chutrìnhC chứacạnhe.ĐịnhhướngcáccạnhchưađượcđịnhhướngcủaC’theomộthướngdọctheochutrìnhnày(không định hướnglạicáccạnhđãcóhướng).Thủtụctrênsẽđượclặplạichođếnkhitấtcảcáccạnhcủađồthịđượcđịnhhướng.Khiđótathuđượcđồthịcóhướngliênthôngmạnh
1.4 Mộtsốkháiniệm
TrongphầnnàychúngtachỉxétđồthịcóhướngG=(V,E)và|V|=n,
|E|
=mvớicáccungđượcgántrọngsố,nghĩalà,mỗicung(u,v)Ecủan ó đượcđặttươngứngvớimộtsốthựca(u,v)gọilàtrọngsốcủanó.Chúngtasẽđặta(u,v)=
,nếu(u,v)E.Nếudãyv0,v1, ,vplàmộtđườngđitrên
Bàitoántìmđườngđingắnnhấttrênđồthịdướidạngtổngquátcóthểđượcphátbiểudướidạngtổngquátnhưsau:Tìmđườngđicóđộdàinhỏnhấttừmộtđỉnhxuấtp
Trang 20hấttừsđếntcònđộdàicủanó,sẽkíhiệulàd(s,
Trang 21t)vàcòngọilàkhoảngcáchtừsđếnt(khoảngcáchđịnhnghĩanhưvậycót h ể
l à sốâm).Nếunhưkhôngtồntạiđườngđitừsđếntthìtađặtd(s,t)=từđótathấychutrìnhtrongđồthịcóđộdàidương,thìtrongđườngđin g ắ nnhấtkhôngcóđỉnhnà
olặplại(đườngđinhưthếgọilàđườngđicơbản).
Mặtkhác,nếutrongđồthịcóchutrìnhvớiđộdàiâm(gọilàchutrìnhâm)thìkh
oảngcáchgiữa
1sốcặpđỉnhnàođócủađồthịcóthểlàkhôngxácđịnh.Bởivì,bằngcáchđivòngtheochutrìnhnàymộtsốđủlớnlần,tacóthểchỉrađườngđigiữacácđỉnhnàycóđộdàinhỏhơnbấtkìsốthựcchotrướcnào.Trongtruờnghợpnhưvậy,cóthểđặtvấnđềt ì m đườngđicơbảnngắnnhất,tuynhiênbàitoánđặtrasẽtrởnênphứctạphơnrấtnhiều,bởivìnóchứabàitoánxétsựtồntạiđườngđiHamintơntrongđồthịnhưlàmộttrườnghợpriêng
Trướchết,cầnchúýrằngnếubiếtkhoảngcáchtừsđếnt,thìđườngđingắnnhấttừsđếnt,trongtrườnghợptrọngsốkhôngâm,cóthểtìmmộtcách dễdàng.Đểtìmđườngđi,chỉcầnchúýlàđốivớicặpđỉnhs,tVt u ỳ ý(st)luôntìmđượcđỉnhvsaocho:
d(s,t) =d(s,v)+a(v,t)Thựcvậy,đỉnhvnhưvậychínhlàđỉnhđitrướcđỉnhttrongđườngđingắnnhất
t ừ s đếnt Tiếptheo,t a cóthểt ìm đượcu s a o chod ( s, v)=d(s,u)
+a(u,v), Từgiảthiếtvềtínhkhôngâmcủacáctrọngsốdễdàngsuyrarằngdãyt,v,u, khôngchứađỉnhlặplạivàkếtthúcởđỉnhs.Rõràngdãythuđượcxácđịnhđườngđingắnnhấttừsđếnt
1.4.1 Đườngđingắnnhấtxuấtpháttừmộtđỉnh
PhầnlớncácthuậttoántìmkhoảngcáchgiữahaiđỉnhsvàtđượcxâydựngnhờThuậttoántính toán,màtacóthểmôtảđạithểnhưsau:từmatrận
Trang 22ngắnnhấttừsđếnnó.Cácnhãnnàysẽđượcbiếnđổitheothủtụclặp,màởmỗimộtbướ
cl ặ p cómộtnhãntạmthờitrởthànhnhãncốđịnh.Nếunhãncủamộtđỉnhnàođót r ở thànhc ố địnhthìn ó sẽ chot a khôngphảil à cậntrênmàl à độdàiđườngđingắnnhấttừđỉnhsđếnnó.Thuậttoánđượcmôtảnhưsau:
Trang 24KíhiệuS1làtậpcácđỉnhcónhãncốđịnh,S2làtậpcácđỉnhcónhãntạmthờiởbướclặpđangxét.Kếtthúcmỗibướclặpnhãntạmthờid(v)chot a độdàicủađườngđingắnnhấttừsđếnvchỉquanhữngđỉnhnằmhoàntoàntrongtậpS1.Giảsửrằng,đườngđingắnnhấttừuđếnu*khôngnằmtrọntrongtậpS1,tứclànóđiquaítnhấtmộtđỉnhcủatậpS2.GọizS2l à đỉnhđầutiênnhưvậytrênđườngđinày.Dotrọngsốtrêncáccunglàkhôngâm,nênđoạnđường từsđến u*cóđộdàiL>0vàd(z)<d(u*)-
L <d(u*)
Bấtđẳngthứcnàylàmâuthuẫnvớicáchxácđịnhđỉnhu*làđỉnhcónhãntạmthờinhỏnhất.Vậyđườngđinngắnnhấttừsđếnu*phảinằmtrọntrongtậpS1,vàvìthếd[u*]làđộdàicủanó.DoởlầnlặpđầutiênS1={s}vàsaumỗilầnlặptachỉthêmvàoS1mộtđỉnhu*nêngiảthiếtlàd(v)chođộdàiđườngđingắnnhấttừsđếnvvớimọiv
S1làđúngvớibướcl ặ p đầutiên.Theoquinạplàsuyrathuậttoánchotađườngđingắnnhấttừsđếnmọiđỉnhcủađồthị
Vídụ10.Tìmđườngđingắnnhấttừđỉnh1đếncácđỉnhcònlạicủađồthịởhìn
hsau:
Trang 25đỉnhđượcchọnđểcốđịnhnhãnởbướclặpđangxét,nhãncủanókhôngbiếnđổiởcácbướctiếptheo,vìthếtađánhdấu
Nếuchỉcầntìmđườngđingắnnhấttừsđếnmộtđỉnhtnàođóthìtacóthểkếtthúcthuậttoánkhitrởthànhcónhãncốđịnh
1.4.3 Đườngđitrongđồthịkhôngcóchutrình
Bâygiờtaxéttrườnghợpriêngthứhaicủabàitoántìmđườngđingắnnhất,màđ
ể giảinóc ó t h ể x â y dựngthuậttoánvớiđộphứct ạ p tínhtoánO ( n2),đólàđồthịkhôngcóchutrình(còntrọngsốtrêncáccungcóthểlàc á c sốthựctuỳý).Trướchếttachứng minhđịnhlýsau:
Địnhlý5.GiảsửGlàđồthịkhôngcóchutrình.Khiđócácđỉnhcủan ó cóthểđ
ánhsốsaochomỗicungcủađồthịchỉhướngtừđỉnhcóchỉsốnhỏhơnđếnđỉnhcóchỉs ốlớnhơn,nghĩalàmỗicungcủanócóthểbiểudiễndướidạng(v[i],
v[j]),trongđói<j.
Vídụ11.Đồthịtronghìnhsaucócácđỉnhđượcđánhsốthỏamãnđiềukiệnn
êutrongđịnhlý
Trang 26Hình10.ĐồthịkhôngcóchutrìnhĐểchứngminhđịnhlýtamôtảthuậttoánsau,chophéptìmracáchđánhsốthỏamãnđiềukiệnđịnhlý.
Trang 27gc ó chutrình,vàthủtụcđượclặp lạivớiđồthịmớinày Quá trìnhđósẽđượctiếptụcchođếnkhitấtcảcácđinỉhcủađồthịđượcđánhsố.
Tathấy:
1) Rõràngtrongbướckhởitạotaphảiduyệtquatấtcảcáccungcủađồth
tatốncỡO(m)phéptoán,trongđómlàsốcungcủađồthị.Tiếptheomỗilầnđánhsốmộtđỉnh,
Trang 28đểthựchiệnviệcloạibỏđỉnhđãđượcđánhsốcùngvớicáccungđirakhỏin ó ,chúngtasẽphảiduyệtquatấtcảcáccungnày.Suyrađểđánhsốtấtcảc á c đỉnhcủađồthịchúngtasẽphảduyệttấtcảcáccungcủađồthịmộtlầnnữa.
VậyđộphứctạpthuậttoánlàO(m)
2) Thuậttoáncóthểđểkiểmtraxemđồthịcóchứachutrìnhhaykhông?Thựcvậy,nếukếtthúcthuậttoánvẫncòncóđỉnhchưađượcđánhsố(num<n)thìđiềuđócónghĩalàđồthịchứachutrình
Docóthuậttoánđánhsốtrên,nênkhixétđồthịkhôngcóchutrìnhtac ó thểgiảthiếtlàcácđỉnhcủanóđượcđánhsốsaochomỗicungchỉđitừđỉnhcóchỉsốnhỏđếnđỉnhcóchỉsốlớnhơn.Thuậttoántìm đườngđingắnnhấttrênđồthịkhôngcóchutrìnhđượcmôtảtrongsơđồsauđây:
ProcedureCritical_Path;
(*Tìmđườngđingắnnhấttừđỉnhnguồnđếntấtcảcácđỉnhcònlạitrênđồthịkhôngcóchutrình*)