名詞解釋和下圖參考:
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中的其餘各頂點的最短路徑問題,叫做單源點的最短路徑問題。在常用的單源點最短路徑演算法中,迪傑斯特拉演算法是最為常用的一種,是一種按照路徑長度遞增的...