[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)

相关内容

热门资讯

法国兴业银行股价下跌3% 每经AI快讯,5月12日,法国兴业银行股价下跌3%。 每日经济新闻 【免责声明】本文仅代表作者本人观...
独家 | 低空经济,重磅收购发... 作者 | 铅笔道 惜文 编辑 | 铅笔道 邹蔚 王方 最近,低空经济赛道,发生一起重磅并购。低空经济...
购房收据挂失登报流程 购房收据挂失登报流程并不复杂,首先需要确认登报的具体要求和所需材料。登报是通过报纸等公开媒体发布声明...
【公告复盘】PCB+CPO+覆... 【A股收盘|沪指跌0.25% 半导体设备、特高压概念股活跃】四大股指今日收盘涨跌不一,沪指跌0.25...
原创 货... 导语:银行板块极致低估值隐含安全边际,且附带估值修复期权。 01 诸神的黄昏 货币基金和黄金,这些曾...
资本“救火”一年后,大润发的调... 出品 | 创业最前线 付艳翠 近期,随着CEO闪电失联与董事会主席“零元救火”的戏剧性一幕接连上演...
59岁浙江前首富直播间跳团舞,... 美特斯邦威曾是80、90后青春记忆里绕不开的符号,那句“不走寻常路”更是响彻街头巷尾。2008年上市...
周琦18+8杰曼三双 北京2-... 【搜狐体育战报】北京时间5月12日CBA季后赛,主场作战的北京北汽以88-73击败广东东阳光,北京首...
汽油价格持续攀升!美国4月CP... 受伊朗战争推动的汽油价格持续攀升,美国4月通胀继续加速。战争影响正在随着能源成本飙升而冲击美国经济。...
老铁流量见顶,快手要靠可灵20... 来源:市场资讯 (来源:野马财经) 可灵年入10亿,仅占快手的0.73%。 作者|刘钦文 编辑|高...
美国4月未季调CPI同比升3.... 美国4月未季调CPI同比升3.8%,前值升3.3%; (本文来自第一财经)
挪威财长:主权财富基金在道德撤... 来源:环球市场播报 当全球最大的挪威规模达2.2万亿美元的主权财富基金因伦理考量出售某公司股份时,...
1300亿,快手可灵酝酿“单飞... 来源:猎云精选,文/韩文静 AI视频生成赛道,从来不缺资本故事。 近日,快手旗下视频生成大模型“可灵...
光模块龙头股价一年涨超990%... 5月12日,光模块龙头中际旭创(300308.SZ)股价大涨,盘中突破1000元,成为继爱美客(30...
小红书或再回购期权,半年回购价... 小红书再传期权回购。近日,有消息称小红书开启了2026年第一轮期权回购,有离职员工爆料称最新的回购价...
重仓科技板块基金狂飙,超160... 打开基金账户,你的净值创新高了吗? 5月A股震荡攀高,市场情绪悄然回暖,公募基金的赚钱效应同步释放。...
突发!韩股跳水 韩股跳水。 5月12日盘中,韩国股市走低,截至发稿,韩国KOSPI指数转跌超3%,此前一度涨超2.4...
【IPO速递】东圣实业:布局磷... 5月12日,湖北东圣实业股份有限公司(下称“东圣实业”)首次向港股市场发起冲刺,计划登陆港交所主板,...
跨国巨头再现百亿美元级“天价”... 5月12日,恒瑞医药宣布,百时美施贵宝(BMS)与恒瑞医药达成授权协议,BMS将向恒瑞医药支付最高达...
焦点复盘沪指缩量调整跌0.25... 财联社5月12日讯,今日57股涨停,23股炸板,封板率71%。大唐发电5连板,通鼎互联、宝鼎科技4连...