
该算法用于计算城市之间的最小最短距离。
连同所附文章,如果您想了解更多信息,我添加了另一个增强功能。
const dijkstra = (graph) => {
const vertex = graph.length;
const path = new Array(vertex).fill(false);
const distance = new Array(vertex).fill(Infinity);
const prev = [-1];
distance[0] = 0; // source Node
const getMinDistanceIndex = (path, distance) => {
let min = Infinity;
let minIndex = -1;
for (let j = 0; j< vertex; j++) {
if (path[j] == false && min > distance[j]) {
min = distance[j];
minIndex = j;
}
}
return minIndex;
}
for (let i = 0; i < vertex; i++) {
const minDistanceIndex = getMinDistanceIndex(path, distance);
path[minDistanceIndex] = true;
for (let j = 0; j< vertex; j++) {
if (path[j] == false && graph[minDistanceIndex][j] > 0 && distance[minDistanceIndex] + graph[minDistanceIndex][j] < distance[j]) {
distance[j] = distance[minDistanceIndex] + graph[minDistanceIndex][j];
prev[j] = minDistanceIndex;
}
}
}
console.log(path, distance, prev);
}
const graph = [ [ 0, 4, 0, 0, 0, 0, 0, 8, 0 ],
[ 4, 0, 8, 0, 0, 0, 0, 11, 0 ],
[ 0, 8, 0, 7, 0, 4, 0, 0, 2 ],
[ 0, 0, 7, 0, 9, 14, 0, 0, 0],
[ 0, 0, 0, 9, 0, 10, 0, 0, 0 ],
[ 0, 0, 4, 14, 10, 0, 2, 0, 0],
[ 0, 0, 0, 0, 0, 2, 0, 1, 6 ],
[ 8, 11, 0, 0, 0, 0, 1, 0, 7 ],
[ 0, 0, 2, 0, 0, 0, 6, 7, 0 ]];
dijkstra(graph);
/*
[true, true, true, true, true, true, true, true, true]
[0, 4, 12, 19, 21, 11, 9, 8, 14]
[-1, 0, 1, 2, 5, 6, 7, 0, 2]
*/
如果您有任何疑问,请随时联系我
参考
https://www.geeksforgeeks.org/dijkstras-shortest-path-algorithm-greedy-algo-7/
以上就是使用 Javascript 的 Dijkstra 算法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号