UNPKG

@antv/x6

Version:

JavaScript diagramming library that uses SVG and HTML for rendering.

36 lines 1.21 kB
import { PriorityQueue } from './priorityqueue'; export var Dijkstra; (function (Dijkstra) { function run(adjacencyList, source, weight = (u, v) => 1) { const dist = {}; const previous = {}; const scanned = {}; const queue = new PriorityQueue(); dist[source] = 0; Object.keys(adjacencyList).forEach((v) => { if (v !== source) { dist[v] = Infinity; } queue.insert(dist[v], v, v); }); while (!queue.isEmpty()) { const u = queue.remove(); scanned[u] = true; const neighbours = adjacencyList[u] || []; for (let i = 0; i < neighbours.length; i += 1) { const v = neighbours[i]; if (!scanned[v]) { const alt = dist[u] + weight(u, v); if (alt < dist[v]) { dist[v] = alt; previous[v] = u; queue.updatePriority(v, alt); } } } } return previous; } Dijkstra.run = run; })(Dijkstra || (Dijkstra = {})); //# sourceMappingURL=dijkstra.js.map