簡化您的工作流程:搜尋 miniwebtool。
添加插件
相關工具
鄰接矩陣計算機戴克斯特拉最短路徑計算機圖著色計算機圖度數序列驗證器穩定婚姻問題求解器
主頁 > 數學 > 進階數學計算 > 拓撲排序計算機
 

拓撲排序計算機

使用 Kahn 演算法或 DFS 計算有向無環圖 (DAG) 的拓撲排序。支援檢測環路、報告環路路徑、建立並行執行分層視圖、支援字典序最小排序,並在互動式圖表上動畫演示每個步驟。

拓撲排序計算機
邊格式:A -> B(也接受 , =>, :)。最多 80 個頂點 / 800 條邊。
Kahn 演算法(字典序)提供唯一且可復現的順序。DFS 後序遍歷是經典的深度優先方法。

Embed 拓撲排序計算機 Widget

拓撲排序計算機

拓撲排序計算機可計算有向無環圖 (DAG) 頂點的線性排序,使得從 u 到 v 的每條有向邊都讓 u 排在 v 之前。您可以邊列表或鄰接表的形式輸入圖形,本工具將使用 Kahn 演算法或 DFS 後序遍歷返回拓撲順序、偵測環路(並給出確切路徑)、將任務分組為並行執行層、計算有效排序的總數,並在交互式圖表上以動畫演示每個步驟。

什麼是拓撲排序?

給定一個有向圖 G = (V, E),拓撲排序(或稱拓撲順序)是其頂點 v₁, v₂, …, vₙ 的線性排列,使得對於每一條有向邊 (u → v),u 在排列中都出現在 v 之前。當且僅當圖中沒有有向環(即該圖為 DAG)時,才存在拓撲排序。排序結果通常不是唯一的:當多個頂點同時入度為零時,一個圖可以有多個有效的拓撲排序。

拓撲順序定義
V 的一個置換 (v₁, v₂, …, vn) 是拓撲排序,若且唯若
對於 E 中的每條邊 (u → v):position(u) < position(v)

此計算機使用的演算法

Kahn 演算法 (基於 BFS,1962)

Kahn 演算法是最直觀的拓撲排序方法。在每一步中,它挑選一個入度為零(沒有指向它的邊)的頂點,將其追加到輸出中,並通過減少其每個後續頂點的入度來將其從圖中「移除」。當有多個入度為零的頂點時,可以使用最小堆(得到字典序最小排序)或 FIFO 隊列(得到插入順序)來打破僵局。Kahn 演算法的運行時間為 O(|V| + |E|),且兼具環路偵測功能:如果隊列清空後仍有頂點入度 > 0,則圖中存在環路。

Kahn 演算法 (偽代碼)
Kahn(G):
  Q ← { v ∈ V : indeg(v) = 0 }
  L ← [ ]
   Q 不為空:
    u ← Q.pop()
    L.append(u)
    對於 每條邊 u → v:
      indeg(v) -= 1
      如果 indeg(v) = 0:Q.push(v)
  如果 |L| < |V|:報告環路
  否則:返回 L

DFS 後序遍歷 (Tarjan, 1976)

DFS 演算法執行深度優先搜索,每當一個頂點完成探索(即其所有後續頂點都已被完全探索)時,將其壓入棧中。最後反轉棧即可得到有效的拓撲排序。環路偵測非常自然:遇到一個仍在處理中(標記為 GRAY)的頂點意味著找到了回邊,因此該圖不是 DAG。DFS 後序遍歷的運行時間同樣為 O(|V| + |E|)。

DFS 後序遍歷 (偽代碼)
DFS-Topo(G):
  對於 V 中的每個頂點 u:color[u] ← WHITE
  L ← 空棧
  對於 V 中的每個頂點 u:
    如果 color[u] = WHITE:visit(u)
  返回 reverse(L)

visit(u):
  color[u] ← GRAY
  對於 每條邊 u → v:
    如果 color[v] = GRAY:報告環路
    如果 color[v] = WHITE:visit(v)
  color[u] ← BLACK; L.push(u)

並行執行層級

DAG 的分層視圖將其頂點劃分為不同的級別,使得每條邊都從編號較低的層級指向編號較高的層級。同一層中的頂點相互獨立,因此可以並行執行。層級數量等於最長路徑長度加一 — 這就是 DAG 的關鍵路徑,即在擁有無限並行能力的情況下,完成所有任務所需的最少順序輪次。只要輸入是 DAG,此計算機就會自動生成分層視圖。

