JavaScript 中的最短路徑演算法
在圖論中,最短路徑問題是指在圖中找到兩個頂點(或節點)之間的一條路徑,使得構成它的邊的權重總和最小。這裡我們需修改新增邊和新增定向方法,以允許在邊中新增權重。
讓我們看看如何新增 −
示例
/** * Adds 2 edges with the same weight in either direction * * weight * node1 <================> node2 * weight * */ addEdge(node1, node2, weight = 1) { this.edges[node1].push({ node: node2, weight: weight }); this.edges[node2].push({ node: node1, weight: weight }); } /** * Add the following edge: * * weight * node1 ----------------> node2 * */ addDirectedEdge(node1, node2, weight = 1) { this.edges[node1].push({ node: node2, weight: weight }); } display() { let graph = ""; this.nodes.forEach(node => { graph += node + "->" + this.edges[node].map(n => n.node) .join(", ")+ "
"; }); console.log(graph); }
現在,在向圖中新增邊時,如果沒有指定權重,則會將預設權重 1 賦予該邊。我們現在可以使用它來實現最短路徑演算法。
廣告