DFS和BFS的时间复杂度是相同的,没有优劣之分,只是视不同情况选择不同算法。
深度优先算法适合目标比较明确,以找到目标为主要目的的情况;
广度优先算法适合在不断扩大遍历范围时找到相对最优解的情况。
在图中:
- 如果按边的权重寻找:
比如最短路径之类的问题,首先找到距离起始点权重为1的点,之后找到权重为2的点…以此类推直至选找到最短的距离,这实质上就是BFS的一种变形。 - 如果按邻接点寻找:
比如寻找迷宫,只有一条到达出口的路径,这样的话,通过一个结点,在以这个结点为出发点进行类似操作…直至寻找到出口。即通过DFS的方法。