当前位置: 首页 > news >正文

算法优选系列(9.BFS 解决拓扑排序)

目录

拓扑排序简介:

​编辑

课程表(medium):

课程表II(medium):

火星词典(hard):


拓扑排序简介:

  • 有向无环图(DAG图)

如上图每条边都有方向即为有向,任意几个点与边都不能形成一个环即为无环。

入度:即一个顶点有几个边指向它

出度:即一个顶点有几个边指向其他顶点

  • AOV网:顶点活动图

在有向无环图中,用顶点表示一个活动,用边来表示向后顺序的图结构 

  • 拓扑排序

(在这里理解为找到做事情的先后顺序,拓扑排序的结果可能不唯一)

如何排序?

1. 找出图中入度为0的点然后输出

2. 删除与该点链接的点

3. 重复1 2操作直到图中没有点 或者 没有入度为0的点(有可能有环,因此另一个拓扑排序应用就是判断图中是否有环)

... ...

  • 实现拓扑排序  

借助队列,来一次BFS

1. 初始化:把所有入度为0的点加入队列

2. 当队列不为空的时候:

        a. 拿出队头元素,加入最终结果

        b. 删除与该元素相邻的边

        c. 判断:与删除边相邻的点,是否入度变成零

                          如果入度为0加入队列

建图:第一题讲

课程表(medium):

题目链接:207. 课程表 - 力扣(LeetCode)


算法:

原问题可以转换成⼀个拓扑排序问题。
用BFS 解决拓扑排序即可。
拓扑排序流程:
  • 将所有入度为 0 的点加入到队列中;
  • 当队列不空的时候,一直循环:
  1. 取出队头元素;
  2. 将于队头元素相连的顶点的入度 - 1;
  3. 然后判断是否减成 0,。如果减成 0,就加⼊到队列中。

eg: 

 

课程表II(medium):

题目链接:210. 课程表 II - 力扣(LeetCode)

算法:

和上题一样~


火星词典(hard):

题目链接:LCR 114. 火星词典 - 力扣(LeetCode)

算法:

将题意搞清楚之后,这道题就变成了判断有向图时候有环,可以⽤拓扑排序解决。
如何搜集信息(如何建图):
  1. 两层 for 循环枚举出所有的两个字符串的组合;
  2. 然后利⽤指针,根据字典序规则找出信息。

相关文章:

  • 基于OpenCV的物体跟踪:CSRT算法
  • 【数据结构 · 初阶】- 快速排序
  • Kubernetes中runnable接口的深度解析与应用
  • 最新版Chrome浏览器调用ActiveX控件技术——alWebPlugin中间件V2.0.42版发布
  • 重写B站(网页、后端、小程序)
  • WinForms 应用中集成 OpenCvSharp 实现基础图像处理
  • SQL查询, 响应体临时字段报: Unknown column ‘data_json_map‘ in ‘field list‘
  • Pandas:数据分析步骤、分组函数groupby和基础画图
  • symbol【ES6】
  • 人脸识别备案介绍
  • C++之初识模版
  • 【Java高阶面经:微服务篇】4.大促生存法则:微服务降级实战与高可用架构设计
  • 掌握HTTPX:从基础到高并发工程实践
  • Lambda表达式的高级用法
  • 华为云Flexus+DeepSeek征文|华为云 Dify LLM 平台单机部署教程:一键开启高效开发之旅
  • 软件设计师“数据流图”真题考点分析——求三连
  • Devicenet主转Profinet网关助力改造焊接机器人系统智能升级
  • springboot3+vue3融合项目实战-大事件文章管理系统-文章分类也表查询(条件分页)
  • 自建srs实时视频服务器支持RTMP推流和拉流
  • 什么是 Agent 的 Message
  • 做网站几个步骤/百度推广服务费一年多少钱
  • 动态网站开发概述/汕头seo关键词排名
  • 苏州好的做网站的公司哪家好/宁波seo优化流程
  • 基于asp网站开发 论文/惠州网站建设方案推广
  • fotor懒设计 app/惠州百度seo哪家好
  • 国内优秀的设计网站/优化英文