1 回答

TA貢獻1966條經(jīng)驗 獲得超4個贊
連接組件的正確命名是完整的子圖(不要混淆真正的連接組件)。您的問題被稱為集團問題。networkx有幾種算法可以解決這個問題: networkx cliques
你的問題可以通過這個函數(shù)來解決:networkx.algorithms.clique.enumerate_all_cliques
請注意,此函數(shù)返回所有可能的團,長度也為 1 和 2(即每個節(jié)點和每條邊),因此您應該過濾 1-2 長度的團。例如,對于您的圖表,此函數(shù)返回:
list(nx.enumerate_all_cliques(G))
[[0],
[1],
[2],
[3],
[4],
[5],
[6],
[7],
[8],
[9],
[10],
[0, 1],
[0, 5],
[1, 2],
[1, 6],
[1, 7],
[2, 3],
[2, 7],
[2, 8],
[3, 4],
[3, 8],
[4, 8],
[5, 6],
[5, 9],
[6, 7],
[6, 9],
[6, 10],
[7, 8],
[7, 10],
[9, 10],
[1, 2, 7],
[1, 6, 7],
[2, 3, 8],
[2, 7, 8],
[3, 4, 8],
[5, 6, 9],
[6, 7, 10],
[6, 9, 10]]
但如果我們過濾所有無用的派系,我們將得到:
list(filter(lambda x: len(x) > 2, nx.enumerate_all_cliques(G)))
[[1, 2, 7],
[1, 6, 7],
[2, 3, 8],
[2, 7, 8],
[3, 4, 8],
[5, 6, 9],
[6, 7, 10],
[6, 9, 10]]
添加回答
舉報