Can you summarize the following document?
        
  

  卡恩於1962年提出了該演算法。簡單來說,假設L是存放結果的列表,先找到那些入度為零的節點,把這些節點放到L中,因為這些節點沒有任何的父節點。然後把與這些節點相連的邊從圖中去掉,再尋找圖中的入度為零的節點。對於新找到的這些入度為零的節點來說,他們的父節點已經都在L中了,所以也可以放入L。重複上述操作,直到找不到入度為零的節點。如果此時L中的元素個數和節點總數相同,說明排序完成;如果L中的元素個數和節點總數不同,說明原圖中存在環,無法進行拓撲排序。

  另一種拓撲排序的方法運用了深度優先搜尋。深度優先搜尋以任意順序迴圈遍歷圖中的每個節點。若搜尋進行中碰到之前已經遇到的節點,或碰到葉節點,則中止演算法。

  在某校的選課系統中,存在這樣的規則:每門課可能有若干門先修課,如果要修讀某一門課,則必須要先修讀此課程所要求的先修課後才能修讀。假設一個學生同時只能修讀一門課程,那麼,被選課系統允許的他修完他需要所有課程的順序是一個拓撲序。  在這個例子中,每一門課程對應有向圖中的一個頂點,每一個先修關係對應一條有向邊(從先修課指向需要先修課的課)。
在電腦科學領域,有向圖的拓撲排序是其頂點的線性排序,使得對於從頂點formula_1到頂點formula_2的每個有向邊formula_3,formula_1在排序中都在formula_2之前。