有向无环图 拓扑排序

java 数据结构 专栏收录该内容
22 篇文章 0 订阅

package endual.tuopupaixu;

/**
 * 拓扑排序
 * 
 * 拓扑排序的思想虽然不寻常,但是还是很简单的
 * 有两个步骤要去考虑
 * 步骤1 
 *   找到一个没有后续的顶点(这是从有向图的角度是做了,而不能用最简单的那种图去考虑问题了)
 *      顶点的后续也是一些顶点,他们是该节点的直接“下游”  也就是说这些节点与他们由一条边相连,并且
 *      边的方向指向它们。如果有一条边从A指向B,那么B是A的后续
 *      
 *  步骤2
 *    从图中删除这个顶点,在列表的前面插入顶点的标记
 *    
 *  重复步骤1和步骤2,直到所有的顶点都从图中删除。这时,列表显示的顶点顺序就是拓扑排序的结构了
 * @author Endual
 *
 *   说明:
 *   删除顶点似乎是一个极端的步骤,但是它是算法的核心,如果第一个顶点不处理,算法就不能计算出要处理的是第二个顶点。
 *   如果需要,也可以在其他地方存储图的数据(顶点列表或者邻接矩阵),然后再排序完成后恢复他们就可以了
 *   
 *      算法能够执行是因为,如果一个顶点没有后续,那么它肯定是拓扑序列的最后一个了。一旦删除它,剩下的顶点中比如有一个
 *      没有后续的,所以它成为下一个拓扑序列的最后的一个了。依次类推。
 *   
 *   
 *   拓扑排序算法可以既可以是连通图,也可以用于非联通图。这可以模拟另外一种两个互不相关的目标的情况。
 *   例如同时获得数学学位和急救资格的证书。
 */

/**
 * 环和树
 * 
 * 环是拓扑排序无法处理的。
 * 图的话=====》》》》 不是环就是树了
 * @author Endual
 *
 *要计算是不是要环也是简单的:
 *   如果N个顶点的图有超过N-1条边,那么就肯定有环的存在了。可以尝试下画一个没有环而有N个顶点的,N条边的图,这样就可以lij
 *   理解了
 *   
 *   拓扑排序必须在无环的有向图中进行的(有向无环图)
 *
 *
 */
public class GrapnSort {

}
 
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值