我发现了许多算法和方法,这些算法和方法讨论寻找最短路径或问题的最佳/最优解决方案。但是,我想要做的是找到从一个点到另一个点的第一个K最短路径的算法。我面临的问题更像是通过树进行搜索,在每一步中,每个步骤都有多个选项。使用哪种算法来面对这类问题?搜索K-first短路径算法
1
A
回答
1
There is the 2006 paper by Jose Santos 比较三种不同的K-最短寻路算法。
0
日元的算法实现: http://code.google.com/p/k-shortest-paths/
更简单的算法&讨论: Suggestions for KSPA on undirected graph
0
编辑:显然我点击了一个链接,因为我觉得我是在回答到一个新的问题;如果 - 很可能 - 忽略这个问题 - 这个问题对你来说并不重要。
鉴于您正在处理的问题的限制版本,这变得更容易实现。需要注意的最重要的事情是,在树中,最短路径是两个节点之间的唯一路径。所以你要做的就是解决所有对最短路径,即树中的O(n²)
做n
BFS遍历,然后你得到最小值k
。这可能可以通过某种方式进行优化,但这种做法的天真方法是对O(n² log n)
时间的O(n²)
距离进行排序,并将k
的最小值进行排序;通过一些记录,您可以跟踪哪个距离对应于哪条路径,而无需时间复杂性开销。这会比使用KSPA算法的O(n²)
可能的s-t对更好的复杂性。
如果你实际上意味着是固定源,并得到与来自该源的最小距离的k
节点,一个BFS会做。如果你的意思是固定源和目标,那么一个BFS就足够了。
我不看你如何使用的事实,下面从节点去节点的水平边缘都具有相同的权重不知道更多关于树的结构。
相关问题
- 1. 最短路径tsp算法
- 2. 最短路径算法
- 3. 最短路径 - 广度优先搜索
- 4. AFP Dijkstra的最短路径算法
- 5. 增量Dijkstra或最短路径算法?
- 6. 最佳最短路径算法
- 7. 调整到最短路径算法
- 8. 最短路径更快 - SPFA算法?
- 9. Dijkstra的算法最短路径
- 10. Floyd-Warshall算法:得到最短路径
- 11. 寻找最短路径数的算法
- 12. 最短路径算法递归
- 13. 概率和最短路径算法
- 14. Floyd的最短路径算法C++
- 15. 在android中的最短路径算法
- 16. Dijkstra的最短路径算法修改
- 17. Floyd-Warshall算法 - 最短路径 - 将路径索引保存到数组
- 18. .so搜索路径
- 19. dlopen()搜索路径
- 20. 类路径搜索
- 21. 添加路径到Erlang搜索路径?
- 22. 条件路径搜寻算法
- 23. 路径查找算法:A * Vs跳转点搜索
- 24. 二叉搜索树 - 得到最重的路径算法C++
- 25. 连续搜索空间的路径算法?
- 26. 算法或途径路径问题,最短路径与n点n = 12
- 27. 有没有算法来计算最短的树(不是路径)?
- 28. 以2d形状表示的最短路径搜索
- 29. 搜索最短路径中的BFS性能
- 30. Python的DFS最短路径与加权搜索,无向图
就我所见,K最短路径搜索算法中提出的解决方案通常是处理图形。但是我面临的问题更多地与在树中找到最短路径有关,在每一步中,对于同一级别的所有节点,您都有相同的选项(具有相同的权重)。 – Fungsten 2010-11-19 11:05:03