環路偵測

如果圖中包含有向環,則無法進行拓撲排序。我們的計算機將報告確切的環路路徑(例如 A → B → C → A)並在視覺化圖表中以紅色突出顯示環路邊。移除環路上的任何一條邊都足以恢復無環性。

輸入格式

邊列表

將每條有向邊寫為 源點 -> 目標點,以逗號或換行符分隔。接受的箭頭變體:->, , =>, -->, :。您也可以連寫邊:A -> B -> CA->BB->C 的簡寫。頂點標籤可以是字母、數字、下劃線、連字符和點。

A -> B, B -> C, A -> C
C -> D
Shirt -> Tie -> Jacket

鄰接表

寫下每個頂點、一個冒號及其直接後續頂點(它指向的頂點)。沒有後續頂點的頂點仍需要佔一行,例如 D:

A: B, C
B: D
C: D
D:

如何使用此計算機

  1. 選擇格式: 通過單選按鈕在邊列表和鄰接表之間切換。
  2. 輸入圖形: 粘貼您的數據或點擊快速範例(穿衣順序、課程先修、構建目標、包含環路的圖形等)。
  3. 選擇演算法: Kahn 字典序以獲得唯一且可復現的順序;插入順序以保留輸入順序;DFS 後序遍歷用於經典深度優先方法;或選擇顯示全部以並排查看所有排序。
  4. 點擊「進行拓撲排序」: 排序結果、環路偵測、分層視圖、關鍵路徑長度、有效排序總數以及交互式圖表將顯示在下方。
  5. 探索: 按下播放鍵觀看每個頂點逐步輸出的過程。入度標記會實時更新。拖拽任何節點可調整佈局。

實際應用

構建系統與編譯器

make、Bazel、Gradle 和 npm 等工具會對其構建目標進行拓撲排序,以便每個目標僅在其所有相依項編譯完成後才進行編譯。相依圖中的環路通常被報告為致命錯誤 — 構建系統無法決定從哪裡開始。

任務調度

項目經理使用 DAG 來捕捉任務相依關係。拓撲排序提供了有效的執行順序,而分層視圖則提供了無限並行下的最少輪次。最長鏈是決定項目工期的關鍵路徑

課程先修規劃

大學課程目錄是一個 DAG:邊代表先修關係。拓撲順序是一個有效的學習計劃,而分層結構則告訴學生在每個學期中哪些課程組可以並行修讀。

電子表格重新計算

當一個單元格發生變化時,電子表格必須按相依順序重新計算每個下游單元格 — 這就是對單元格相依 DAG 進行拓撲排序。循環引用(環路)會被應用程式拒絕。

軟體包管理器與插件加載器

Apt、pip、Homebrew、Maven 和無數插件框架通過對其相依 DAG 進行拓撲排序來解決安裝或加載順序。

符號解析與指令調度

編譯器使用拓撲排序來排列聲明,而 CPU 使用數據相依 DAG 在重排序緩衝區中調度指令,以避免違反數據冒險。

計算拓撲排序的數量

對於一個具有 n 個頂點的 DAG,截然不同的有效拓撲排序數量範圍可以從 1(全序鏈)到 n!(無邊圖)。計算確切數量在一般情況下是 #P-complete 問題,但對於最多 16 個頂點的圖形,此計算機使用位掩碼動態規劃公式進行枚舉:f(S) = Σ f(S ∪ {v}),其中 v ∉ S 且其前驅頂點皆在 S 中。

複雜度與性能

常見問題

什麼是拓撲排序?

有向無環圖的拓撲排序是其頂點的線性排序,使得從 u 到 v 的每條有向邊都讓 u 排在 v 之前。它代表了在尊重相依關係的情況下處理任務的有效順序。

此計算機使用哪種演算法?

計算機同時運行 Kahn 演算法和 DFS 後序遍歷。Kahn 演算法重複移除入度為零的頂點並減少其後續頂點的入度。DFS 後序遍歷執行深度優先搜索並反轉完成順序。兩者的運行時間均為 O(|V| + |E|)。

如果我的圖形有環怎麼辦?

