OSDN Git Service

修改 Kahn 算法的描述
authorZHB <45039623+zhb2000@users.noreply.github.com>
Sat, 19 Sep 2020 14:39:29 +0000 (22:39 +0800)
committerGitHub <noreply@github.com>
Sat, 19 Sep 2020 14:39:29 +0000 (22:39 +0800)
docs/graph/topo.md

index 186237a..eeea137 100644 (file)
 
 ## Kahn 算法
 
°\86å\85¥åº¦ä¸º $0$ ç\9a\84ç\82¹ç»\84æ\88\90ä¸\80个é\9b\86å\90\88 $S$ 
\88\9då§\8bç\8a¶æ\80\81ä¸\8bï¼\8cé\9b\86å\90\88 $S$ è£\85ç\9d\80æ\89\80æ\9c\89å\85¥åº¦ä¸º $0$ ç\9a\84ç\82¹ï¼\8c$L$ æ\98¯ä¸\80个空å\88\97表ã\80\82
 
-每次从 $S$ 里面取出一个顶点 $u$ (可以随便取)放入 $L$ , 然后遍历顶点 $u$ 的所有边 $(u, v_1), (u, v_2), (u, v_3) \cdots$ , 并删除,并判断如果该边的另一个顶点,如果在移除这一条边后入度为 $0$ , 那么就将这个顶点放入集合 $L$ 中。不断地重复取出顶点然后……
+每次从 $S$ 中取出一个点 $u$ (可以随便取)放入 $L$ , 然后将 $u$ 的所有边 $(u, v_1), (u, v_2), (u, v_3) \cdots$ 删除。对于边 $(u, v)$,若将该边删除后点 $v$ 的入度变为 $0$,则将 $v$ 放入 $S$中。
 
-最后当集合为空后,就检查图中是否存在任何边。如果有,那么这个图一定有环路,否者返回 $L$ , $L$ 中顺序就是拓扑排序的结果
+不断重复以上过程,直到集合 $S$ 为空。检查图中是否存在任何边,如果有,那么这个图一定有环路,否则返回 $L$ , $L$ 中顶点的顺序就是拓扑排序的结果。
 
 首先看来自 [Wikipedia](https://en.wikipedia.org/wiki/Topological_sorting#Kahn's_algorithm) 的伪代码
 
@@ -40,7 +40,7 @@ else
     return L (a topologically sortedorder)
 ```
 
-代码的核心是,是维持一个入度为 0 的顶点
+代码的核心是维持一个入度为 0 的顶点的集合
 
 可以参考该图