枚举前2 ^ 20个路径,这些路径不包括两个顶点之间的循环

时间:2013-04-26 09:16:19

标签: algorithm cyclic-graph

输入是一个无向的循环平面图,每个顶点最多有8个边。

以最短到最长的顺序枚举两个顶点v_0,v_1之间的所有路径的方法是什么?什么是计算复杂性?

如果无法实现上述目标,那么生成长度不长于K的所有路径的方法是什么。

1 个答案:

答案 0 :(得分:2)

您希望获得最长路径的最短路径 - >表示你可以试试BFS。

路径不能包含循环 - >你应该存储路径已经传递了什么顶点(当你做BFS时)。

复杂性:您可以看到路径不包含循环意味着路径只能传递每个节点一次。因此,解决方案空间为O(n!),在最坏的情况下,BFS可能会访问解空间中的每个路径。所以复杂性是O(n!)。

你可能会对这个结果感到失望。好的,你的问题是一个已经得到很好研究的着名问题。你可以阅读这篇论文:

Finding the K Shortest Loopless Paths in a Network
Jin Y. Yen

wikipedia pages以获得第K个最短路径问题的直观视图。