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