graph - 具有一个负边缘的最短路径
问题描述
令 G(V,E) 是一个没有负环的有向连通图。除 ONE 边外,所有边都具有非负权重。从 s,t 在 V 中找到一条简单的最短路径。
我的想法 -
- 在图上做一个 BFS,找到负权重的边。
- 将此负权重添加到所有边缘,因此我们消除了负权重。
- 做 Dijkstra 算法。
我的想法行不通。
你能帮我找出原因吗?
谢谢你。
解决方案
您的方法不起作用的原因是它不公平地惩罚了具有更多边缘的路径。
想象一下从源节点到目的地的两条路径,一条边多但权重较低,另一条边少但权重较高。假设添加到每条边的权重为 3。
原始路径:
S -> 1 -> 1 -> 1 -> 1 -> 1 -> T wt = 5
S -> 4 -> 3 -> T wt = 7
添加权重后的路径:
S -> 4 -> 4 -> 4 -> 4 -> 4 -> T wt = 20
S -> 7 -> 6 -> T wt = 13
如您所见,第二条路径现在被错误地识别为较短的路径。
推荐阅读
- java - 如何从另一个文件夹执行jar文件
- c# - 如何使用实体框架将两个实体映射到一个数据库表(代码优先到现有数据库)?
- php - 类似功能不适用于搜索
- javascript - 两个标签之间的网页抓取,使用cheerio
- java - 如何使用嵌套数组列表将 JLabel 项目发送到 Apache POI
- python - 如何正确创建 saved_model.pb?
- node.js - 在 mongodb 中加入两个集合
- javascript - 试图在 turfJS 中配置可配置属性的可配置属性?
- floating-point - clang/gcc 仅使用 -ffast-math 生成 fma;为什么?
- asp.net - 内容安全策略框架祖先在 IE 11 中不起作用