Как из исходного графа сделать новый граф с вершинами соответствующими рёбрам исходного графа?
Как, имея исходный граф, сделать из него новый граф, в котором вершины будут соответствовать рёбрам исходного графа, то есть - сделать рёберный граф?
Например, исходный граф:
import networkx as nx
G = nx.Graph()
G.add_nodes_from([1, 2, 3, 4, 5, 6])
G.add_edges_from([(1, 5), (1, 3), (1, 2), (1, 4), (5, 6), (4, 6)])
Пронумеровала рёбра графа (сделала их вершинами), таким образом закинула в словарь:
vertices_of_the_new_graph = dict(zip(graph.edges(), graph.nodes()))
Каким образом можно составить рёбра нового графа, основываясь на смежности рёбер в изначальном графе? И стоит ли вообще использовать словарь?
Необходимо привести новый граф к виду начального, т.е. с методами .add_nodes_from() и .add_edges_from().
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Если я правильно понял вопрос - можно воспользоваться nx.line_graph():
L = nx.line_graph(G)
результат:
In [102]: print(L.edges())
[((1, 2), (1, 4)), ((1, 2), (1, 5)), ((1, 2), (1, 3)), ((1, 3), (1, 5)), ((1, 3), (1, 4)), ((1, 4), (1, 5)), ((1, 4), (4, 6)), ((1, 5), (5, 6)), ((5, 6), (4, 6))]
In [103]: print(L.nodes())
[(1, 2), (1, 3), (1, 4), (1, 5), (5, 6), (4, 6)]

