拓扑排序

Kahn 算法:反复输出入度为 0 的顶点并删除其出边,直到全部顶点排成线性序列。适用于选课 依赖、工程工序等有向无环图(DAG);顶点下方的数字实时显示当前入度,若序列排不满则说明 图中存在环。

拓扑排序
01 / 14 步
有向图共 6 个顶点、7 条边。计算各顶点入度,入度为 0 的顶点可先输出。
伪代码

				
					
					1
					procedure TopologicalSort(G)
				
			
				
					
					2
					  indegree ← 计算各顶点入度
				
			
				
					
					3
					  queue ← 所有 indegree 为 0 的顶点
				
			
				
					
					4
					  while queue not empty do
				
			
				
					
					5
					    u ← dequeue(queue); 输出 u
				
			
				
					
					6
					    for each 出边 (u, v) do
				
			
				
					
					7
					      indegree[v] ← indegree[v] - 1
				
			
				
					
					8
					      if indegree[v] = 0 then enqueue(v)
				
			
				
					
					9
					  end while
				
			
				
					
					10
					  if 输出的顶点数 < n then 图中存在环
				
			
				
					
					11
					end procedure
				
			
01 / 14
速度