深度优先搜索和广度优先搜索一样,都是对图进行搜索的算法,目的也就是从七点开始搜索到指定顶点(终点)。
深度优先搜索会沿着一条路径不断往下搜索,直到不能再继续为止,然后再折返,开始搜索下一条候补路径。

步骤
标记A为起点G为终点。一开始在起点A上。
将A标记为正在搜索的顶点,B、C、D为下一步的候补顶点。
搜索顶点A,A不是G(终点),将A标记为已搜索状态。
从候补顶点中选择一个顶点,优先选择最新成为候补顶点的顶点,如果候补顶点是同时产生的,那么可以从中随意选择一个。
这里选择顶点B作为正在被搜索的顶点,B从候补顶点中移除。(这里候补顶点采用的是后入先出的方式来管理的LIFO,因此可以使用栈这个数据结构)。
那么E和F就被添加到为候补顶点。
搜索B,B不是G(终点),将B标记为已搜索状态。
取候补顶点中最新的顶点作为正在搜索的顶点。
这里取E作为正在被搜索的顶点。
将E从候补顶点中移除。
将K添加为新的候补顶点。
搜索E,E不是G(终点),将E标记为已搜索状态。
从候补顶点中取出顶点K,将K作为正在被搜索状态。
搜索K,K不是G(终点),将K状态改为已搜索。
从候补顶点中取出F,将顶点F标记为正在搜索的状态。
以此类推
...
...
深度优先搜索的搜索顺序是A、B、E、K、F、C、H、G
深度优先搜索的特征为沿着一条路径不断往下,进行深度搜索。虽然广度优先搜索和深度优先搜索在搜索顺序上有很大的差异,但是在操作步骤上却只有一点不同,那就是选择哪一个后不定点作为下一个顶点的基准不同。
广度优先搜索选择的是最早成为候补顶的顶点,而深度优先搜索选择的是最新成为候补顶点的店,随意会一路往下,沿着发现的新路径不断深入搜索。
网友评论