深度优先搜索(Depth First Search,DFS)类似于树的先序遍历,是树的先序遍历的推广。
假设初始状态是图中所有顶点未被访问,则深度优先搜索可以从图的某个顶点i出发,访问此结点,然后依次从i的未被访问的邻接点出发递归地进行同样的深度优先搜索,直至图中所有和i有路径相通的顶点都被访问到;若此时图中尚有未被访问的顶点(非连通图),则另选一个未被访问的顶点作为起始点,重复上述过程,直至图中所有顶点都被访问到。
以上图所示的无向图为例,A作为起始点,以字母序选择邻接点(理论上可以选择任意一个邻接点,但是在实际情况下算法是在一个确定的数据结构上运行的,所以会以一种确定的顺序选择邻接点,这里选择字母序),给出遍历结果如下:
A B D C E F G H I