как решить проблему с узлом не в графе - PullRequest
0 голосов
/ 27 марта 2019

Я создаю программу, которая получает соседей узлов графа из списка краев, но проблема в том, что он показывает мне эту ошибку

A=nx.all_neighbors(G,1)

File"C:\Users\Toshiba\Anaconda2\lib\sitepackages\networkx\classes\function.py", line 838, in all_neighbors  values = graph.neighbors(node)

Файл "C: \ Users \ Toshiba \ Anaconda2 \ lib \ site-packages \ networkx \ classes \ graph.py", строка 1130, в соседях

повышение NetworkXError («Узел% s отсутствует на графике.»% (N,))

NetworkXError: Узел 1 отсутствует на графике.

import networkx as nx
import os


A =os.path.realpath("last_exuction.txt")
fh=open(A, 'rb')
G=nx.read_edgelist(fh)
fh.close()

A=nx.all_neighbors(G,1)

и содержимое файла last_exuction.txt

2 1
3 1
3 2
4 1
4 2
4 3
5 1
6 1
7 1
7 5
7 6
8 1
8 2
8 3
8 4
9 1
9 3
10 3
11 1
11 5
11 6
12 1
13 1
13 4
14 1
14 2
14 3
14 4
17 6
17 7
18 1
18 2
20 1
20 2
22 1
22 2
26 24
26 25
28 3
28 24
28 25
29 3
30 24
30 27
31 2
31 9
32 1
32 25
32 26
32 29
33 3
33 9
33 15
33 16
33 19
33 21
33 23
33 24
33 30
33 31
33 32
34 9
34 10
34 14
34 15
34 16
34 19
34 20
34 21
34 23
34 24
34 27
34 28
34 29
34 30
34 31
34 32
34 33

1 Ответ

0 голосов
/ 28 марта 2019

Узел 1 отсутствует на вашем графике.Я подозреваю, что Node '1' есть.То есть строка '1', а не целое число 1 находится в вашем графике.

Это потому, что когда вы читаете файл, он интерпретирует все как строки.Документация показывает необязательные аргументы: read_edgelist(path, comments='#', delimiter=None, create_using=None, nodetype=None, data=True, edgetype=None, encoding='utf-8').Обратите внимание на необязательный аргумент nodetype.Документация гласит:

тип узла (int, float, str, тип Python, необязательно) - преобразование данных узла из строк в указанный тип

Так что ваш вызов как

G=nx.read_edgelist(fh, nodetype = int)
...