Javascript 中的最短路径算法
front end technologyweb developmentjavascript
在图论中,最短路径问题是在图中两个顶点(或节点)之间找到一条路径的问题,使得其组成边的权重总和最小化。在这里,我们需要修改我们的添加边和添加有向方法,以便也允许向边添加权重。
让我们看看如何添加这个 −
示例
/** * 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。我们现在可以使用它来实现最短路径算法。