最短路径算法有三种,Floyd,dijkstra,Bellman_Ford。其中,Floyd适合用于计算每两点间的路径,dijkstra适合稀疏图,bellman则适合稠密图中的已知起点终点,计算最短路径的问题。
时间复杂度,floyd算法为n立方,dijk为n平方,bellman为n平方,其中n是点数。
dijk可用堆维护,时间复杂度可减至nlogn,而bellman可用队列维护,此方法于1994年被国人提出,命名比较土鳖叫SPFA(shortest path faster algorithm。。。)
最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。
算法具体的形式包括:
1. 确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题。
2. 确定终点的最短路径问题 - 与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。
3. 确定起点终点的最短路径问题 - 即已知起点和终点,求两结点之间的最短路径。
4. 全局最短路径问题 - 求图中所有的最短路径。
涉及的算法包括:Dijkstra算法、A*算法、SPFA算法、Bellman-Ford算法、Floyd-Warshall算法、Johnson算法等。
可根据不同的需要选择不同的算法。