acwing算法基础之搜索与图论--最短路问题

目录

  • 1 基础知识
  • 2 模板
  • 3 工程化

1 基础知识

假设有n个结点,m条边(边的长度或者权重不一致),最短路问题的分类及求解方法如下:
1 单源最短路问题,例如求结点1到结点n的最短距离。
1.1 所有边的权重都是正的。

  • 朴素版dijkstra算法,时间复杂度为O(n^2)。时间复杂度与边数无关,适合于稠密图。它是基于贪心实现的。
  • 堆优化版dijkstra算法,时间复杂度为O(mlogn)。适合于稀疏图。它是基于贪心实现的。

1.2 存在负权边。

  • bellman-ford算法,时间复杂度为O(nm)。它是基于离散数学中的一些知识实现的。
  • spfa算法,一般情况下,时间复杂度为O(m);最坏情况下,时间复杂度为O(nm)。

2 多源最短路问题,例如求n个结点中两两结点的最短距离。

  • floyd算法,时间复杂度为O(n^3)。它是基于动态规划实现的。

2 模板

待补充。。。

3 工程化

待补充。。。

你可能感兴趣的:(Acwing,C++学习,算法,图论)