版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、最短路徑問題,Mathematica Modeling,參考書: 1.傅鸝 龔劬 劉瓊蓀 何中市 數(shù)學(xué)實(shí)驗(yàn)科學(xué)出版社 2.張紹民 李淑華 數(shù)據(jù)結(jié)構(gòu)教程C語言版中國電力出版社,主要內(nèi)容,Floyd算法,Dijkstra算法,兩個(gè)例子的求解,引例2:最廉價(jià)航費(fèi)表的制定,引例1:最短運(yùn)輸路線問題,3,如圖的交通網(wǎng)絡(luò),每條弧上的數(shù)字代表車輛在該路段行駛所需的時(shí)間,有向邊表示單行道,無向邊表示可雙向行駛。若有一批貨物要從1號頂點(diǎn)運(yùn)往11號頂點(diǎn),問運(yùn)貨車應(yīng)沿哪條線路行駛,才能最快地到達(dá)目的地?,引例1:最短運(yùn)輸路線問題,4,某公司在六個(gè)城市C1,C2,C3,C4,C5,C6都有分公司,公司成員經(jīng)常往來于它
2、們之間,已知從Ci到Cj的直達(dá)航班票價(jià)由下述矩陣的第i行,第j列元素給出(表示無直達(dá)航班),該公司想算出一張任意兩個(gè)城市之間的最廉價(jià)路線航費(fèi)表。,引例2:最廉價(jià)航費(fèi)表的制定,5,最短路徑問題,定義:設(shè)P(u,v)是加權(quán)圖G中從u到v的路徑,則該路徑上的邊權(quán)之和稱為該路徑的權(quán),記為w(P). 從u到v的路徑中權(quán)最小者 P*(u,v)稱為u到v的最短路徑.,最短路徑算法,Dijkstra算法 使用范圍: 尋求從一固定頂點(diǎn)到其余各點(diǎn)的最短路徑; 有向圖、無向圖和混合圖; 權(quán)非負(fù). 算法思路: 采用標(biāo)號作業(yè)法,每次迭代產(chǎn)生一個(gè)永久標(biāo)號, 從而生長一顆以v0為根的最短路樹,在這顆樹上每個(gè)頂點(diǎn)與根節(jié)點(diǎn)之間
3、的路徑皆為最短路徑.,Dijkstra算法算法步驟,S: 具有永久標(biāo)號的頂點(diǎn)集; l(v): v的標(biāo)記; f(v):v的父頂點(diǎn),用以確定最短路徑; 輸入加權(quán)圖的帶權(quán)鄰接矩陣w=w(vi,vj)nxm. 初始化 令l(v0)=0,S=; vv0 ,l(v)=; 更新l(v), f(v) 尋找不在S中的頂點(diǎn)u,使l(u)為最小.把u加入到S中,然后對所有不在S中的頂點(diǎn)v,如l(v)l(u)+w(u,v),則更新l(v),f(v), 即 l(v)l(u)+w(u,v),f(v)u; 重復(fù)步驟2), 直到所有頂點(diǎn)都在S中為止.,MATLAB程序(Dijkstra算法),function min,pat
4、h=dijkstra(w,start,terminal) n=size(w,1); label(start)=0; f(start)=start; for i=1:n if i=start label(i)=inf; end, end s(1)=start; u=start; while length(s)(label(u)+w(u,v) label(v)=(label(u)+w(u,v); f(v)=u; end, end, end,v1=0; k=inf; for i=1:n ins=0; for j=1:length(s) if i=s(j) ins=1; end, end if ins
5、=0 v=i; if klabel(v) k=label(v); v1=v; end, end, end s(length(s)+1)=v1; u=v1; end,min=label(terminal); path(1)=terminal; i=1; while path(i)=start path(i+1)=f(path(i); i=i+1 ; end path(i)=start; L=length(path); path=path(L:-1:1);,9,最短路徑算法,Dijkstra算法程序的使用說明: 調(diào)用格式為 min,path=dijkstra(w,start,terminal),
6、其中輸入變量w為所求圖的帶權(quán)鄰接矩陣,start, terminal分別為路徑的起點(diǎn)和終點(diǎn)的號碼。返回start到terminal的最短路徑path及其長度min. 注意:頂點(diǎn)的編號從1開始連續(xù)編號。,最短路徑算法,Floyd算法 使用范圍: 求每對頂點(diǎn)的最短路徑; 有向圖、無向圖和混合圖; 算法思想: 直接在圖的帶權(quán)鄰接矩陣中用插入頂點(diǎn)的方法依次遞推地構(gòu)造出n個(gè)矩陣D(1), D(2), , D(n), D(n)是圖的距離矩陣, 同時(shí)引入一個(gè)后繼點(diǎn)矩陣記錄兩點(diǎn)間的最短路徑.,Floyd算法算法步驟,d(i,j) : i到j(luò)的距離; path(i,j): i到j(luò)的路徑上i的后繼點(diǎn); 輸入帶權(quán)鄰
7、接矩陣a(i,j). 1)賦初值 對所有i,j, d(i,j)a(i,j) , path(i,j)j,k=l. 2)更新d(i,j) , path(i,j) 對所有i,j, 若d(i,k)+d(k,j)d(i,j),則 d(i,j)d(i,k)+d(k,j) , path(i,j)path(i,k) , k k+1 3)重復(fù)2)直到k=n+1,MATLAB程序(Floyd算法),function D,path,min1,path1=floyd(a,start,terminal) D=a;n=size(D,1);path=zeros(n,n); for i=1:n for j=1:n if D(
8、i,j)=inf path(i,j)=j; end, end, end for k=1:n for i=1:n for j=1:n if D(i,k)+D(k,j)D(i,j) D(i,j)=D(i,k)+D(k,j); path(i,j)=path(i,k); end, end, end,end,if nargin=3 min1=D(start,terminal); m(1)=start; i=1; path1= ; while path(m(i),terminal)=terminal k=i+1; m(k)=path(m(i),terminal); i=i+1; end m(i+1)=te
9、rminal; path1=m; end,13,最短路徑算法,Floyd算法程序的使用說明: 1. D, path=floyd(a), 返回矩陣D, path 。其中a是所求圖的帶權(quán)鄰接矩陣,D(i,j)表示i到j(luò)的最短距離; path(i,j)表示i與j之間的最短路徑上頂點(diǎn)i的后繼點(diǎn). 2. D, path, min1, path1= floyd(a,i,j) 返回矩陣D, path; 并返回i與j之間的最短距離min1和最短路徑path1.,14,edge= 2,3,1,3,3,5,4, 4,1,7,6,6,5, 5,11, 1,8,6,9,10,8,9, 9,10;. 3,4,2,7,5
10、,3,5,11,7,6,7,5,6,11, 5, 8,1,9,5,11,9,8,10,9;. 3,5,8,5,6,6,1,12,7,9,9,2,2,10,10,8,8,3,7, 2, 9,9, 2, 2; n=11; weight=inf*ones(n, n); for i=1:n weight(i, i)=0; end for i=1:size(edge,2) weight(edge(1, i), edge(2, i)=edge(3, i); end dis, path=dijkstra(weight, 1, 11),引例1的Matlab求解,15,運(yùn)行上頁程序輸出: dis = 21 pa
11、th = 1 8 9 10 11 因此頂點(diǎn)1到頂點(diǎn)11的最短路徑為18 9 10 11, 其長度為21。,引例1的求解,16,建立腳本m文件如下: a= 0,50,inf,40,25,10;50,0,15,20,inf,25;inf,15,0,10,20,inf; 40,20,10,0,10,25;25,inf,20,10,0,55;10,25,inf,25,55,0; D, path=floyd(a) 運(yùn)行便可輸出結(jié)果。,引例2的Matlab求解,運(yùn)行輸出結(jié)果: D = 0 35 45 35 25 10 35 0 15 20 30 25 45 15 0 10 20 35 35 20 10 0 10 25 25 30 20 10 0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版淘寶商家與消費(fèi)者退款合同3篇
- 二零二五年度個(gè)人電子支付個(gè)人連帶責(zé)任保證合同4篇
- 二零二五年度基礎(chǔ)加固旋挖樁合同模板2篇
- 二零二五年度房屋抵押貸款合同(含還款計(jì)劃)4篇
- 二零二五年度創(chuàng)業(yè)培訓(xùn)學(xué)習(xí)協(xié)議
- 二零二五版污泥運(yùn)輸與污泥處理項(xiàng)目環(huán)境風(fēng)險(xiǎn)評估合同范本3篇
- 2025版職業(yè)培訓(xùn)機(jī)構(gòu)教師聘用合同3篇
- 河道預(yù)應(yīng)力管樁施工方案
- 鐵路聲屏障施工方案
- 二零二五年度個(gè)人教育貸款擔(dān)保合同范例4篇
- 《個(gè)體防護(hù)裝備安全管理規(guī)范AQ 6111-2023》知識培訓(xùn)
- 商品退換貨申請表模板
- 實(shí)習(xí)單位鑒定表(模板)
- 六西格瑪(6Sigma)詳解及實(shí)際案例分析
- 機(jī)械制造技術(shù)-成都工業(yè)學(xué)院中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 數(shù)字媒體應(yīng)用技術(shù)專業(yè)調(diào)研方案
- 2023年常州市新課結(jié)束考試九年級數(shù)學(xué)試卷(含答案)
- 正常分娩 分娩機(jī)制 助產(chǎn)學(xué)課件
- 廣東縣級農(nóng)商銀行聯(lián)社高管候選人公開競聘筆試有關(guān)事項(xiàng)上岸提分題庫3套【500題帶答案含詳解】
- 中國成人住院患者高血糖管理目標(biāo)專家共識課件
- 射頻技術(shù)在疼痛的應(yīng)用課件
評論
0/150
提交評論