【数学建模】图论模型-dijkstra算法(最优化)
生活随笔
收集整理的這篇文章主要介紹了
【数学建模】图论模型-dijkstra算法(最优化)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、算法介紹
- 1. 帶權鄰接矩陣
- 二、適用問題
- 三、算法總結
- 1. 步驟
- 四、應用場景舉例(待完善)
- 五、MATLAB代碼
- 六、實際案例
- 七、論文案例片段(待完善)
dijkstra算法主要針對數學建模問題中的一些小的子問題進行求解,如果想直接使用請跳轉至——四、五
視頻回顧
一、算法介紹
? Dijkstra算法能求-一個頂點到另一-頂點最短路徑。它是由Di jkstra于1959年提出的。實際它能出始點到其它所有頂點的最短路徑Dijkstra算法是一種標號法:給賦權圖的每一一個頂點記一個數,稱為頂點的標號(臨時標號,稱T標號,或者固定標號,稱為P標號)。T標號表示從始頂點到該標點的最短路長的上界; P標號則是從始頂點到該頂點的最短路長。
1. 帶權鄰接矩陣
- 無向
- 有向
二、適用問題
- 圖的最短路徑問題,單源最短路徑問題求解
- 例如:
三、算法總結
1. 步驟
四、應用場景舉例(待完善)
五、MATLAB代碼
function [min,path]=dijkstra(w,start,terminal) n=size(w,1); label(start)=0; f(start)=start; for i=1:nif i~=startlabel(i)=inf; end, end s(1)=start; u=start; while length(s)<nfor i=1:nins=0;for j=1:length(s)if i==s(j)ins=1;end, endif ins==0v=i;if label(v)>(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:nins=0;for j=1:length(s)if i==s(j)ins=1;end, endif ins==0v=i;if k>label(v)k=label(v); v1=v;end, end, ends(length(s)+1)=v1; u=v1; end min=label(terminal); path(1)=terminal; i=1; while path(i)~=startpath(i+1)=f(path(i));i=i+1 ; end path(i)=start; L=length(path); path=path(L:-1:1);六、實際案例
weight= [0 2 8 1 Inf Inf Inf Inf Inf Inf Inf;2 0 6 Inf 1 Inf Inf Inf Inf Inf Inf;8 6 0 7 5 1 2 Inf Inf Inf Inf;1 Inf 7 0 Inf Inf 9 Inf Inf Inf Inf;Inf 1 5 Inf 0 3 Inf 2 9 Inf Inf;Inf Inf 1 Inf 3 0 4 Inf 6 Inf Inf;Inf Inf 2 9 Inf 4 0 Inf 3 1 Inf;Inf Inf Inf Inf 2 Inf Inf 0 7 Inf 9;Inf Inf Inf Inf 9 6 3 7 0 1 2;Inf Inf Inf Inf Inf Inf 1 Inf 1 0 4;Inf Inf Inf Inf Inf Inf Inf 9 2 4 0;]; [dis, path]=dijkstra(weight,1, 11)七、論文案例片段(待完善)
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【数学建模】图论模型-dijkstra算法(最优化)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数学建模】多属性决策模型(评价与决策)
- 下一篇: 【数学建模】图论模型-Floyd算法(最