2013-01-09 66 views
2

我有一個表示一組依賴關係的大圖。僅在通過給定頂點連接的頂點的拓撲排序圖上

  • A - >乙
  • A - >Ç
  • 乙 - >˚F
  • Ç - 「G
  • d - >電子
  • ë - >大號
  • 的F - >ħ
  • 的F - >我
  • ħ - >ķ
  • 的J - >ķ

鑑於乙作爲起始節點,結果需要是:BFIHK

我不需要任何其他節點,因爲它們不能從B.

的用戶到達可以指定一個節點,我需要收集這些路徑中的所有路徑和節點,並打印這些節點的拓撲排序。

目前我通過

  1. 實施這個創建一個新的圖形
  2. 提取從給定節點的所有輸出邊沿。
  3. 在圖形中添加這些邊。從這些邊緣獲取節點並將它們添加到新圖形中。
  4. 對於步驟3,重複(2)每個節點(3)
  5. 在新圖中,執行拓撲排序,並得到節點

    的順序是否有其他更好的辦法做到這個或已知的算法用於查找節點子集的拓撲排序?

回答

0

我想看一下depth_first_visit()函數和boost提供的Visitor Pattern。 Visitor Pattern允許您在樹搜索時檢查頂點和邊。 depth_first_visit()函數允許您從特定頂點開始DFS搜索。