图遍历Graph traversal

按一定顺序访问可达顶点和边,记录已经访问的状态,为路径、依赖与连通性分析提供基础。

怎样选择#

  • V 为顶点数,E 为边数。O(V+E) 依赖邻接表等能按实际边数遍历邻接关系的表示;邻接矩阵遍历通常为 O(V²)。
  • 从一个起点出发只访问其可达部分;要遍历整个不连通图,需要从未访问的顶点继续启动。

算法对照#

具体算法问题与前提时间复杂度辅助空间选择与取舍
广度优先搜索无权图的最少边数路径或按层探索邻接表 O(V+E)O(V+E)O(V)O(V),不含图本身与最终路径输出队列维护前沿;首次发现的层数对应起点到顶点的最少边数。
深度优先搜索依赖关系、访问次序、环与回溯分析邻接表 O(V+E)O(V+E)O(V)O(V),包括访问状态和最坏递归 / 显式栈递归或显式栈;有向图环检测还需区分正在访问与已完成状态。

左右滑动查看完整对照。点击算法名称,查看原理、约束和实现。

工程中的应用#

参考资料#

MIT 6.006 · Breadth-First Search

MIT 6.006 · Depth-First Search

2 个概念