我知道它可以在O(V + E)中使用拓撲排序完成。但我認爲它也可以使用BFS以相同的複雜度完成。我們可以使用BFS(以最優方式)查找加權有向非循環圖中從源節點到所有其他節點的最短路徑嗎?
0
A
回答
0
除了它是一個DFS運行外,拓撲排序沒有任何意義。然後,當每個頂點完成後,將它放到鏈表的前面。它的運行時間爲O(V + E)。正如我之前所說的,我認爲在這裏更自然地問「我們可以使用BFS進行拓撲排序嗎?」。這已經被問及和回答。
如果你的意思是純粹的BFS,那麼我會說不。看看這個example。拓撲排序是所有頂點的線性排序,因此如果圖G包含邊(u,v),則u在排序中出現在v之前。在這個例子中你可以看到從c到d有一條邊,但是d出現在c之前。我認爲你可以更新BFS來查找拓撲排序,但它又像運行DFS一樣複雜。我建議你看看這篇文章Using BFS for topological sort
+0
讓我們忘了一段時間的拓撲排序。如果我使用廣度優先遍歷DAG,從一個源節點s開始,那麼我可以通過維持一個距離數組(初始化爲無窮大)並在O(V + E)時間內找到所有其他節點的最短距離,並在我們得到的值小於當前存儲的節點值。因此,回到我原來的問題,是不是這種方法具有與使用拓撲順序遍歷DAG中的節點以找到最短路徑相同的複雜性? –
相關問題
- 1. 使用BFS查找2個節點之間的最短路徑
- 2. 查找有向圖中源到所有頂點的所有最短路徑
- 3. 在加權圖中找到從節點到所有其他節點的距離
- 4. 有約束節點通過的有向圖加權圖最短路徑
- 5. 使用BFS查找兩個節點之間的所有路徑
- 6. 如何找到覆蓋有向循環圖中所有節點的最短路徑?
- 7. 找到有向未加權圖中兩個節點之間的所有最短路徑的數量
- 8. 有向無環圖:找到特定節點的所有路徑
- 9. 未加權圖的最短路徑(最少節點)
- 10. 查找有向圖中節點數最多的路徑
- 11. neo4j - 找到兩個以上節點之間的所有最短路徑
- 12. 通過所有其他節點(NP-Hard?)從節點A到B的最短路徑
- 13. xquery - BFS查找兩個節點之間的所有路徑
- 14. Neo4J找到使用所有節點(無序)的最短路徑密碼
- 15. 使用BFS算法在未加權的有向圖中找到兩個節點之間的所有最短路徑
- 16. 查找圖中一對節點之間的K-最短路徑?
- 17. 圖中有多個「必須有」節點的最短路徑
- 18. 如何在有向循環圖中找到最長的簡單路徑(包括所有中間節點)?
- 19. 使用BFS找到最短路徑
- 20. 加權有向非循環圖的最長路徑
- 21. 在有向加權圖中找到給定節點的n個最接近節點的最快方法
- 22. 如何確定特定節點是否可以找到所有其他節點?
- 23. BFS,試圖找到節點之間最長的方式
- 24. 找到有向圖的最短路徑
- 25. 如何在有向圖中找到最小的一組頂點,以便可以達到所有其他頂點
- 26. 檢查節點是否在有向圖的節點路徑中
- 27. 可達性計數在向非循環圖的所有節點
- 28. 在未知大小的加權有向圖上,如何迭代兩個頂點之間從最短到最長的所有可能的非循環路徑?
- 29. 在mysql和php中的無向,未加權圖形中的2個節點之間的所有最短路徑
- 30. 使用shortestPath()查找兩步查詢是找到從一個節點到多個節點的最短路徑的最有效解決方案?
你能詳細說明一下你的意思嗎(以最優方式)?如果你的意思是複雜性,那麼是的。拓撲排序是DFS的應用,這就是爲什麼它具有O(V + E)的複雜性。我認爲詢問「我們可以使用BFS做拓撲排序嗎?」更自然。這個問題已經被問到。 – Abdulhakeem
我的意思是我們可以只使用BFS而不是以拓撲順序訪問節點。 –