Networkx: создание полного графа для заданного набора узлов - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть список как c4_leaves = [56,78,90,112].Я пытаюсь создать полный граф, используя эти элементы в c4_leaves в качестве узлов.Вот что я пробовал:

    V_ex = c4_leaves
    G_ex = nx.Graph() 
    G_ex.add_nodes_from(V_ex)
    G_ex = nx.complete_graph(4)


    for u,v in G_ex.edges():
        G_ex[u][v]['distance'] = distance(points33, u, v)

А затем минимальное остовное дерево приведенного выше графика как:

 T_ex= nx.minimum_spanning_tree(G_ex, weight='distance')
 F_ex = list(T_ex.edges())

Когда я рисую G_ex, это дает мне правильный график, но когда я печатаю детали минимального связующего дерева, это показывает, что T_ex.nodes() = [0,1,2,3,56,78,90,112].

Может кто-нибудь показать мне ошибку, которую я делаю?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вместо использования complete_graph, который генерирует новый полный граф с другими узлами, создайте желаемый граф следующим образом:

import itertools
import networkx as nx

c4_leaves = [56,78,90,112]
G_ex = nx.Graph()
G_ex.add_nodes_from(c4_leaves)
G_ex.add_edges_from(itertools.combinations(c4_leaves, 2))

В случае ориентированных графов используйте:

G_ex.add_edges_from(itertools.permutations(c4_leaves, 2))
0 голосов
/ 22 сентября 2018

Команда G_ex = nx.complete_graph(4) создает полный граф G, чьи узлы равны 0, 1, 2 и 3. Затем вы добавляете больше к G, но у него есть эти узлы.

...