我想要查找DAG中兩個節點之間的路徑數。 O(V^2)和O(V + E)是可接受的。 O(V + E)提醒我以某種方式使用BFS或DFS,但我不知道如何使用BFS或DFS,但我不知道如何使用BFS或DFS。 有人可以幫忙嗎?DAG中兩個節點之間的路徑數
10
A
回答
17
做一個拓撲排序的DAG,然後將目標的頂點向後掃描到源。對於每個頂點v
,保留從v
到目標的路徑數量。當你到達源頭時,計數值就是答案。那是O(V+E)
。
6
從節點u到v的不同路徑的數量是從節點x到v的不同路徑的總和,其中x是u的直接後裔。
存儲每個節點(臨時設置爲0)的目標節點v的路徑數量,使用相反方向從v(此處值爲1)開始,併爲每個節點重新計算此值(將所有子節點的值)直到你到達你。
如果按拓撲順序處理節點(又是相反的方向),則可以保證在訪問給定節點時已經計算了所有直接後代。
希望它有幫助。
相關問題
- 1. 如何查找DAG中兩個頂點之間的最大權重路徑?
- 2. 兩個節點之間的最短路徑數
- 3. 查找兩個頂點(節點)之間的所有路徑
- 4. 搜索XQuery中兩個圖形節點之間的路徑
- 5. Neo4j:找到兩個節點之間有多個路徑
- 6. GraphViz,找到兩個節點之間的最短路徑
- 7. 查找兩個節點之間的所有路徑
- 8. 在兩個節點之間創建專用路徑的算法
- 9. 使用BFS查找兩個節點之間的所有路徑
- 10. 使用DFS查找兩個節點之間的所有路徑
- 11. 兩個圖形節點之間的固定長度路徑
- 12. 找到任意兩個節點之間最長的路徑
- 13. 誘導子圖;兩個節點之間的路徑存在
- 14. xquery - BFS查找兩個節點之間的所有路徑
- 15. Neo4j - 如何找到兩個節點之間的最短路徑
- 16. 計算DAG中通過節點的最短路徑數
- 17. 複製一個節點路徑 - CYPHER(查詢兩個節點之間的所有路徑)
- 18. 查找圖中兩個節點之間固定跳數的最短路徑
- 19. 兩點之間最長的路徑
- 20. 繪製兩點之間的路徑
- 21. 基於不同條件的圖中兩個節點之間的最短路徑
- 22. 如何找到兩個節點之間的循環圖中最長的路徑?
- 23. 獲取兩個節點之間的路徑並使用它來匹配兩個其他類型的節點
- 24. 如何確保兩個節點之間的路徑通過中間節點的所有連接?
- 25. 未加權圖/樹中兩個給定節點之間的最短路徑
- 26. 如何找到Lisp中兩個節點之間最長的路徑?
- 27. 圖中任意兩個節點之間的最長最短路徑
- 28. 使用BFS和DFS查找圖表中兩個節點之間的路徑
- 29. 查找大圖中兩個節點之間的所有可能路徑
- 30. 找到Tinkerpop中兩個節點之間最短路徑的最佳方法3.1
這是功課嗎? – 2011-03-02 07:57:52
這應該轉向理論 – 2013-03-28 18:13:50