深度优先(Depth-First-Search)和广度优先(Breadth-First-Search)是我们遍历图的两种方式,它们都属于穷举法,用来系统的遍历图中的所有顶点
关于如何再一个有向图/无向图中进行深度优先或者是广度优先,大家应该都清楚了
但为了真正认识到该算法的功效和深度,我们不应该根据图的图形,而是应该根据它的邻接矩阵或者邻接链表来跟踪算法的操作
可以用一张表来比较两者
项目 | DFS | BFS |
数据结构 | 栈 | 队列 |
顶点顺序的种类 | 两种顺序 | 一种顺序 |
变得种类(无向图) | 树向边和回边 | 数向边和交叉边 |
应用 | 连通性,无环性,关节点 | 无环性,连通性,最少边路径 |
邻接矩阵的效率 | V^2 | V^2 |
邻接链表的效率 | V+E | V+E |
注:V为图中顶点数量,E是边的数量
本文参考《introduction to the design and analysis of algorithms》