이 알고리즘은 도시 간 최소 최단 거리를 계산하는 데 사용됩니다.
첨부된 글과 함께 더 자세히 알고 싶으신 분들을 위해 또 하나의 개선사항을 추가했습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!