我有一個有向圖,每個節點都有一個分數。從節點開始,我需要找到通過遵循路徑可以實現的最高分數。並非所有節點都可以成爲最終節點。也可以重新訪問一個節點,但只有第一次訪問纔算得分。我如何計算最高可達分數?有向圖中得分最高的計算路徑
3
A
回答
4
首先,您可能會發現該圖的strongly connected components。然後你可以建立一個濃度的圖。
在縮合每個頂點可具有等於在初始圖頂點的分數的總和的分數。
藍數字顯示在初始圖中每個頂點的得分。黃色 - 在圖中凝結。
如果它們包含最後一個節點,還要標記一些冷凝的頂點作爲終端。您還可以將每個圖頂點映射到冷凝中的頂點。
連接組件的概念很重要,因爲如果您發現自己位於組件的一個頂點中,則可以輕鬆訪問組件的所有其他頂點以最大化分數。您可以自由地重新訪問任何次數的每個頂點。
冷凝本身是一個有向非循環圖。現在可以遍歷與深度優先搜索的縮合圖表維持功能
˚F v = 0 - 如果V沒有到達終止頂點(上下面畫面右下頂點)
˚F v = MAX 我(F 子 v,I)+得分 v - 否則
紅色圓圈顯示在初始圖和冷凝認爲終端是什麼頂點。 綠色的數字顯示凝結圖中每個頂點的F值。
對於你的問題的答案是在初始圖中對應於起始頂點的凝結頂點的F值。總的時間複雜度爲O(N + M),其中N是頂點數,M是初始圖中的邊數。
相關問題
- 1. 從完整圖計算最短路徑
- 2. 計算最長路徑
- 3. 有向無環圖的最短路徑
- 4. 找到有向圖的最短路徑
- 5. 分析大圖 - 檢索集羣和計算最強路徑
- 6. 有沒有算法來計算最短的樹(不是路徑)?
- 7. Oracle - 計算圖中的路徑值
- 8. 計算包含循環的有向圖中的簡單路徑的數量
- 9. Floyd-Warshall算法:得到最短路徑
- 10. 使用高程查找最短路徑的圖算法
- 11. networkx:高效地找到有向圖中絕對最長的路徑
- 12. 圖中最短的部分路徑
- 13. 設計最短路徑算法
- 14. 計算最小路徑在SQL表
- 15. 查找無向圖路徑的算法
- 16. 如何計算R中矩陣運算的最短路徑?
- 17. JObject計算路徑
- 18. 計算SVG路徑
- 19. 如何計算定向非循環圖的關鍵路徑?
- 20. 最有效的最短路徑算法非負邊緣圖
- 21. 歐拉路徑,有向圖
- 22. Dijkstra無向圖的最短路徑
- 23. 有向圖中有多條路徑?
- 24. 計算形狀的徑向圖
- 25. 有向圖中的路徑相似
- 26. 如何獲得最高票圖像路徑
- 27. 查找有向圖中節點數最多的路徑
- 28. 有序圖中最長的路徑
- 29. 太陽的路徑計算
- 30. 得分沒有被計算?