在進行三維管線連通性分析時,需要運用到最短路徑演算法,主要思路為首先初始化圖,然後將查詢到的管點以及管線分別作為圖的頂點數以及邊數。
export default ,
clear: function () ;
this.pathmatirx = ;
this.shortpathtable = ;
},//初始化圖
init: function (points, lines) ,
path(start, end) ,
//建立圖
createmgraph: function (points, lines)
// console.log(g.vexs); //列印頂點
//無向圖構建
for (let i = 0; i < g.numvertexes; i++)
for (let i = 0; i < g.numvertexes; i++) else }}
}}
//有向圖構建
// for (let i = 0; i < g.numvertexes; i++) else
// if ((line.qddh === g.vexs[j] && line.zddh === g.vexs[i]))
// }
//// }
// }
// }
//鄰接矩陣初始化
// for (let i = 0; i < g.numvertexes; i++)
// }
// console.log(g.arc); //列印鄰接矩陣
},// 定義圖結構
mgraph: function (g) ,
dijkstra2: function (n)
this.shortpathtable[0] = 0;
final[0] = 1;
//初始化資料
for (let v = 0; v < g.numvertexes; v++)
min = infinity;
for (let w = 0; w < g.numvertexes; w++)
}// console.log("b " + shortpathtable, k, min);
final[k] = 1; //將目前找到的最近的頂點置位1
for (let w = 0; w < g.numvertexes; w++) }}
},printvn: function (start, end)
str = g.vexs[start] + str;
// console.log('最短路線:' + str);
arr.pop();
arr.push(start);
// console.log(arr);
return
}}
迪節特斯拉最短路徑演算法
最短路徑求取依靠的是鄰接矩陣 從點1出發 依次到其他各點的距離是 無窮大代表無法到達,其中1 2的距離最短 然後檢視2到達各點的距離 發現2 4距離為3然後更新1點到各點的距離 依次是0 1 12 1 3 無窮 無窮 然後查點4到達其餘個點的距離 然後 其到3點的距離為4,因為1 3 4 12故更新...
最短路之Dijkstra 迪傑斯特拉
一般用法 dijkstra 迪傑斯特拉 演算法是典型的單源最短路徑演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法是很有代表性的最短路徑演算法,在很多專業課程中都作為基本內容有詳細的介紹,如資料結構,圖論,運籌...
最短路徑演算法Dijkstra演算法(迪傑斯特拉演算法)
網路 dist i 表示當前找到的v0到i的最短距離 path i 表示v0到i i的前一節點 void dij mgraph g,int dist,int path,int v0 else visted v0 true dist v0 0 path v0 v0 for i 1 i 在當前距離記錄中...