Я использую networkx
для генерации случайных графиков.
Мой процесс выглядит следующим образом:
из исходного графа G, скажем:
G = nx.watts_strogatz_graph(100, 2, 0)
Я хотел бы сгенерировать 40 других графов, чтобы в сгенерированных графах было меньше узлов, чем в исходном графе.
На каждой итерации я устанавливаю количество удаляемых узлов и индекс узлов.
Что я пробовал?
G = nx.watts_strogatz_graph (100, 2, 0) # - исходный граф, из которого я генерирую другие графы
number_examples = 40
for i in np.arange(examples):
F = randint(1, 5) # to get the number of nodes to remove for the example i
nodes_remove = sample(range(0, len(G.nodes())), F)# return the indexes of nodes to be removed
L=G # L will be the new graph, G is the initial graph
L.remove_nodes_from(nodes_remove)
number_nodes.append(len(L.nodes()))
print('number of nodes in the new graph L ', len(L.nodes())
print('number of nodes in the initial graph G ', len(G.nodes())
Неправильный вывод?
Да, вывод L правильный, так как я удаляю узлы. Однако G должен остаться прежним len(G.nodes())=100
, так как я установил L=G
, я внесу изменения только в L
Однако каждый раз, когда l удаляет узлы в L, G делает то же самое.
Ожидаемый результат?
Для исходного графа G = 100 узлов
l генерирует, скажем, пять графиков L1, L2, L3, L4, L5 из исходного графика G :
L1= 97 nodes
L2= 98 nodes
L3= 95 nodes
L4= 99 nodes
L5=97 nodes
это ожидаемые результаты
Однако я получаю:
L1= 97 nodes
L2= 95 nodes
L3= 90 nodes
L4= 89 nodes
L5=86 nodes
, что означает, что на итерации мы удаляем узлы из нового сгенерированного графа.
Спасибо за вашу помощь