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

代码随想录算法训练营第五十八天 | 1.拓扑排序精讲 2.dijkstra(朴素版)精讲 卡码网117.网站构建 卡码网47.参加科学大会

1.拓扑排序精讲

题目链接:117. 软件构建

文章讲解:代码随想录

思路:

把有向无环图进行线性排序的算法都可以叫做拓扑排序。

实现拓扑排序的算法有两种:卡恩算法(BFS)和DFS,以下BFS的实现思路。

节点0 的入度为0 出度为2, 也就是没有边指向它,而它有两条边是指出去的。节点的入度表示有多少条边指向它,节点的出度表示有多少条边从该节点出发。做拓扑排序的时候,应该优先找入度为0的节点,只有入度为0,它才是出发节点。

拓扑排序的过程,两步:

(1)找到入度为0 的节点,加入结果集

(2)将该节点从图中移除

循环以上两步,直到 所有节点都在图中被移除了。

如果发现结果集元素个数不等于图中节点个数,我们就可以认定图中一定有有向环,这也是拓扑排序判断有向环的方法。

2.dijkstra(朴素版)精讲

题目链接:47. 参加科学大会(第六期模拟笔试)

文章讲解:代码随想录

思路:给出一个有向图,一个起点,一个终点,问起点到终点的最短路径。

最短路算法中的 dijkstra 算法:在有权图(权值非负数)中求从起点到其他节点的最短路径算法。

(dijkstra 算法可以同时求起点到所有节点的最短路径,权值不能为负数)

dijkstra 算法 同样是贪心的思路,不断寻找距离 源点最近的没有访问过的节点。

dijkstra三部曲:

第一步,选源点到哪个节点近且该节点未被访问过

第二步,该最近节点被标记访问过

第三步,更新非访问节点到源点的距离(即更新minDist数组)

在dijkstra算法中,minDist数组用来记录每一个节点距离源点的最小距离。

相关文章:

  • 二项分布详解:从基础到应用
  • websheet 之 单元格
  • 蓝桥杯 5. 交换瓶子
  • Flutter Dart 集合类型List Set Map详解军 以及循环语句 forEaclh map where any every
  • Redis ⑥-string | hash | list
  • 【计算机视觉】CV实战 - 基于YOLOv5的人脸检测与关键点定位系统深度解析
  • 八大排序——冒泡排序/归并排序
  • 如何创建极狐GitLab 私密议题?
  • UML 类图基础和类关系辨析
  • 基于Java(JSP)+MySQL实现深度学习的音乐推荐系统
  • 成熟的前端vue vite websocket,Django后端实现方案包含主动断开websocket连接的实现
  • 微软官网Win10镜像下载快速获取ISO文件
  • NLP高频面试题(五十五)——DeepSeek系列概览与发展背景
  • CentOS中在线安装Docker(超详细)
  • 基于Django的个性化股票交易管理系统
  • Web漏洞--XSS之订单系统和Shell箱子
  • <论文>(谷歌)用于时序链接预测的迁移学习
  • 解释两个 Django 命令 makemigrations和migrate
  • 基于Axure的动态甘特图设计:实现任务增删改与时间拖拽交互
  • 巴西kwai短视频推广旅游广告获客营销策略
  • 人民日报:光荣属于每一个挺膺担当的奋斗者
  • 持续更新丨伊朗内政部长:港口爆炸已致14人死亡
  • 大家聊中国式现代化|邓智团:践行人民城市理念,开创人民城市建设新局面
  • 巴黎奥运后红土首秀落败,郑钦文止步马德里站次轮
  • 五矿地产:今年要确保债务“不爆雷”、交付“不烂尾”
  • AI翻译技术已走向大规模商用,应用场景覆盖多个关键领域