拓扑排序
TuoPuSort
一、概念
我们再说拓扑排序时,我们首先了解下DAG
将有向无环图G=(V,E)中的所有顶点排成一个线性序列,使图中任意一对顶点u,v,之间不存在环路
DAG是一种特殊的有向图,它由一组顶点和一组有向边组成,且不存在任何环路。
- 每个顶点表示一个任务或操作,而有向边表示任务之间的依赖关系。
- 在有向无环图中,从任意顶点出发沿着有向边行走,不会回到起始顶点。
拓扑排序:
看完上面,我们说下拓扑排序,这玩意儿的出现就是针对有向无环图,通过此算法,找出邮箱无环图的序列
注意: 拓扑排序的序列是不唯一的
算法描述:
使用邻接矩阵的代码如下: 【不懂,就画图,每个新序列按照一步步去拆解】
/**
* @param1: 邻接矩阵,adjMatrix[i][j] = 0 表示节点 i 和 j 之间没有边直接相连
* @return: 拓扑序列
* @description: 对用邻接表 adjMatrix 表示的图进行拓扑排序
*/
public static int[] tuopuSort(int[][] adjMatrix){
//n表示图中的节点数
int n=adjMatrix.length;
//计算图中每个节点的入度,inDegree[i]=j 表示节点i 的入度为j
int[] inDegree=new int[n];
for(int j=0;j<n;j++){
for(int i=0;i<n;i++