【算法】深度优先和广度优先
图的遍历
以图中的某一个顶点出发遍历图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历
深度优先遍历
- 有点类似于树的前序遍历
算法逻辑:
- 从图中的某个顶点v出发,访问v
- 找到刚访问过的顶点的第一个未被访问的邻接点,访问该顶点。以该顶点为新顶点,重复此步骤,直至刚访问的顶点没有未被访问的邻接点为止
- 返回前一个访问过的且有未被访问的邻接点的顶点,找到该顶点的下一个未被访问的邻接点,访问该顶点
- 重复2,3,直到图中的所有顶点都被刚问过
广度优先
- 类似于树的层序遍历
算法描述:
- 从图中的某个顶点v出发,访问v
- 依次访问v的各个未被访问过的邻接点
- 分别从这些邻接点出发,依次访问它们的邻接点,并使 被访问的顶点 先于 后被访问的顶点的邻接点 被访问。
- 重复步骤3,直到图中所有已被访问的顶点的邻接点都被访问到