создать масштабную свободную сеть с степенным распределением степеней по python - PullRequest
0 голосов
/ 10 апреля 2020

Я пишу этот код для генерации безмасштабной сети с степенным распределением степеней закона.

import networkx as nx
import random
N = 1000
exponent = 2.2
test = [int(random.paretovariate(exponent-1)) for i in range(N)]
graph = nx.configuration_model(test)
print("number of self-loops : ",  graph.number_of_selfloops())

но я сталкиваюсь с этой ошибкой:

AttributeError: у объекта 'MultiGraph' нет атрибут 'number_of_selfloops'

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

1 Ответ

1 голос
/ 10 апреля 2020

Как указано в документации configuration_model, эта функция возвращает MultiGraph, для которого нет метода number_of_selfloops, но вы все равно можете использовать метод nx.number_of_selfloops, который также работает для MultiGraph (NetworkX изменил способ вызова этих методов) или просто создайте обычный график с non_multi_graph = nx.Graph(graph).

...