具有有向環的圖沒有拓撲排序。計算機將偵測到環路,在視覺化圖表中以紅色突出顯示,並報告確切的環路路徑,以便您查看應移除哪些邊使圖形變為 DAG。

什麼是字典序最小的拓撲順序?

當存在多個有效的拓撲排序時,在每一步始終挑選字母順序最小且入度為零的頂點,即可獲得字典序最小的排序。此計算機預設的 Kahn 模式會返回此唯一排序,該排序穩定且易於復現。

什麼是分層或級別視圖?

分層視圖根據距任何源點的最長路徑長度對頂點進行分組。同一層中的頂點之間沒有相依關係,因此可以並行執行。層數等於最長相依鏈加一,代表了完成所有任務所需的最少並行輪次。

一個圖形可以有多個有效的拓撲排序嗎?

是的。如果在 Kahn 演算法的任何步驟中有多個入度為零的頂點,則接著可以挑選其中任何一個。此計算機可計算最多 16 個頂點的圖形中截然不同拓撲排序的確切數量。

Kahn 演算法和 DFS 後序遍歷有什麼區別?

Kahn 演算法是自頂向下的:它重複挑選源點(入度 0)並首先輸出它們。DFS 後序遍歷是自底向上的:它先完成匯點並將其前置於順序中。兩者均為 O(|V| + |E|) 並產生有效的拓撲排序,但通常結果不同。Kahn 演算法更容易並行化以及適配字典序;DFS 則更容易與其他基於 DFS 的分析(如強連通分量)相結合。

此工具支持的最大圖形大小是多少?

計算機支持最多 80 個頂點和 800 條邊。計算有效拓撲排序總數的功能限制在 16 個頂點,因為該問題屬於 #P-complete,狀態空間按 2ⁿ 增長。交互式視覺化和演算法動畫可流暢支持至完整限制大小。

延伸閱讀

引用此內容、頁面或工具為:

"拓撲排序計算機" 於 https://MiniWebtool.com/zh-tw/拓撲排序計算機/,來自 MiniWebtool,https://MiniWebtool.com/

由 miniwebtool 團隊製作。更新日期:2026年4月20日

您還可以嘗試我們的 AI數學解題器 GPT,通過自然語言問答解決您的數學問題。

進階數學計算:

常用工具:

