博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拓扑排序
阅读量:6535 次
发布时间:2019-06-24

本文共 584 字,大约阅读时间需要 1 分钟。

定义和前置条件:

定义:将有向图中的顶点以线性方式进行排序。即对于任何连接自顶点u到顶点v的有向边uv,在最后的排序结果中,顶点u总是在顶点v的前面。

如果这个概念还略显抽象的话,那么不妨考虑一个非常非常经典的例子——选课。我想任何看过数据结构相关书籍的同学都知道它吧。假设我非常想学习一门机器学习的课程,但是在修这么课程之前,我们必须要学习一些基础课程,比如计算机科学概论,C语言程序设计,数据结构,算法等等。那么这个制定选修课程顺序的过程,实际上就是一个拓扑排序的过程,每门课程相当于有向图中的一个顶点,而连接顶点之间的有向边就是课程学习的先后关系。只不过这个过程不是那么复杂,从而很自然的在我们的大脑中完成了。将这个过程以算法的形式描述出来的结果,就是拓扑排序。

那么是不是所有的有向图都能够被拓扑排序呢?显然不是。继续考虑上面的例子,如果告诉你在选修计算机科学概论这门课之前需要你先学习机器学习,你是不是会被弄糊涂?在这种情况下,就无法进行拓扑排序,因为它中间存在互相依赖的关系,从而无法确定谁先谁后。在有向图中,这种情况被描述为存在环路。因此,一个有向图能被拓扑排序的充要条件就是它是一个有向无环图(DAGDirected Acyclic Graph)

转载于:https://www.cnblogs.com/qixinbo/p/7895920.html

你可能感兴趣的文章
ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法
查看>>
SylixOS钩子函数浅析
查看>>
桌面虚拟化之呼叫中心语音应用
查看>>
我的友情链接
查看>>
java 生成8位数字作为UID
查看>>
cocos2dx切换场景
查看>>
Where art thou
查看>>
雷林鹏分享:YAF 在Nginx环境下的Rewrite规则
查看>>
雷林鹏分享:PHP 循环 - For 循环
查看>>
CCRD_TOC_2015_EULAR专刊
查看>>
如何在shell脚本里开启history命令。
查看>>
【jBox】 2.3 beta版 多功能jQuery对话框插件下载及常见使用问题解答
查看>>
Finalize/Dispose资源清理模式
查看>>
浅谈数据库联合查询
查看>>
C#中的事务
查看>>
Entity Framework技术系列之3:对象-关系映射
查看>>
Chrome浏览器各种崩溃、卡死解决方法
查看>>
mysql常用命令
查看>>
centos7/rhel7下配置PXE+Kickstart自动安装linux系统
查看>>
多线程-Thread与Runnable源码分析
查看>>