NOIP信息联赛

来源:百度知道 编辑:UC知道 时间:2024/06/17 17:51:58
Dijkstra - Bellman-Ford(SPFA) - Floyd-Warshall - Johnson算法
的优缺点
请详细说明:时间复杂度和空间复杂度

如楼上所说,前两个算法是单源最短路算法。
先说第一第二个,根据戴克斯图拉和BellmanFord算法的过程,relaxation操作复杂度为O(V),dij’算法实质上是对顶点的出边执行relaxation,B'F'算法对每条边有可能执行多次relaxation,dij’算法的时间复杂度是O(V平方), B'F'的时间复杂度是O(VE)。 通常情况下,dij’的效率比B'F'更好。
对每个顶点应用dij’算法 实际上也可以获得第三个算法的效果,也就是求每对点之间的最短路径长度。算法时间复杂度是O(V立方),F'W'J'算法只是一种形式上简化的算法,事实上复杂度也是O(V立方)。

以上是以邻接表为存储结构时的复杂度。更加具体的算法描述和论证分析可以参考《图论及其应用》或《算法导论》。空间负责度我自己说不清楚不敢乱说。 :)

前面两个是单源最短路算法
后面两个是每对点间的最短路算法

floyed代码很简单(只有四行)复杂度O(n^3)据说不能记路径

NOIP只要动规和字符串处理就够啦~~~~

Bellman-Ford和SPFA是不同的
对于联赛,只要掌握SPFA和 Floyd就可以了
SPFA是队列优化的Bellman-Ford,时间复杂度在你说的那些是最小的,其实还有更下的,就是堆优化的Dijkstra,但编写没SPFA快
FLOYED对于求全图是最好的