vlambda博客
学习文章列表

1、什么是深度优先搜索算法

1、深度优先搜索所使用的策略就像其名字所隐含的:只要可能,就在图中尽量“深入”。深度优先搜索总是对最近才发现的结点 的出发边进行探索,直到该结点的所有出发边都被发现为止。一旦结点 的所有边都被发现,搜索则“回溯”到 的前驱节点( 是经过该结点才被发现的),来搜索该前驱结点的出发边。该过程一直持续到从源结点可以达到的所有节点都被发现位置。如果还存在尚未发现的结点,则深度优先搜索将从这些未被发现的结点中任选一个作为新的源结点,并重复同样的搜索过程。该算法重复整个过程,直到图中的所有的结点都被发现为止。

2、深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点 的所在边都己被探寻过,搜索将回溯到发现节点 的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。

3、深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。

图片一

参考资料:

【1】算法导论——第三版

【2】Leetcode 深度优先搜索算法

【3】图片一