Javascript 中的最短路徑演算法


在圖論中,最短路徑問題是在圖中兩個頂點(或結點)之間找到一條路徑,其組成邊的權重之和最小。在這裡,我們需要修改我們的 add edge 方法,並新增 directed 方法,以允許在邊上新增權重。 

讓我們看看如何新增此項 −

示例

/**
   * 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。我們現在可以用此來實現最短路徑演算法。

更新時間:2020 年 6 月 15 日

921 次檢視

啟動您的 職業

透過完成課程獲得認證

入門
廣告
© . All rights reserved.