本文只是总结的相关概念,仅供自己复习,严禁转载,文末附有本文内容涉及的文章链接,请点开链接查看原文!
(一)深度优先
深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS(Depth First Search)。深度优先搜索利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。
文字描述过程:广度优先搜索在进一步遍历图中顶点之前,先访问当前顶点的所有邻接结点。
a .首先选择一个顶点作为起始结点,并将其染成灰色,其余结点为白色。
b. 将起始结点放入队列中。
c. 从队列首部选出一个顶点,并找出所有与之邻接的结点,将找到的邻接结点放入队列尾部,将已访问过结点涂成黑色,没访问过的结点是白色。如果顶点的颜色是灰色,表示已经发现并且放入了队列,如果顶点的颜色是白色,表示还没有发现
d. 按照同样的方法处理队列中的下一个结点。 基本就是出队的顶点变成黑色,在队列里的是灰色,还没入队的是白色。
其过程简要来说是沿着树的深度遍历树的节点,对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。没次选择一个未被发现的节点作为源节点并重复以上