如何在特殊条件下找到最短路径成本?

时间:2016-03-23 05:18:03

标签: graph path shortest

给定加权有向图G =(V,E),源顶点s,目标顶点t和子集v',如何在图中找到从s到顶点t的最短非循环路径?子集中的顶点必须包含在路径中。

1 个答案:

答案 0 :(得分:1)

这是Traveling Salesman Problem (TSP)的变体。

您可以通过在图表中运行所有到最短的路径(Floyd Warshall Algorithm)将您的问题转换为TSP的确切实例,然后创建一个新图表:

G'={V' U {s,t}, E'}
V' - the "must go through" subset
E' = { (s,v), (v,t), (u,v) | u,v in V'}  (In words: all edges between two nodes in the new graphs)

现在,找到通过G'中所有节点(TSP)的miminal路径,也是满足条件的最小路径(在两对之间的每条路径之后)。

不幸的是,TSP是NP-Complete问题(没有已知的多项式时间算法来解决它,而且大多数人认为一个甚至不存在),除非你的“必须通过节点”{{1相对较小(并且您可以承受算法的指数时间运行时间),您需要确定一个“足够好”的算法,这可能不是最佳的。

关于“无循环”的旁注 - 注意它可能是不可行的,例如:

V'

在此示例中,符合条件的唯一途径是 --------- | | v | s -> a -> b -> c | | t