我想知道是否可以修改Dijkstra的算法来找到两个节点之间的路径,其中路径中所有边长的最大值都是最小的。
即,在单个边缘长度10的路径上优选边缘长度为1,3,5,9的路径,因为max(1,3,5,9)<1。最大值(10)
答案 0 :(得分:3)
是的,这可以使用Dijkstra算法
完成提示:在每个节点u,存储最小权重w,以便存在从s到u的访问顶点的路径,其最大权重为w。考虑在访问新顶点时修改松弛条件以满足上述条件。
答案 1 :(得分:0)
还记得d(u)是否由d(v)+ c(u,v)更新?现在,而不是你只需用max(d(v),c(u,v))更新d(u)。
另一种解决方案是对结果进行二分查找。对于给定的上限,您可以删除违反该上限的边,然后删除DFS / BFS以检查两个节点之间是否还有路径s&amp;吨。所以现在你可以尝试不同的上限来找到最紧密的二分法搜索。