当前位置:   article > 正文

DFS算法(python)_python dfs

python dfs

深度优先搜索算法 (英语: Depth-First-Search , DFS )是一种用于遍历或搜索 树 或 图 的 算法 。. 这个算法会尽可能深的搜索树的分支。. 当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。

这个也是我们在数据结构中学过的,我在这也不赘述。不明白原理的可以查一下DFS算法

我们俗称的不撞南墙不回头。

如上图,我们选择A做第一个,我们得到的是ACEDFB。其实这里的代码跟BFS用到的代码一样,只需要修改一下即可。接下来我们用代码实现。

  1. grap = {
  2. "A":["B","C"],
  3. "B":["A","C","D"],
  4. "C":["A","B","D","E"],
  5. "D":["B","C","E","F"],
  6. "E":["C","D"],
  7. "F":["D"]
  8. }
  9. #存图
  10. def DFS(grap,star): #DFS算法
  11. stack = [] #定义一个栈
  12. seen = set() #建立一个集合,集合就是用来判断该元素是不是已经出现过
  13. stack.append(star) #将任一个节点放入
  14. seen.add(star) #同上
  15. while (len(stack)>0) : #当队列里还有东西时
  16. ver = stack.pop() #取出栈顶元素 !!!!这里也就是与BFS的不同
  17. notes = grap[ver] #查看grep里面的key,对应的邻接点
  18. for i in notes: #遍历邻接点
  19. if i not in seen: #如果该邻接点还没出现过
  20. stack.append(i) #存入stack
  21. seen.add(i) #存入集合
  22. print(ver) #打印栈顶元素
  23. print(DFS(grap,"A"))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/462516
推荐阅读
相关标签
  

闽ICP备14008679号