拓扑排序的理解

拓扑排序:是对有向无环图上的节点进行线性排序,使得对于每一个顶点有向边指向另一个顶点  , 指向的顶点在被指向的顶点之前出现。简单地说,是在不破坏节点先后顺序的前提下,把有向无环图拉成一条链。

1.每个顶点出现且只出现一次。

2.若存在一条从顶点 A 到顶点 B 的路径(不存在顶点B到顶点A的路径),那么在序列中顶点 A 出现在顶点 B 的前面。

基本步骤:

1.从有向无环图中找到一个入度为零(即没有被指向的顶点)并输出。

2.删除这个入度为零的顶点及链接的有向边。

3.重复循环操作以上步骤直至将所有的顶点输出。(若不能全部输出,则说明途中存在环)

我们需要知道度的一些知识。

度:一个顶点的度是指与该顶点相关联的边的条数。

对于有向图来说,一个顶点的度可细分为入度和出度。

入度:一个顶点的入度是指与其关联的各边之中,以其为终点的边数。

出度:出度则是相对的概念,指以该顶点为起点的边数。

图示如下:

        

拓扑排序后的结果:AEBDC。

 A的入度为0,出度为2;                                        B的入度为2,出度为2;

C的入度为2,出度为0;                                        D的入度为2,出度为1;

E的入度为1,出度为2。

注意事项:

1.入度为零的顶点被删除后需重新定义顶点的入度,即把这个顶点指向的顶点的入度减一,后面的顶点入度依次减一。

2.若入度为零的顶点不唯一,从中随机选择即可,这意味着拓扑排序的结果不一定是唯一的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值