我正在寻找最有效的算法,根据Big O Notation,找到未加权有向图中两个节点之间的最短路径。
我主要是在Dijkstra与堆之间分配,如果图表被加权,我通常会使用它,并且先调制口径。
图表未加权是否会使Dijkstra在这种情况下使用效率低于BFS?
答案 0 :(得分:1)
根据Wikipedia,
单源最短路径
O(V + E)
O(V²)
O((E+V)logV)
O(E + VlogV)
- Fredman& Tarjan实施O(EloglogV)
- Johnson,Karlsson和Poblete Implementation A *的时间复杂度取决于启发式。在无界搜索空间的最坏情况下,扩展的节点数在解的深度呈指数(最短路径) d : O(b d ),其中b是分支因子(每个州的平均后继数)。
选择最适合你的那个。
答案 1 :(得分:0)
在一般情况下,没有已知的算法能够胜过宽度优先搜索单一来源,单一目的地最佳最短路径(无论是指向的还是无向的)。
但是,如果您有一个特殊情况,您可以提供可接受的启发式,那么您将能够使用A *搜索实现更有效的搜索。