下面来讲一下图的深度优先搜索的方法。
遍历原则:
从图中某一个指定的顶点v出发,先访问v,然后从该顶点未被访问过的邻接顶点w出发进行深度优先搜索,直到图中与v想通的所有顶点都被访问,此时相当于完成图中一个包含顶点v的连通分量的遍历。如果图中存在尚未遍历过的顶点,则从另一个未被访问的顶点出发重复上述过程,直到图中所有顶点均被遍历到。
显然,深度优先搜索算法是一种递归算法。
分析:
假设有一幅图,如下图所示。
该图的邻接表为:
如果对该图进行深度优先搜索,步骤如下:
STEP1:从顶点A出发进行深度优先搜索。首先访问顶点A,并将A标注为已访问状态(图中标注为黄色),然后去找顶点A的第一个邻接点,如果第一个邻接点已被访问,则搜索顶点A的下一个邻接点。显然,顶点A的第一个邻接点为顶点B,且B未被访问。
STEP2:访问顶点B,并将B标注为已访问状态(图中标注为绿色),然后寻找顶点B的第一个邻接点,该邻接点为A,但是由于顶点A已经被访问过,因此继续寻找顶点B的下一个邻接点C,发现顶点C未被访问过。