什么是拓扑排序

通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。

拓扑排序的英文名是 Topological sorting。拓扑排序要解决的问题是给一个图的所有节点排序。

一、什么是拓扑排序

在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条件:

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

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

有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说。

例如,下面这个图:

它是一个 DAG 图,那么如何写出它的拓扑排序呢?这里说一种比较常用的方法:

(1)从 DAG 图中选择一个 没有前驱(即入度为0)的顶点并输出。

(2)从图中删除该顶点和所有以它为起点的有向边。

(3)重复 1 和 2 直到当前的 DAG 图为空或当前图中不存在无前驱的顶点为止。后一种情况说明有向图中必然存在环。

于是,得到拓扑排序后的结果是 { 1, 2, 4, 3, 5 }。

通常,一个有向无环图可以有一个或多个拓扑排序序列。

二、拓扑排序的应用

拓扑排序通常用来“排序”具有依赖关系的任务。

比如,如果用一个DAG图来表示一个工程,其中每个顶点表示工程中的一个任务,用有向边表示在做任务 B 之前必须先完成任务 A。故在这个工程中,任意两个任务要么具有确定的先后关系,要么是没有关系,绝对不存在互相矛盾的关系(即环路)。

三、拓扑排序的实现

根据上面讲的方法,我们关键是要维护一个入度为0的顶点的集合。

图的存储方式有两种:邻接矩阵和邻接表。这里我们采用邻接表来存储图,C++代码如下:

测试如下DAG图:

输出结果是 4, 5, 2, 0, 3, 1。这是该图的拓扑排序序列之一。

每次在入度为0的集合中取顶点,并没有特殊的取出规则,随机取出也行,这里使用的queue。取顶点的顺序不同会得到不同的拓扑排序序列,当然前提是该图存在多个拓扑排序序列。

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

THE END
0.从10名男生,8名女生中选出8人参加游泳比赛.在下列条件下,分别有多少从10名男生,8名女生中选出8人参加游泳比赛.在下列条件下,分别有多少种选法? (1)恰有3名女生入选; (2)至少有两名女生入选; (3)某两名女生,某两名男生必须入选; (4)某两名女生,某两名男生不能同时入选; (5)某两名女生,某两名男生最多入选两人. jvzquC41yy}/l‚jqq0ipo8xjkvo0fB>g32:3/@67f/:83>27f3h.5;::2ci42jh4
1.2024年福建省考行测高分技巧:数量关系模拟题公务员考试网【解析】第一步,本题考查排列组合题中的基础排列组合。 因此,选择C选项。 【拓展】 【标签】 【知识点】基础排列组合题 【难度】中等 2.(单选题) 某街道组织篮球比赛,有8个单位组成队伍前来参加,去年比赛的冠亚军队伍也来参加,如果采取抽签方式将这8个队伍平均分成4组进行比赛,则去年比赛的冠亚军队伍还分在同jvzquC41hl4iwjyw0eun1;5451674?4439979=3jvor
2.某校组织8名学生参加省级竞赛,8人的最终得分均不相同。已知这8安徽人事考试网同步华图公务员题库发布公务员行测考试题目:某校组织8名学生参加省级竞赛,8人的最终得分均不相同。已知这8。更多关于2025年安徽公务员考试,安徽省考模考,安徽公务员模考的相关资讯,请关注安徽人事考试网。 题型:单选题(分值:1) 某校组织8名学生参加省级竞赛,8人的最终得分均不相同。已知这8名学生的jvzquC41cj4iwjyw0eun1;5471623>44;9=72<3jvor
3.运动会开幕式入场的解说词(通用13篇)二组:敬候伟大时刻的到来,我们要用最刚健的脚步走出心中最豪迈的感怀。 一组:此刻,学校操场四周,聚集着英姿飒爽的校园方阵。他们整装待发,犹如五彩的花环,将舞动青春,舞动所有醉人的空间。 二组:此刻,学校操场东侧,云集着满怀豪情的运动员同学。他们生机勃勃,犹如下山的猛虎,将搅动沉静,给天地一抹亮丽的霞光。 jvzquC41yy}/qq6220ipo8gcqigp1snguj{per43836277mvon
4.“出彩河南人”第五届最美大学生候选人事迹简介(按姓氏笔划排序)每天,马永恩除了上课和照顾父亲,还在辅导员的帮助下勤工俭学,在食堂和图书馆做兼职。学习上,他勤学好他先后荣获2019年和2020年中国汽车短道拉力锦标赛专业A组年度总冠军,成为中国年龄最小并连续蝉联两届年度者研究生支教团,赴内蒙古多伦县开展为期一年的支教工作;返校后积极讲述支教故事,先后带动8名同学参与jvzquC41yy}/jwyx0v|0|qzcpngo1jwvkerf1:4374?:9B<3:7>35;>568
5.申报材料公示证明范文1、优秀运动队二线教练员: 直接培训两年以上的运动员取得下列成绩之一者: (1)在全国城市运动会中,个人项目获二人次冠军,集体项目二次获前三名;或在全国青少年最高水平比赛中,个人项目四人次获冠军,集体项目三次获前三名。 (2)直接培训两年以上的运动员输送后四年内,在奥运会、世界锦标赛、世界杯赛中个人项目获jvzquC41yy}/i€~qq0ipo8mcqyko1:73439/j}rn
6.2014年国家公考《行测》试题完整版教育1.下列关于党风建设的论断,按时间先后顺序排列正确的是: ①以马克思列宁主义的理论思想武装起来的中国共产2.关于宇航员在太空的生活,下列说法不正确的是: A. 宇航员可使用特定的加热器对食品进行加热 A.世界一级方程式锦标赛所用赛车的发动机排量没有限制 B.进入世界杯和欧洲杯足球赛决赛圈的球队数量相同jvzq<84gfw4qgxung0ipo7hp1p532:8133851l6275335?8:528/j}rn
7.embedded格式新闻这不光因为莎翁剧中,凯撒在死前说了“Et tu Brute?” (也有你吗?布鲁图斯。)的名台词,或者《刺客信条》的背景设定里,布鲁图斯早就是兄弟会的一员(《刺客信条2》里,主角艾吉奥的最强装备就是布鲁图斯的),而是因为布鲁图斯的一生远比虚构出来的巴耶克更有意思。jvzquC41jwokk€nmk0ipo8|kmk5&G>*D:'GF'N:':C+B;CXgoctukldOgfobYrpk1gscgmigf'K7'J5'DE+F7.GE':L