拓扑排序笔记

拓扑排序(Topological Sorting:一种对有向无环图(DAG)(否则存在环,是从一个点出发回到点,即某些顶点之间的依赖关系形成了一个循环,无法确定它们的先后顺序。

)的所有顶点进行线性排序的方法,使得图中任意一点 u和 v,如果存在有向边 <u,v>,则 u必须在 v 之前出现。对有向图进行拓扑排序产生的线性序列称为满足拓扑次序的序列,简称拓扑排序。结果不止一种。说白了,做题目时可以用来解决一些依赖关系的问题,比如项目的执行顺序,课程的选修顺序等。XX课程必须先选,先执行等等

Kahn实际上是BFS。即先把入度为0的节点删除

        def dfs(u):
            nonlocal hasCycle#nonlocal 关键字用于在嵌套函数中声明一个在外部函数中定义的变量,
            # 作用是允许在内部函数中修改外部函数中定义的变量 hasCycle 的值。
            if u in onStack:  # 同一次深度优先搜索时,当前顶点被访问过,说明存在环
                hasCycle = True
            if u in visited or hasCycle:  # 当前节点被访问或者有环时直接返回
                return

nonlocal可以修改函数外的值,借此复习了一下全局变量和局部变量。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值