1 算法原理
深度优先算法(DFS),其过程简要来说是对每一个可能的分支路径深入到不能再深入位置,而且每个节点只能访问一次。
2 基本思路
深度优先遍历图的方法是,从图中某顶点v出发:
- 访问顶点v;
- 依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;
- 若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。
3 算法步骤
- 递归下去
- 回溯上来
深度优先,则是以深度为准则,先一条路走到底,直到达到目标。这里称之为递归下去。
4 Code (网络搜集,未验证)
def DFS(graph, s):
stack = []
stack.append(s)
seen = set()
seen.add(s)
while len(stack) > 0:
vetex = stack.pop()
nodes = graph[vetex]
for w in nodes:
if w not in seen:
stack.append(w)
seen.add(w)
print(vetex)