1. 程式人生 > >關於拓撲排序的幾點總結

關於拓撲排序的幾點總結

拓撲排序的概念:

  • 重複一個操作:(遍歷入度為0的點,遍歷從這個點連線的其他點)

拓撲排序的注意事項:

  • 因為是遍歷時是從一個點到其他點,也就是說,需要是有向邊,再稍加推理即可得出這樣一個結論:拓撲排序必須在DAG上.

拓撲排序的例題(難度由低到高):

拓撲排序的適用範圍:

  • 有向無環圖(DAG)

關於拓撲排序的總結:

  • 無後效性:拓撲排序的過程類似動態規劃的無後效性的體現。這是因為,拓撲排序都是由入度為0的結點開始執行的。而執行過一次的點,不需要再次執行。而在執行的過程中又會產生新的入度為0的結點,這就類似DP的狀態轉移方程了.
  • 圖上演算法:拓撲排序是一種圖上演算法。與之類似的演算法有:Dijkstra,Kruskal等,其中,Dijkstra可以作用在無負邊權的圖上,而Kruskal可以執行在無向無環圖上。而拓撲排序只能執行在DAG上.
  • 數論:數論中的拓撲,指:只考慮物體之間的位置關係而不考慮物體的形狀和大小。(歐拉回路 例題:七橋問題)
  • 排序:拓撲排序也是一種“排序”演算法,也就是說,他可以求出一些具有依賴關係的任務的排序關係。比如:選課問題。
  • 關係:拓撲排序可以用於求一系列物件之間的關係。比如:三角戀問題