我有一個包含數十萬個節點和數萬個邊的大型無向圖。我有兩個單獨的問題:對於一組節點N =(節點[1],節點[2],節點[3],節點[4],節點[5]),並且比方說M =(節點[1001],節點[1002],節點[1003],節點[1004],節點[1005])是否存在N中的任何節點與M中的任何節點之間的路徑?Networkx圖:查找給定節點集合中的任何節點與另一組節點之間是否存在路徑
我知道存在nx.path.bidirectional_dijkstra()函數,但要使用,我必須測試所有組合N * M是多餘的(因爲許多節點將被多次查詢),並且因爲在實踐中N/M的長度可能在幾千,這是不實際的。
2)一個稍微單獨的問題,但有沒有辦法從N到M獲得所有路徑的列表?
我對如何「滾動我自己的」解決方案有一個大致的想法,但我想它會比如果有人已經這樣做了很多倍,但沒有圖論中的背景我不'甚至不知道我需要尋找什麼!謝謝。
謝謝,這看起來會很好!你知道圖論中是否有這種問題/算法的名稱,或者它不是經常出現的東西嗎? – Matthew 2013-05-02 21:10:48
想想看,如果我只是在N中的所有節點和M中的所有節點之間創建邊,那麼nx.has_path()應該直接給出答案。除非有什麼我失蹤。嗯... – Matthew 2013-05-02 22:32:35
這是http://en.wikipedia.org/wiki/Breadth-first_search的組合,並將點標記爲已訪問以實現更低的複雜度 – User 2013-05-03 06:58:13