[python刷题模板] 0-1BFS
admin
2024-02-17 23:41:34
0

[python刷题模板] 0-1BFS

    • 一、 算法&数据结构
      • 1. 描述
      • 2. 复杂度分析
      • 3. 常见应用
      • 4. 常用优化
    • 二、 模板代码
      • 1. 去除障碍物的矩阵搜索
      • 2. 修改传送方向的矩阵搜索
    • 三、其他
    • 四、更多例题
    • 五、参考链接

一、 算法&数据结构

1. 描述

0-1BFS目前我只在最短路问题遇到,使用双端队列优化为复杂度O(VE)。
当边权只有0或1时,可以使用0-1BFS,否则请使用dijkstra等最短路算法。
实际上0-1BFS和dijkstra是很相似的,都是控制下个节点的访问顺序;不同之处在于,dijkstra需要给堆传入优先级来决定优先访问哪个;0-1BFS的优先级是明确的。
由于复杂度提升的不多,赛中还是建议优先使用dijkstra吧。
  • 当边权只有1时,我们可以用朴素BFS来找最短路;当边权有非负数时,我们可以用dijkstra。
  • 它们的特点是用队列/优先队列来保证:优先出队的一定是当前最该处理的节点。
  • 考虑当边权只有0或者1的情况,假设当前从u转移到v:
    • 若w=1,则v的最短路d=dist[u]+1,应入队;推之前队列中不存在dist小于d的节点。显然v应该最后出队,则dq.append(v)。
    • 若w=0,则v的最短路d=dist[u]+0=dist[u],应入队;我们知道u是当前最小节点,如果v的优先级=u,那么完全可以立刻处理,即优先出队(下一个出队),则dq.appendleft(v)。

2. 复杂度分析

  1. O(VE),即节点数乘边数。

3. 常见应用

  1. 边权只有0或1的最短路搜索。

4. 常用优化

  1. dis初始化为inf,避免使用vis标记数组。

二、 模板代码

1. 去除障碍物的矩阵搜索

例题: 2290. 到达角落需要移除障碍物的最小数目

  • 目标位置存在则边权是1.否则是0
DIRS = [(0,1),(0,-1),(1,0),(-1,0)]
class Solution:def minimumObstacles(self, grid: List[List[int]]) -> int:m,n = len(grid),len(grid[0])def inside(x,y):return 0<=xd:dist[a][b] = dif grid[a][b] == 0:q.appendleft((a,b))else:q.append((a,b))                return -1

2. 修改传送方向的矩阵搜索

链接: 1368. 使网格图至少有一条有效路径的最小代价

  • 显然如果顺着原方向,代价(修改次数)=0;否则代价=1.
  • 代码实现时,对dir按题意顺序,然后偏移下标来模拟方向。
DIRS = [(0,1),(0,-1),(1,0),(-1,0)]
class Solution:def minCost(self, grid: List[List[int]]) -> int:m,n = len(grid),len(grid[0])def inside(x,y):return 0<=x dist[x][y]:continuefor i,(dx,dy) in enumerate(DIRS,1):a,b = x+dx,y+dy if inside(a,b):w = int(grid[x][y] != i)d = c + wif d < dist[a][b]:dist[a][b] = d if w>0:q.append((d,a,b))else:q.appendleft((d,a,b))return -1

三、其他

  1. 其实用不太到这个算法,考试时候肯定是优先用dijkstra了

四、更多例题

五、参考链接

  • 链接: [python刷题模板] 最短路(Dijkstra)

相关内容

热门资讯

绝版了!马斯克宣布停产特斯拉M... 快科技1月29日消息,在特斯拉2025年第四季度财报电话会议上,马斯克宣布,特斯拉将在2026年第二...
紫金、洛钼、江铜等超660亿海... 来源:界面新闻 2025年以来,紫金矿业(601899.SH)、洛阳钼业(603993.SH)...
原创 A... 在股市里,每一次新股上市都像是一场未知的冒险。而就在恒运昌登陆A股前夕,不少幸运中签的股民却陷入了“...
【评论】金矿企业顺周期扩张提速... 界面新闻记者 | 侯瑞宁 界面新闻编辑 | 刘春 黄金牛市下,两大矿业巨头近日在全球收购金矿资产...
水贝知名金店每日仅能提款500... 转自:贝壳财经 【#水贝知名金店每日仅能提款500元#,#杰我睿平台提出打折清偿方案#】近日,一场因...
原创 官... 文丨西部君 随着江苏2025年主要经济数据公布,全国31个省、自治区、直辖市(以下统称31省份)过去...
建设银行:唐朔正式就任副行长 北京商报讯(记者 孟凡霞 周义力)1月28日,建设银行发布公告,2025年12月23日,该行董事会审...
从万科退休20天后,郁亮疑似失... (文/孙梅欣 编辑/张广凯) 有市场消息称,万科前董事会主席、执行总裁郁亮近期疑似失联,时间已有半...
【看新股】燧原科技拟IPO:国... 转自:新华财经 新华财经北京1月29日电 近日,上海燧原科技股份有限公司(以下简称“燧原科技”或“公...
金价飙升下,银行火速上调积存金... 黄金价格在持续创造历史,银行在紧急出手控制风险。本周,国际金价连破四个关口,现货黄金在1月28日首次...
每天都喝!男子一查已是晚期!医... 68岁的刘大伯是小区里有名的“茶罐子”。清晨五点,他先烧一壶水,把昨晚泡过的铁观音再冲一遍,咕咚咕咚...
华大基因预计去年净利润同比大幅... 北京华大基因的展位在第三届中国国际供应链促进博览会上。 IC供图 1月27日晚间,华大基因发布202...
美联储如期按兵不动,美股波动不... 当地时间1月28日周三,美联储公布利率决议,美联储如期按兵不动。美股波动不大,美债和数字货币小幅波动...
原创 周... 说到娱乐圈中的明星,周深无疑是近年来一直保持高质量表现的代表之一。这几年,他在多个舞台上展现出不凡的...
美股收盘:存储股走强希捷劲升1... 财联社1月29日讯(编辑 赵昊)周三(1月28日),美股三大指数涨跌不一。 截至收盘,道琼斯指数涨0...
洛阳市孟津人民医院中西医结合解... 近日,洛阳市孟津人民医院康复医学科“中西医结合、针药并用”,仅用10天时间就为一位66岁的女患者缓解...
银行金条,“三周没到货了”,啥... “金条早就没货了,这几天朝阳区的工行网点都提不出金条,需要排队等。”27日,工商银行(下称工行)北京...
刚刚!美联储宣布:不降息!黄金... 【导读】美联储不降息,黄金、白银走高 中国基金报记者 泰勒 兄弟姐妹们啊,泰勒熬夜加班,一起关注一下...
天奇自动化工程股份有限公司20... 来源:上海证券报 证券代码:002009 证券简称:天奇股份 公告编号:2026-005 天奇自动...