BFS中的多源BFS-双端队列BFS

BFS找到的答案为什么一定是最小的?
证明:
BFS队列具有两段性:队列中同时存的所有点到起点的距离差值最多是1。
BFS队列具有单调性:分成两段性,前面一定是小的。
数学归纳法证明:
1.初始的时候距离为0成立
2.假设队首的某个点距离起点为x,把它能扩展的点加到队尾,距离为x+1,仍然满足两段性和单调性。
因此队列中的所有元素都满足上面的两个性质
例题1:矩阵距离
这个题思路就是首先将起点加入到队列,然后正常的bfs就行
例题2:魔板
这个题需要用到unordered_map来存储状态。类似于走迷宫。要写最短字典序,则需要按照ABC这样的操作来扩展。这一大类问题属于最小步数模型
例题3:电路维修
这个题是经典的双端队列模型,边权只包含0和1,那么如果从某一个点扩展出来的点的边权是0,就插入对头,否则插入队尾。这个题需要注意偶数点只能走到偶数点,奇数点只能走到奇数点。如果目标点是奇数点,则一定无解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值