![](/img/trans.png)
[英]How can i remove all edges of a specific path(for example the shortest path between two nodes) in a graph?
[英]Getting a random simple path between two nodes in a graph
給定圖中的起始節點和目標節點,我想在這兩個節點之間找到一條簡單的路徑。 我不想要最短路徑,但需要任何隨機的簡單路徑。 我嘗試使用all_simple_paths
的 all_simple_paths,但該模塊似乎在返回任何內容之前計算所有簡單路徑。 這需要很長時間才能運行。 有沒有辦法只找到一條簡單的路徑?
此外,我希望確保這條道路不會跨越任何“障礙”。 這些障礙物是來自同一圖中的一組預定義節點。 有沒有辦法添加這個約束?
PS:我不一定需要使用networkx。 我正在編寫的代碼是用 Python 編寫的。
您可以將其視為最小成本網絡流量問題,其中您的起始節點想要向您的目標節點(需求 = 1)發送一個流量單位(需求 = -1)。 您可以將邊容量設置為 1,並且可以將所有邊權重設置為 0,除了“障礙”節點周圍的那些。 對於那些障礙節點,您可以將所有進入或離開它們的邊設置為權重為 1。該算法將嘗試僅使用權重為 0 的邊來查找任意路徑,但如果沒有路徑,則將使用權重為 1 的邊僅存在權重為 0 的邊。
請參閱nx.min_cost_flow
函數。 此函數要求您將圖形nx.DiGraph
有向圖nx.DiGraph
如果還沒有)。
我設法通過使用 RRT 算法解決了這個問題。 它給出了源節點和目標節點之間的隨機路徑,並避免了障礙物。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.