2015-11-10 2 views
1

У меня есть текстовый документ, который является файлом списка ребер. Я знаю, как читать файл (используя Canopy Enthought), но я не знаю, как получить информацию о графике, который я хочу.Тестирование, если график перенаправлен или не перенаправлен График из файла Edgelist

Главный вопрос: Есть ли способ определить, направлен ли этот граф (созданный из файла списка краев) или ненаправлен с помощью команд networkx? Или просто, если он взвешен или взвешен?

ответ

3

Я считаю, что перед использованием файла списка ребер необходимо указать тип графика. Поскольку файл списка краев просто состоит из кортежей, содержащих узлы для подключения, не сообщая, как они связаны. Таким образом, например, если вы создаете граф G = nx.Graph(), то, если пары узлов в файле повторяются, между ними все равно будет одно ребро, а порядок узлов не имеет значения; ((node1, node2) эквивалентен (node2, node1)). Хотя, если вы создали график как G = nx.DiGraph(), порядок узлов имеет значение. Кроме того, если в случае повторения указывается G = nx.MultiGraph(), более одного края будет существовать. G = nx.MultiDiGraph() будет иметь другой результат при чтении файла списка ребер. Итак, проверьте типы графов documentation, чтобы узнать, какой тип вам нужен.

Чтобы проверить, если граф направлен вы можете использовать nx.is_directed(G), вы можете найти в документации here.

Проверить, действительно ли граф взвешен Не существует определенного типа, если граф имеет взвешенные края или нет. Но работа может состоять в том, чтобы проверить, содержат ли края атрибут вес, как упомянуто here. Это может быть сделано

'weight' in G[1][2] # Returns true if an attribute called weight exists in the edge connecting nodes 1 and 2.