2015-04-11 5 views
1

Как я могу сделать глубокую копию ориентированного графа в Python? Существуют ли существующие в python модули для работы с структурами графов? Каждый узел имеет поле data и поле neighbors, которое является list, хранящим ссылки на соседние узлы.Глубокая копия графа в python

+5

Как ваш график представлен прямо сейчас? Я имею в виду объекты Python. Списки, кортежи и т. Д. Мы не можем сказать вам, как копировать что-либо, пока вы не покажете нам, что такое исходный объект. – CoryKramer

+1

Существует множество библиотек python, которые занимаются такими графиками, как networkx, igraph и т. Д. Все они понимают структуру графа, атрибуты и т. Д. И поддерживают глубокое копирование. – EdChum

ответ

0
import networkx as nx 

G1 = nx.Graph() 
G1.add_edge(1, 2) 
G2 = G1.copy() # makes a deep copy of G1 into G2 
G2.add_edge(1, 3)  

print G1.nodes() # prints [1, 2] 
print G2.nodes() # prints [1, 2, 3] 

Вы можете найти больше здесь: https://networkx.github.io/

+1

Фактически это возвращает мелкую копию. Используйте G2 = G1.copy() для глубокой копии. – Aric

Смежные вопросы