@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering
35 lines • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.dijkstra = dijkstra;
const priorityqueue_1 = require("./priorityqueue");
function dijkstra(adjacencyList, source, weight = (u, v) => 1) {
const dist = {};
const previous = {};
const scanned = {};
const queue = new priorityqueue_1.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;
}
//# sourceMappingURL=dijkstra.js.map