拓撲排序:大學-高中階段自由選課
在圖論中,拓撲排序(topological sorting)是乙個有向無環圖(dag, directed acyclic graph)的所有頂點的線性序列。且該序列必須滿足下面兩個條件:
1.每個頂點出現且只出現一次。
2.若存在一條從頂點 a 到頂點 b ,則a為b的前序 。
tips:有向無環圖才有拓撲排序。
c++學習歷程(提高組必備):
語言->基礎演算法(高精度,列舉,分治等等)->搜尋->dp->資料結構(線性,樹,圖)
最重要的是:
多刷題!!!
複習:
1.入度:有幾條邊與它相連
2.佇列是神馬???
佇列用於線性表(主要),佇列可以理解為乙個陣列,f為隊首,先將f隊首指向0,隊尾為1
一.鄰接矩陣來做
#include
using
namespace std;
const
int maxn=
100+
5,maxm=
1000+5
;int a[maxn]
[maxn]
,rd[maxn]
,n,m;
//rd為入度
intmain()
for(
int i=
1;i<=n;i++
) cout<" ";
//輸出
for(
int j=
1;j<=n;j++)if
(a[k]
[j])
//如果它已經排過了
rd[j]--;
rd[k]=-
1;//這個點就沒用了
}return0;
}
二.用vector來做(用於稀疏圖)
**如下:
#include
using
namespace std;
const
int maxn=
10000+10
;int n,m,rd[maxn]
;vector<
int>a[maxn]
;//vector**好!!!
queue<
int>q;
//定義佇列
intmain()
for(
int i=
1;i<=n;i++)if
(rd[i]==0
) q.
push
(i);
//記住第乙個
while
(!q.
empty()
)}return0;
}
一道練習題:
已寫題解。
python 拓撲排序 Python 拓撲排序
python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...
python 排序 拓撲排序
在電腦科學領域中,有向圖的拓撲排序是其頂點的先行排序,對於每個從頂點u到頂點v的有向邊uv,在排序的結果中u都在v之前。如果圖是有向無環圖,則拓撲排序是可能的 為什麼不說一定呢?圖論 是組合數學的乙個分支,它和其他分支比如 群論 拓撲學 矩陣論有著密切的關係。圖是圖論的主要研究物件。圖是由若干給定的...
拓撲排序演算法
對許多資料結構教材實在不滿意,至少我是看不懂 至於拓撲排序演算法,教材上那些偽 真真教人頭暈。只寫了幾個struct結構,我根本看不出這是鄰接表。如果給出乙個清晰明了的圖,一切不就簡單了?總之,關鍵就是建立乙個鄰接表。然後利用這個表進行拓撲排序。邊表結點宣告 typedef struct edgen...