java – 扭曲的最短路径
作者:互联网
我有n个顶点和m个无向加权边(权重代表分钟).每个顶点包含在该顶点上喝咖啡所需的分钟数.
我想确定从顶点v到顶点w所需的最短时间(分钟),但是附加约束我必须在从v到w的路上的一个顶点上喝咖啡.
例:
(顶点中的数字是喝咖啡所需的分钟数,边缘上的重量表示行进此边缘所需的分钟数)
从v到w并在途中喝咖啡,输出最小的必要时间(输出应为30).
我目前的方法是找到Dijkstra的最短路径(总结该路径上所有边的权重),然后将该路径上具有最低咖啡时间的顶点值添加到我的结果中,以获得总量从v到w的必要时间.
我的方法不起作用,这是一个我的方法失败的例子(我的方法的结果是12分钟,实际结果应该是6分钟):
如何确定从顶点v到w的最短时间,以及我需要在路径上喝咖啡的约束?
解决方法:
解决此问题的标准方法是:
>制作2份图表 – need_coffee版本和had_coffee版本.
>将每个need_coffee节点与相应的had_coffee节点连接,边缘成本等于在该节点喝咖啡的成本.
>使用Dijkstra的算法找到从V_need_coffee到W_had_coffee的最短路径
标签:java,algorithm,graph-algorithm,shortest-path,dijkstra 来源: https://codeday.me/bug/20190722/1501343.html