分數計算機隨機撲克牌產生器真心話大冒險產生器百分比增加計算機百分比增長率計算機斜邊計算機🎮 遊戲靈敏度轉換器隨機信用卡生成器羅馬數字轉換器相對標準偏差計算機磅轉公斤轉換器質數分解計算機比例計算機圓計算機kpa到psi轉換器最簡分數計算機毛利率計算機HEX計算機商和餘數計算機百分比折扣計算機kg到lbs轉換器百分比減少計算機圖片分割器校正鈣計算機MAC地址查找太陽、月亮與上升星座計算機 🌞🌙✨隨機字母生成器Instagram用戶ID查詢隨機名稱生成器年齡計算機百分比變化計算機百分比誤差計算機最小公倍數計算機反向文字查找並替換文字🌡️ 體感溫度計算機ANC計算機影片轉圖片擷取器年份天數計算機 - 今天是今年的第幾天簡單利息計算機坡度與傾斜度計算機複利計算機AI內容檢測器兩點間距離計算機Bar to PSI 轉換器隨機選擇器調整影片速度加價計算機定期存款計算機二次公式計算機迷宮產生器隨機餐點產生器SRT時間偏移標準偏差計算機 - 高精度多分數計算機📅 日期計算機樂透號碼生成器小字體生成器 ⁽ᶜᵒᵖʸ ⁿ ᵖᵃˢᵗᵉ⁾因子計算機分數百分比轉換器畢達哥拉斯定理計算機對數計算機分數到小數計算機音訊分割器模計算機CAGR計算機凱薩密碼工具合併影片PCB走線寬度計算機隨機數學題產生器影片壓縮器剪刀石頭布產生器cpm計算機平均值計算機隨機動物生成器橢圓 周長計算機賓果卡生成器比率與百分比計算機填字遊戲製作器克到磅轉換器文字重複工具最大公因子計算機百分比計算機FPS 轉換器星期幾計算機Zalgo文本生成器psi到kpa轉換器速度計算機文件大小轉換器速度轉換器YouTube頻道統計磅到克轉換器跑步配速計算機組合計算機⏱️ 小時計算機隨機英文單字產生器數獨產生器與求解器公因子計算機ERA計算機考拉茲猜想計算機隨機錦標賽對陣生成器我的幸運數字是什麼積分計算機OPS計算機圖片打碼工具Facebook用戶ID查詢HEX轉換器隨機顏色生成器可整除測試計算機百分比到ppm轉換器純利潤計算機保齡球計分計算機質數檢查器壓力轉換器隨機日期生成器斜率計算機總和計算機文本格式化工具SRT轉換為TXT工具科學記數法計算機AI標點符號添加器為影片新增浮水印隨機時間生成器隨機生日生成器十進製到科學記數法轉換器出生星期計算機小數到分數計算機線規計算機體積轉換器姓名靈數計算機條碼產生器排序數字🖱️ 點擊計數器GUID / UUID 生成器MAC地址產生器YouTube收益估算器行數統計工具不可見字元移除器投球命中率計算機血壓解讀器克到盎司轉換器刑期減免計算機棒球長打率計算機步數距離計算機演講時間計算機刪除線文字產生器樓梯計算機汽車貸款計算機線性迴歸計算機馬丁格爾策略計算機MP3循環播放器棒球打擊率計算機工時計算機淨利潤率計算機歐姆定律計算機燃油費用計算機階乘計算機鋼筋計算機PSI 轉 Bar 轉換器汽車折舊計算機工作搜尋器🌐 時區轉換器移除標點符號線上工具圖片壓縮器直角三角形計算機樣本量計算機黃金比例計算機隨機化數字影片分割器游泳配速計算機發音音標轉換器GIF 轉 MP4 轉換器圓柱體體積計算機 高精度隨機貓狗名字產生器上壘率計算機弧長計算機名人名言搜尋 (英文)心算訓練器角度轉換器預產期計算機橢圓面積計算機複數計算機多項式因式分解計算機比較分數計算機隨機字符串生成器WHtR計算機凱利公式計算機愛情兼容性計算機正方形計算機GIF 製作器Log Base 10 計算機倒立文本產生器土星回歸計算機數字轉分數轉換器比率計算機百分比到小數轉換器預期壽命計算機功率轉換器常規時間到小數時間轉換器血糖轉換器CGPA轉百分比轉換器簡易評分器 EZ Grader養育孩子成本計算機寶寶奶量計算機尿布尺寸計算機嬰兒名字產生器寶寶眼睛顏色預測器兒童BMI百分位計算機兒童身高預測器hcg翻倍時間計算機試管嬰兒預產期計算機著床計算機中國生男生女預測器ISO 8601 日期格式化工具儒略日轉換器午睡計算機月相計算機日出日落計算機世界時鐘日期至羅馬數字轉換器退休倒數計時戒癮天數計算機半歲生日計算機紀念日計算機週數計算機小費分配計算機電子郵件行銷ROI計算機每筆潛在客戶成本計算機營運資本計算機邊際貢獻計算機FIFO / LIFO 計算機安全庫存計算機再訂購點計算機經濟訂購量eoq計算機折舊計算機手工藝品定價計算機批發價格計算機Shopify 利潤計算機Amazon FBA 計算機eBay費用計算機Etsy費用計算機Stripe 手續費計算機PayPal手續費計算機投注賠率轉換器十一奉獻計算機天課計算機英國印花稅計算機HRA免稅計算機服務酬金計算機NPS計算機EPF計算機PPF計算機RD計算機SWP計算機稅前薪資倒推計算機貸款比較計算機信用使用率計算機CD階梯計算機美國國庫券T-Bill計算機I 系列儲蓄債券計算機529大學儲蓄計算機HSA計算機遣散費計算機加薪計算機發票產生器出差津貼計算機里程報銷計算機房租漲幅計算機按比例租金計算機房租負擔能力計算機汽車落地價計算機購車預算計算器機車貸款計算機房車貸款計算機船舶貸款計算機土地貸款計算機建築貸款計算機只付利息抵押貸款計算機氣球貸款計算機房貸點數計算機PMI計算機雙週房貸還款計算機ARM浮動利率房貸計算機VA貸款計算機實領薪資計算機AI SQL 查詢產生器AI正規表達式產生器AI 資料視覺化工具(貼上 CSV)AI文字語氣分析器AI履歷分析器AI單位轉換器自然語言AI道歉信產生器AI禮貌藉口產生器AI 旅行行程產生器AI閱讀清單產生器AI健身計劃產生器AI膳食計畫生成器AI禮物點子產生器AI食譜產生器依現有食材獎學金投資報酬率計算機大學費用計算機語言學習流利度小時數計算機詞彙測驗產生器康乃爾筆記產生器學習曲線計算機閃卡間隔重複排程器顏料調色計算機磁磚填縫劑計算機洗碗機裝載最佳化工具洗滌劑用量計算機染髮劑調配計算機列印成本計算機燃氣與電力成本比較禮品卡小費計算機搬家紙箱數量計算機儲物單元尺寸計算機膠囊衣櫥搭配計算機皮帶長度計算機液壓缸推力計算機滑輪組計算機齒輪比計算機機械比熱容計算機熱膨脹計算器熱傳遞計算機伯努利方程式計算機雷諾數計算機太陽位置計算機潮汐時間計算器星空可見度計算機繩結打法參考工具睡袋溫度評級指南帳篷地布尺寸計算機背包旅行食物重量計算機奈史密斯健行配速計算機刺繡線長度計算機樹脂灌模容量計算機串珠圖案計算機陶土收縮率計算機折紙紙張大小計算機被子滾邊計算機十字繡繡線計算機針織圖案計算機編織針尺寸轉換器鉤針尺寸轉換器馬匹乾草計算機寵物航空旅行航空箱尺寸查詢器爬蟲棲息地UVB計算機鳥籠尺寸計算機魚缸加熱棒瓦數計算機貓砂盆數量計算機前照燈光束距離計算機引擎壓縮比計算機輪胎胎紋磨損計算機拖車舌重計算機車輛重量分佈計算機旅行費用分攤計算機剎車距離計算機工傷賠償計算機遺產分配計算機商標分類查詢計算機專利申請費計算機銷售稅關聯檢查器訴訟時效計算機Airbnb 定價優化工具室友房租分攤計算機Section 8 租金計算機BRRRR 方法計算機現金對現金報酬率計算機租金收益率計算機1031 交換計算機財富成長視覺化工具午餐花費計算機健身房 vs 居家健身花費計算機咖啡花費計算機遠端工作省錢計算機副業ROI計算機訂閱費用追蹤器SaaS定價計算機自由接案專案報價計算機煙燻木材搭配指南發酵時間計算機醃製時間計算機飲食限制食譜篩選器香料替代查找器咖啡因半衰期追蹤器標準杯計算機葡萄酒搭配建議器攀岩難度等級轉換器自行車齒輪比計算機釣魚結強度計算機瑜伽體式保持計時器游泳SWOLF計算機跑步成績預測計算機拳擊出拳力量計算機橄欖球得分計算機板球得分率計算機足球 xG預期進球計算機網球計分器Wells評分計算機 (DVT/PE)格拉斯哥昏迷指數計算機阿普加評分計算機FFMI計算機庫珀12分鐘跑步計算機一英里步行測試Rockport計算機瘦體重力量計算器碳水化合物胰島素比例計算機胰島素敏感係數計算機希伯來曆轉換器伊斯蘭曆轉換器農曆轉換器跨文化年齡計算機多久以前計算機還有多久倒數計算機日期模式產生器中間日期計算機日期加上工作日工作日計算機詞頻分析器句子長度變異分析器海明威風格可讀性編輯器維吉尼亞密碼工具埃特巴什密碼工具ROT13編碼解碼器EXIF 資料檢視與移除工具豬拉丁文翻譯器倒推首字母縮寫產生器首字母縮寫產生器全字母句檢查器漏字文檢測器圖片轉SVG描摹器圖片轉 ASCII 藝術轉換器JSON Schema 產生器TypeScript 線上演練場Less 到 CSS 編譯器SCSS轉CSS編譯器SVG 轉 React/JSX 轉換器查詢字串產生器URL解析器UUID驗證和解碼器HTTP狀態碼參考cURL指令建構器謝爾賓斯基三角形產生器3D曲面繪圖器極座標方程繪圖器茱莉亞集合生成器曼德博集合探索器L-System分形產生器Delaunay 三角剖分生成器Voronoi 圖生成器萬花尺圖案產生器鑲嵌圖案產生器六標準差製程能力計算機YouTube縮圖下載器隨機RPG角色生成器