拓扑排序之java实现_拓扑排序(三)之 Java详解 - 如果天空不死

前面分别介绍了拓扑排序的C和C++实现,本文通过Java实现拓扑排序。

目录

1

.拓扑排序介绍

2

.拓扑排序的算法图解

3

.拓扑排序的代码说明

4

. 拓扑排序的完整源码和测试程序

拓扑排序介绍

拓扑排序(Topological Order)是指,将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列。

这样说,可能理解起来比较抽象。下面通过简单的例子进行说明!

例如,一个项目包括A、B、C、D四个子部分来完成,并且A依赖于B和D,C依赖于D。现在要制定一个计划,写出A、B、C、D的执行顺序。这时,就可以利用到拓扑排序,它就是用来确定事物发生的顺序的。

在拓扑排序中,如果存在一条从顶点A到顶点B的路径,那么在排序结果中B出现在A的后面。

拓扑排序的算法图解

拓扑排序算法的基本步骤:

1.

构造一个队列Q(queue) 和 拓扑排序的结果队列T(topological);

2.

把所有没有依赖顶点的节点放入Q;

3.

当Q还有顶点的时候,执行下面步骤:

3.1

从Q中取出一个顶点n(将n从Q中删掉),并放入T(将n加入到结果集中);

3.2

对n每一个邻接点m(n是起点,m是终点);

3.2.1

去掉边;

3.2.2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值