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 次查看

启动您的 职业

通过完成课程获得认证

入门
广告