簡體   English   中英

獲取圖中兩個節點之間的隨機簡單路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM