【发布时间】:2015-01-24 20:54:01
【问题描述】:
我有一个有向图,如下所示:
我想找到从开始到结束最便宜的路径,其中橙色虚线都是有效路径所必需的。
自然的最短路径是:开始 -> A -> B -> 结束,结果成本 = 5,但我们还没有满足所有必需的边缘访问。
我想要找到的路径(通过一般解决方案)是 Start -> A -> B -> C -> D -> B -> End 其中成本 = 7,我们有满足所有必需的边缘访问。
有人对如何要求这样的边缘遍历有任何想法吗?
【问题讨论】:
-
所以这是最短的步行,而不是路径,对吧?
-
是否保证一次walk可以覆盖所有边缘? (例如,如果没有边缘数据库怎么办?)
-
@JuanLopes,假设在本例中您将遍历 1 个节点 2x 次,则它符合步行的条件,而不仅仅是一条路径。我认为所有示例实际上都会遍历一些 > 1x 的节点。
-
@j_random_hacker 不保证单次步行可以覆盖所有边缘。我相信这是问题中最困难的部分。
-
在最一般的形式中,这个问题是 NP-hard。我们可以对图表做任何假设吗?证明:如果您从旅行推销员的实例开始,您可以将每个节点拆分为两个节点对:一个具有传入边,一个具有传出边。在每个节点对之间创建一条边,并要求该边成为解决方案的一部分。然后你就有了这个问题的一个例子,所以如果你能在多项式时间内解决这个问题,你可能会赢得巡回奖。
标签: algorithm graph shortest-path