BFS广度优先搜索之算法框架

news/2024/7/20 23:03:36 标签: 算法, 宽度优先, 深度优先

BFS 和 DFS 的区别

  • BFS:用来搜索 最短路径 比较合适,如:求二叉树最小深度、最少步数、最少交换次数,一般与 队列 搭配使用,空间复杂度比 DFS 大很多
  • DFS适合搜索全部的解,如:寻找最短距离,一般与 搭配使用
def BFS(start, target):
    """计算从 start 到 target 的最近距离"""
    q = []	# 队列,先进先出
    visited = {}	# 避免走回头路
    
    q.append(start)	# 将起点加入队列
    visited.add(start)	
    
    step = 0	# 记录扩散步数
    
    while q:
        for i in range(len(q)):
            cur = q.pop()
            
            # 判断是否达到终点
            if cur == target:
                return step
            
            # 将 cur 相邻的节点加入队列
            for j in cur.adj():
                if j not in visited:
                    q.insert(0, j)	# 队列:先进先出
                    visited.add(j)
        
        # 更新步数
        step += 1

http://www.niftyadmin.cn/n/203058.html

相关文章

干货 | 降低复杂度提升效率,DDD在携程用车/租车订单系统重构中的实践

作者简介小白龙,携程资深后端开发工程师,关注架构落地、研发效能领域。随着历史业务不断迭代和业务场景越来越复杂,携程用车、租车(简称两车)面临历史技术债和系统复杂度越来越高带来的理解、维护、迭代困难等问题&…

九龙证券|主力斥近8亿元暴拉设备龙头,多股已获连续加仓

苹果布局折叠屏手机,产业有望迎放量。 今日半导体芯片板块全线迸发,源杰科技、雅克科技、瑞芯微等涨停,芯源微、国科微等10余股涨超10%。AI概念股全线走低,AIGC(人工智能内容出产)、ChatGPT、游戏等方向领跌…

雪花算法ID冲突问题与解决方案

分布式部署应用项目采用雪花算法生成ID有冲突问题: 方案一:给应用分配随机 datacenter-id和 worker-id 如下图: global-config:db-config:logic-delete-field: del_flaglogic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-…

设计模式之《观察者模式》

------《观察者模式》什么是观察者模式为什么用观察者模式工作中用在哪里设计思路观察者模式的代码实现总结什么是观察者模式 观察者模式是一种行为型模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象,当主题对象状…

2023-04-07 SDM-简单使用

目录 摘要: 文档参考: 启动DM的master和worker master 配置 sdm-master1.tomal 启动命令: worker 配置 sdm-worker1.toml 启动命令: 配置上游数据库下游数据库和启动同步任务 配置上游数据库 配置 mysql-01.yaml 上游数据库要求: 将数据源加入 配置task 配置 te…

一键生成元宇宙 AI又杀疯了

人类十几年的进步水平,AI用几个月就能轻易实现。在展示了超强的文本对话能力和一键生图功能后,AI大模型不打算停下,开始挑战搭建3D空间这一更高难度的动作。 这次,Facebook母公司Meta想当一把主导者。几天前,它的首席…

算法设计与智能计算 || 专题五: 最优解搜索问题

最优解搜索问题 文章目录最优解搜索问题1. 牛顿迭代法1.1 牛顿分搜索零点的原理1.2 牛顿法搜索极值点原理2. 梯度下降法2.1 微分与梯度2.1.1 一元函数与多元函数的微分2.1.2 梯度2.3 梯度下降法2.4 案例分析例子1. 牛顿迭代法 1.1 牛顿分搜索零点的原理 牛顿法是基于泰勒公式…

分布式锁介绍及解决方案

文章目录分布式锁介绍及解决方案什么是分布式锁?常用的分布式锁实现方式ZooKeeper 实现分布式锁ZooKeeper 分布式锁实现步骤ZooKeeper 分布式锁示例代码Redis 实现分布式锁Redis 分布式锁实现步骤Redis 分布式锁示例代码分布式锁的应用场景参考资料分布式锁介绍及解…