Как найти края между двумя разделами графа с помощью Python?Python

Программы на Python
Anonymous
Как найти края между двумя разделами графа с помощью Python?

Сообщение Anonymous »

Я работаю с графом из 11 узлов (представляющих друзей), используя NetworkX. Я вручную разделил граф на две группы и хочу найти ребра, соединяющие эти две группы (разрезанные ребра).
Вот мой код:

Код: Выделить всё

import networkx as nx

G = nx.Graph()

edges = [
(1,2),(1,3),(2,3),
(4,5),(5,6),(4,6),
(7,8),(8,9),(9,7),
(10,11),
(3,4),(6,7),(9,10)
]

G.add_edges_from(edges)

group1 = {1,2,3,4,5}
group2 = {6,7,8,9,10,11}

cuts = []

for u, v in G.edges():
if (u in group1 and v in group2) or (u in group2 and v in group1):
cuts.append((u, v))

print(cuts)
Это дает мне разрезанные края между двумя группами.
Мои вопросы:
  • Правильный ли это способ найти обрезанные края?
  • Есть ли в NetworkX встроенная функция, позволяющая делать это более эффективно?
  • Как я могу гарантировать, что раздел сбалансирован автоматически? вместо определения групп вручную?
Я хочу найти минимальный разрез (лучший раздел) вместо того, чтобы выбирать группы вручную.

Вернуться в «Python»