浅谈深度优先搜索(DFS)和广度优先搜索(BFS)

算是学习笔记:B站 正月点灯笼 讲的DFS和BFS推荐大家去看一看,另外一部分是七月在线的在线课程

隐式图问题
• 状态(结点)不确定(明显)
• 关系(边)不确定(明显)
• 如何确定状态和关系(重点)

• 图搜索
    • 深度优先遍历(DFS)
    • 广度优先遍历(BFS)
• 隐式图搜索
    • N皇后问题、骑士游历问题、八数码
    
遍历:定义
• 按某种顺序访问“图”中所有的节点
• 顺序
    • 深度优先(优先往深处走
    • 广度优先(优先走最近的
• 时间复杂度 O(n + m)
• 空间复杂度?

遍历
• 给出图G,要求求从入口v1访问到每一个点
• 两种遍历方式的数据结构
    • 栈(递归,深度优先)
    • 队列(广度优先)
• 广度优先找出的路径,经过节点数最少

深度优先DFS:伪代码
 
void DFS(int v)
 
    visited[v] = true
 
    for (v的每一个邻接点w)
 
        if (!visited[w]) //如果没有被访问过
             
              DFS(w)
 
举例,比如对于下图的路径的搜索:
#  DFS  利用栈
graph = {
    "A":["B", "C"],
    "B": ["A", "C", "D"],
    "C": ["A","B","D","E"],
    "D": ["B","C",&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值