DFS——深度优先搜索基础

【0】README

0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 review DFS——深度优先搜索 的基础知识;


【1】深度优先搜索的应用

1.1)深度优先搜索算法描述(转自天勤计算机考研高分笔记——数据结构)

  • 1.1.1)图的深度优先搜索遍历(DFS)类似于二叉树的先序遍历。它的基本思想是(steps):
    • step1)首先访问出发点v, 并将其标记为已访问过;
    • step2) 然后选取与v 邻接的未被访问的任意一个顶点w , 并访问它;
    • step3)再选取与w 邻接的未被访问的任一顶点并访问它, 依次重复进行;
    • step4)当一个顶点所有的邻接顶点都被访问过时, 则依次退回到最近被访问过的顶点(这里就是一个递归访问的过程), 若该顶点还有其他邻接顶点未被访问, 则从这些未被访问的顶点中取一个重复上述的访问过程, 直至图中所有顶点都被访问过为止;

1.2)全局布尔型数值 Visited[] 初始化为false。 通过只对那些尚未被访问的节点递归调用该函数, 我们保证不会陷入无限循环。如果图是无向的且不连通的, 或是有向的但非强连通的,这种方法可能会访问不到某些节点。 此时,我们搜索一个未被标记的节点, 然后应用深入优先遍历, 并继续这个过程直到不存在未标记的节点为止。 因为该方法保证每一条边只访问一次, 所以只要使用邻接表, 则执行遍历的总时间就是 O(|E| + |V|);

你可能感兴趣的:(DFS——深度优先搜索基础)