赞
踩
深度优先搜索算法 (英语: Depth-First-Search , DFS )是一种用于遍历或搜索 树 或 图 的 算法 。. 这个算法会尽可能深的搜索树的分支。. 当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。
这个也是我们在数据结构中学过的,我在这也不赘述。不明白原理的可以查一下DFS算法。
我们俗称的不撞南墙不回头。
如上图,我们选择A做第一个,我们得到的是ACEDFB。其实这里的代码跟BFS用到的代码一样,只需要修改一下即可。接下来我们用代码实现。
- grap = {
- "A":["B","C"],
- "B":["A","C","D"],
- "C":["A","B","D","E"],
- "D":["B","C","E","F"],
- "E":["C","D"],
- "F":["D"]
- }
- #存图
-
- def DFS(grap,star): #DFS算法
- stack = [] #定义一个栈
- seen = set() #建立一个集合,集合就是用来判断该元素是不是已经出现过
- stack.append(star) #将任一个节点放入
- seen.add(star) #同上
- while (len(stack)>0) : #当队列里还有东西时
- ver = stack.pop() #取出栈顶元素 !!!!这里也就是与BFS的不同
- notes = grap[ver] #查看grep里面的key,对应的邻接点
- for i in notes: #遍历邻接点
- if i not in seen: #如果该邻接点还没出现过
- stack.append(i) #存入stack
- seen.add(i) #存入集合
- print(ver) #打印栈顶元素
-
-
- print(DFS(grap,"A"))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。