Я занимаюсь разработкой приложения на Python и хочу перечислить все возможные подключенные подграфы любого размера, начиная с каждого узла, используя NetworkX.
Я просто попытался использовать комбинации () из библиотеки itertools, чтобы найти всевозможна комбинация узлов, но она слишком медленная, потому что она ищет также не подключенные узлы:
for r in range(0,NumberOfNodes)
for SG in (G.subgraph(s) for s in combinations(G,r):
if (nx.is_connected(SG)):
nx.draw(SG,with_labels=True)
plt.show()
Фактический вывод правильный.Но мне нужен другой способ быстрее, чтобы сделать это, потому что все комбинации узлов с графом из 50 узлов и 8 как LenghtTupleToFind составляют до 1 миллиарда (n! / R! / (Nr)!), Но только минимальная их частьподключенный подграф, так что это то, что меня интересует. Итак, есть возможность иметь функцию для этого?
Извините за мой английский, заранее спасибо
РЕДАКТИРОВАТЬ :
Это пример:
пример начального графика
Итак, результаты, которые я хотел бы получить:
[0]
[0,1]
[0,2]
[0,3]
[0,1,4]
[0,2,5]
[0,2,5,4]
[0,1,4,5]
[0,1,2,4,5]
[0,1,2,3]
[0,1,2,3,5]
[0,1,2,3,4]
[0,1,2,3,4,5]
[0,3,2]
[0,3,1]
[0,3,2]
[0,1,4,2]
и все комбинации, которые генерируют связный граф