拓?fù)渑判蛩惴▓D解 數(shù)據(jù)結(jié)構(gòu)拓?fù)渑判蛴心膸追N序列?
數(shù)據(jù)結(jié)構(gòu)拓?fù)渑判蛴心膸追N序列?拓?fù)渑判虻姆椒ㄊ?,先找到第一個沒有被指的,就是C1,加入序列。然后擦掉跟C1有關(guān)的邊,此時C2和C3都滿足沒有被指,選一個,比如選C2,加入序列,擦掉和C2有關(guān)的邊,這個
數(shù)據(jù)結(jié)構(gòu)拓?fù)渑判蛴心膸追N序列?
拓?fù)渑判虻姆椒ㄊ?,先找到第一個沒有被指的,就是C1,加入序列。然后擦掉跟C1有關(guān)的邊,此時C2和C3都滿足沒有被指,選一個,比如選C2,加入序列,擦掉和C2有關(guān)的邊,這個時候可以選C3,C4,C5或C6……如此而已
拓?fù)渑判驎r間復(fù)雜度o(n e)怎么算的?
對有n個頂點(diǎn)和e條弧的有向圖而言,建立求各頂點(diǎn)的入度的時間復(fù)雜度為O(e);建零入度頂點(diǎn)棧的時間復(fù)雜度為O(n);在拓?fù)渑判蜻^程中,若有向圖無環(huán),則每個頂點(diǎn)進(jìn)一次棧、出一次棧,入度減1的操作在while語句中總共執(zhí)行e次,所以總的時間復(fù)雜度為O(n e)。 對一個有向無環(huán)圖(Directed Acyclic Graph簡稱DAG)G進(jìn)行拓?fù)渑判?,是將G中所有頂點(diǎn)排成一個線性序列,使得圖中任意一對頂點(diǎn)u和v,若邊(u,v)∈E(G),則u在線性序列中出現(xiàn)在v之前。 通常,這樣的線性序列稱為滿足拓?fù)浯涡?Topological Order)的序列,簡稱拓?fù)湫蛄?。簡單的說,由某個集合上的一個偏序得到該集合上的一個全序,這個操作稱之為拓?fù)渑判颉?時間復(fù)雜度是同一問題可用不同算法解決,而一個算法的質(zhì)量優(yōu)劣將影響到算法乃至程序的效率。算法分析的目的在于選擇合適算法和改進(jìn)算法。 計算機(jī)科學(xué)中,算法的時間復(fù)雜度是一個函數(shù),它定性描述了該算法的運(yùn)行時間。這是一個關(guān)于代表算法輸入值的字符串的長度的函數(shù)。 時間復(fù)雜度常用大O符號表述,不包括這個函數(shù)的低階項和首項系數(shù)。使用這種方式時,時間復(fù)雜度可被稱為是漸近的,它考察當(dāng)輸入值大小趨近無窮時的情況。
什么是拓?fù)渑判颍?/h2>
拓?fù)渑判蚴蔷€性代數(shù)里面所學(xué)的內(nèi)容,對一個有向無環(huán)圖進(jìn)行排序,是將圖中的所有頂點(diǎn)排成一個線性序列,使得圖中任意的一對頂點(diǎn),若對定點(diǎn)的邊完全屬于圖,則一個頂點(diǎn)在線性序列中出現(xiàn)在另一個頂點(diǎn)之前。這樣的線性序列就是滿足拓?fù)浯涡虻男蛄?,簡稱拓?fù)湫蛄小?/p>