拓扑排序(入门)

拓扑排序是一种图论算法。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序,这种操作得出的顺序就称为拓扑序列。

那我们应该进行怎样的排序呢?

这就是我们这次研究的重点了。


这就是拓扑排序的操作过程,下面我们来详解一下。

1.找到一个入度为0的点

2.删掉它的所有的边,将它放进队列

3.找到另一个入度为0的点

4.删掉它的所有的边,将它放进队列

5.重复1和2,直到所有点都被放入队列

所以上图的拓补序列为0 2 1 4 3。

所以,拓扑排序的基本操作是:


怎么样?挺简单吧?

但我也要告诉你的是,这只是拓扑排序的入门而已。
所以 继续努力,砥砺前行!

原文:https://blog.csdn.net/qq_44635637/article/details/89789242

原文地址:https://www.cnblogs.com/herobrine-life/p/10959270.html

时间: 2024-11-05 18:56:59

拓扑排序(入门)的相关文章

POJ 2367 Genealogical tree 拓扑排序入门

Description The system of Martians' blood relations is confusing enough. Actually, Martians bud when they want and where they want. They gather together in different groups, so that a Martian can have one parent as well as ten. Nobody will be surpris

HDU 1285——确定比赛名次(拓扑排序入门)

确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12182    Accepted Submission(s): 4861 Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直

poj2367拓扑排序入门

#include<stdio.h> #include<iostream> #include<string.h> #include<queue> #include<stack> #include<list> #include<stdlib.h> #include<algorithm> #include<vector> #include<map> #include<set> #i

拓扑排序入门

10305 - Ordering Tasks John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task is only possible if other tasks have already been executed. Input The input will consist of several instances of the problem. Ea

拓扑排序入门 基础

早上学了拓扑排序中最基础的一题,教的是用vector写的 然后自己刚刚用链式前向星写了一遍 拓扑排序就是先找出度为0的点然后放入队列,再把与这个点相连的点的度减一,如果度变成了0就在放进队列里面,直到队列变为空. 判断这个图是否无环 就用sum=0,每次进去就sum++,如果最后sum==n说明是无环的. 拓扑排序的裸题: 确定比赛名次 TimeLimit: 2000/1000 MS (Java/Others)  MemoryLimit: 65536/32768 K (Java/Others)

POJ 2367 Genealogical tree 拓扑排序入门题

Genealogical tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8003   Accepted: 5184   Special Judge Description The system of Martians' blood relations is confusing enough. Actually, Martians bud when they want and where they want. T

hdu3231 (三重拓扑排序)

这道题算是我拓扑排序入门的收棺题了,卡了我好几天,期间分别犯了超时,内存溢出,理解WA,细节WA,格式WA…… 题目的意思大概是在一个三维坐标系中,有一大堆矩形,这些矩形的每条棱都与坐标轴平行. 这些矩形有4种情况—— 1. 有重合部分(I a b) 表示a与b重合: 2. a的x坐标大于b的x坐标(X a b),表示a的最大的x坐标大于b的最小的x坐标: 3. (Y a b)y坐标,同上: 4. (Z a b)z坐标,同上: 也就是说,我们可以把每个矩形ai按照三个方向分解,分别为——平行于x

拓扑排序(算法竞赛入门经典)

拓扑排序的定义: 把每个变量看成一个点,”小于“或者”先后“关系看成有向边,则我们得到一个有向图.这样我们的任务实际上是把一个图的所有节点排序,使每一条有向边的(u,v)对应的u都排在v之前,在图论中,我们称之为拓扑排序.不难发现,如果一个有向图里存在回路,则不存在拓扑排序(如果设置一个标志数组,我们可以发现回路中的点一直处于正在被访问状态,这可以作为拓扑排序的结束条件). 我们先看一个样例: 下面我们用邻接矩阵存储这张图:   0 1 2 3 0 0 1 1 1 1 0 0 1 1 2 0 0

拓扑排序((算法竞赛入门经典)刘汝佳)

转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents [分析](小白) 把每一个变量看成一个点,"小于"关系看成有向边,则我们得到了一个有向图.这样,我们的任务实际上是把一个图的全部结点排序,使得每一条有向边(u,v)相应的u都排在v的前面.在图论中,这个问题称为拓扑排序. 不难发现:假设图中存在有向环,则不存在拓扑排序,反之则存在.我们把不包括有向环的有向图称为有向无环图.能够借助dfs函数完毕拓扑排序:在訪问完一个结点