graphs
深度优先搜索(DepthFirstSearch)
找一个顶点,首先访问它一个相邻顶点,并继续访问该相邻顶点的一个相邻顶点,重复执行直到当前正在被访问的顶点出度为零,或者不存在未访问状态的相邻顶点,则回退到上一个顶点继续按照该深度优先方式访问。因为存在回溯行为,所以需要借助栈结构保存顶点,或者直接利用递归调用产生的方法栈帧来完成回溯。
广度优先搜索(BreadthFirstSearch)
一次性访问当前顶点的所有未访问状态相邻顶点,并依次对每个相邻顶点执行同样处理。因为要依次对每个相邻顶点执行同样的广度优先访问操作,所以需要借助队列结构来存储当前顶点的相邻顶点
1.png
深度优先更适合目标比较明确,以找到目标为主要目的的情况,而广度优先更适合在不断扩大范围时找到相对最优解的情况
网友评论