Создание клики в питоне

Есть ли удобный способ создать клику из списка объектов (например, строк), представляющих вершины, вместо создания каждого ребра вручную?


person Maoritzio    schedule 25.11.2015    source источник
comment
Примечание. Я также добавил редактирование, показывающее, как изменить G на месте.   -  person Joel    schedule 26.11.2015


Ответы (1)


Вероятно, это дубликат Как сгенерировать полносвязный подграф из списка узлов с помощью модуля python networkx, но я дам ответ, отличный от того, что там есть.

Подход состоит в том, чтобы создать клику, а затем использовать метод networkx для перемаркировки узлов.

import networkx as nx
L=["hello", "world", "how", "are", "you"]
G=nx.complete_graph(len(L))
H=nx.relabel_nodes(G,dict(enumerate(L)))

H.nodes()
> ['how', 'are', 'world', 'you', 'hello']
G.nodes()
> [0,1,2,3,4]

nx.relabel_nodes(G,dict(enumerate(L)), copy=False) #you can also change G in place
G.nodes()
> ['how', 'are', 'world', 'you', 'hello']
person Joel    schedule 25.11.2015
comment
Я добавил строку в конце, чтобы показать, как изменить G на месте - person Joel; 26.11.2015