是否存在一個確定的算法,用於在有正確訪問N個節點的特定加權圖中找到從點A到點B的路徑,但不一定特別需要任何節點?包含n個節點的最佳圖形路徑
1
A
回答
0
我打算假設您正在嘗試用N個節點找到最短/最長的權重。這可能不是最優的,但是從您的原始圖中,您可以生成一個狀態圖,其中包含'N *(#Nodes)'節點,它們包含原始節點和步驟數,並通過一些最短路徑算法運行,如http://en.wikipedia.org/wiki/Dijkstra 「s_algorithm。
即
A->B->C
\___/
變得
(A,0)->(B,1)->(C,2)
\>(C,1)
你的目標節點將隨後是節點(B,N) - B與N個步驟。如果它不是DAG((X,0) - >(Y,1) - >(X,2)),則此方法將允許原始圖形中的循環。
4
此問題被稱爲NP-硬通過從Hamiltonian path減少。特別是,你可以用一個多項式時間的方法解決哈密爾頓路徑問題,如下所示:對於有n個節點的圖中每個可能的節點對(s,t),詢問是否存在從s到t的路徑通過正好n個節點。這隻對您的求解器進行多項式調用,所以任何多項式時間解決方案都會導致Hamiltonian路徑問題的多項式時間解決方案。
因此,總之,除非P = NP,否則不應該期望多項式時間算法用於這個問題。
0
我不確定我是否正確說明了它,你可以進行深度優先搜索(距離源頭N-1層)?
如果您可以在該圖層中訪問您的目的地。你可以在那裏找到一條路。
相關問題
- 1. 檢查是否存在包含一組N個節點的路徑
- 2. 查找包含有向圖中特定節點的路徑
- 3. 給定N個點中包含K個點的最小面積的正方形
- 4. 如何找到與加權節點圖的最佳路徑和頂點
- 5. 兩個圖形節點之間的固定長度路徑
- 6. 搜索XQuery中兩個圖形節點之間的路徑
- 7. 檢查樹路徑中的節點的最佳算法?
- 8. 矩形中包含的XNA Vector2路徑
- 9. 在圖中給出N個節點,其中包含最大距離
- 10. 頭文件包含C++庫中的路徑 - 最佳實踐
- 11. 如果路徑名包含「\ n」,路徑名將失敗
- 12. 找到Tinkerpop中兩個節點之間最短路徑的最佳方法3.1
- 13. 算法或途徑路徑問題,最短路徑與n點n = 12
- 14. 將n個節點連接到單個節點的最佳方法是什麼?
- 15. 從點列表的最佳路徑C++
- 16. 查找包含節點的所有關係的路徑
- 17. 圖中有多個「必須有」節點的最短路徑
- 18. 最有可能的路徑到達一個特定節點圖
- 19. JavaScript - 通過圖中數百個節點的最短路徑
- 20. 動態規劃:在n個節點的路徑中可能的最大重量
- 21. 未加權圖的最短路徑(最少節點)
- 22. 最佳路徑googleMaps
- 23. 變形最短路徑算法(路線從一個節點至自身)
- 24. 給定圖上的最佳路徑
- 25. 查找每個節點與路徑的最後一個節點之間的路徑的距離
- 26. 在路徑上隨機包含帶點的路徑
- 27. 如何返回n最佳最短路徑(dijkstra算法)
- 28. 找到多棵樹內的最佳路徑(多層多個節點)
- 29. 發現節點之間的最短路徑,以及圖形是否連接
- 30. 節點不看包裝,與路徑
我遇到的問題是有多條路徑連接特定的節點,所以它不僅僅是A-> B-> C對A-> D-> C,它更多地沿着A-1的線 - > B-3-> C對A-2-> B-1-> C – 2011-02-08 23:32:20
我不太清楚我明白你在說什麼,但讓我澄清一下 - 對於原始圖中的每個節點T ,我們生成N個節點(T,0),(T,1),(T,2)...(T,n)`。對於原始圖中的每條邊T> Y,我們在'(T,k)'和'(Y,k + 1)'之間創建一條邊。對於所有的K.因此,通過圖的路徑應該總是上升一個'(A,0) - >(B,1) - >(D,2)'等。 – dfb 2011-02-08 23:46:40