js迪傑斯特拉演算法求最短路徑

2021-10-08 18:59:36 字數 3675 閱讀 3421

名詞解釋和下圖參考:

double[,] arr = new double[allvertices.count(), allvertices.count()]; //矩陣 

//allvertices所有三維座標點的集合

//lines 所有兩點的連線

/*** dijkstra演算法

/*** @param sourcev 源點的索引,從0開始

* @param adjmatrix 圖的鄰接矩陣,是乙個二維陣列

*/function dijkstra(sourcev, adjmatrix)

distcopy[sourcev] = dist[sourcev] = 0;

for (var i = 0; i < vertexnum; i++)

}count++;

}return ;

}/**

* @param v 源點索引, 從0開始

* @param d 非源點索引, 從0開始

* @param adjmatrix 圖的鄰接矩陣,是乙個二維陣列

*/function searchpath(v, d, adjmatrix)

queue.push(v);

for (var j = queue.length - 1; j >= 0; j--)

console.log('path',str);

var arr=str.split('->');

if(str.endswith('->'))

var rarr=;//字串陣列轉int陣列

for(var i=0;i

/*** 測試資料

5個點座標如上圖 虛線表示兩點相連

1:  0,0,0

2:  1,1,0

3:  -1,-1,0

4:  2,0,0

5:  0,-1,0

請求後台生成的矩陣為:

var pathmatrix = [[0,

1.73,

1.73,

"infinity",1],

[1.73,

0,"infinity",

1.73,

"infinity"],[

1.73,

"infinity",

0,"infinity",

"infinity"],[

"infinity",

1.73,

"infinity",

0,2.23],[

1,"infinity",

"infinity",

2.23,0]

];var ret = searchpath(4, 1, pathmatrix); //從第5點到第2點的最短路徑

(黑色連線;  紅綠藍為xyz輔助線)

//畫路徑

var ret = searchpath(4, 1, pathmatrix);   //從第5點到第2點的最短路徑

console.log('index', ret);

var geometry1 = new three.geometry();

for (var i = 0; i < ret.length; i++)

var line = new three.line(geometry1, new three.linebasicmaterial(), three.linepieces);

scene.add(line);

//補充

//threejs求三維兩點的距離

var distance = circlepoint4.position.distanceto(circlepoint5.position);

console.log(distance);

from:

迪傑斯特拉演算法求最短路徑

include define infinity 10000 define true 1 define false 0 define vertex num 6 typedef struct graph graph void shortestpath graph g,int v0,int p verte...

最短路徑 迪傑斯特拉演算法

例如,要求下圖v0到v8的最短路徑 所以我們可以找到這樣的一條最短路徑 下面是他的鄰接矩陣 偽 如下 define maxvex 9 define infinity 65535 typedef int patharc maxvex 用於儲存最短路徑下標的陣列 typedef int shortpat...

迪傑斯特拉最短路徑演算法

時間限制 1 sec 記憶體限制 32 mb 提交 27 解決 17 提交 狀態 命題人 外部匯入 題目描述 在帶權有向圖g中,給定乙個源點v,求從v到g中的其餘各頂點的最短路徑問題,叫做單源點的最短路徑問題。在常用的單源點最短路徑演算法中,迪傑斯特拉演算法是最為常用的一種,是一種按照路徑長度遞增的...