输入是一个无向的循环平面图,每个顶点最多有8个边。
以最短到最长的顺序枚举两个顶点v_0,v_1之间的所有路径的方法是什么?什么是计算复杂性?
如果无法实现上述目标,那么生成长度不长于K的所有路径的方法是什么。
答案 0 :(得分:2)
您希望获得最长路径的最短路径 - >表示你可以试试BFS。
路径不能包含循环 - >你应该存储路径已经传递了什么顶点(当你做BFS时)。
复杂性:您可以看到路径不包含循环意味着路径只能传递每个节点一次。因此,解决方案空间为O(n!),在最坏的情况下,BFS可能会访问解空间中的每个路径。所以复杂性是O(n!)。
你可能会对这个结果感到失望。好的,你的问题是一个已经得到很好研究的着名问题。你可以阅读这篇论文:
Finding the K Shortest Loopless Paths in a Network
Jin Y. Yen
或wikipedia pages以获得第K个最短路径问题的直观视图。