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

《经典图论算法》卡恩(Kahn)算法

摘要:

1,卡恩(Kahn)算法的介绍

2,卡恩(Kahn)算法的代码实现

1,卡恩(Kahn)算法的介绍

卡恩(Kahn)算法是图的拓扑排序(Topological sorting)算法,它是基于队列实现的,类似于《宽度优先搜索(BFS)》。

拓扑排序就是在一个有向无环图中,对图的顶点的一种线性排序,对于任意一条有向边<v1,v2>,排序的结果中顶点v1一定在顶点v2的前面。如下图所示,对于<起床,洗脸>这条边,排序的结果中起床一定在洗脸的前面。

74bb13a5cd384a86efaefab0b89cd74d.png

当且仅当图是有向无环图时,才有可能进行拓扑排序,任何有向无环图至少有一个拓扑排序。如下图所示,在洗脸之前需要刷牙,在刷牙之前需要洗脸,构成了环形,所以没法排序。

8d61e0f31408d4c94d777b1d3547cf22.png

2,卡恩(Kahn)算法的代码实现

卡恩(Kahn)算法实现拓扑排序的原理比较简单,步骤如下:


http://www.kler.cn/a/283160.html

相关文章:

  • 基于迭代重加权最小二乘法的算法及例程
  • [CKS] K8S ServiceAccount Set Up
  • 【p2p、分布式,区块链笔记 DAM】GUN/SEA(Security, Encryption, Authorization) 模块genkey
  • 基于promtail+loki+grafana搭建日志系统
  • 论文阅读《机器人状态估计中的李群》
  • 游戏引擎学习第五天
  • 【电控笔记z27】相对位置控制(无前馈)
  • 【算法】递归、回溯、剪枝、dfs 算法题练习(N皇后、单词搜索、数独问题;C++)
  • Nginx: 反向代理和动静分离概述
  • 02. 开发前准备,Docker安装MySQL,Redis
  • SpringBoot优雅的封装不同研发环境下(环境隔离)RocketMq自动ack和手动ack
  • python实战二-筛选多个Excel中数据
  • 深度学习论文被评“创新性不足、工作量不够”怎么办?
  • Java毕业设计 基于SSM校园心理咨询服务平台
  • 应对Nginx负载均衡中的请求超时:策略与配置
  • HTTPS 通信时是对称加密还是非对称加密?
  • 基于SpringBoot的医疗服务系统
  • 贝塞尔曲线
  • uniapp小程序怎么判断滑动的方向
  • Redis—基础篇
  • 如何让大模型学会自我反思
  • VMware安装Ubuntu 23.10.1系统图文版
  • Yolo环境搭建(深度学习基础环境)
  • 在Docker中,本地的镜像文件都存放在哪里?
  • 数据安全守护者:精通数据备份与恢复的艺术
  • 优化大型语言模型微调:MoLA层级专家分配策略