Получение исходных имен узлов в Networkit

Я не уверен, что понимаю, как Networkit обрабатывает имена узлов.

Допустим, я прочитал большой график из списка редакторов, используя другой модуль Python, например Networkx; затем я конвертирую его в сетевой граф и выполняю некоторые операции, например вычисление попарных расстояний. Вот простой код для этого:

import networkx as nx
import networkit as nk

nxG=nx.read_edgelist('test.edgelist',data=True)

G = nk.nxadapter.nx2nk(nxG, weightAttr='weight')

apsp = nk.distance.APSP(G)
apsp.run()
dist=apsp.getDistances()

очень просто.

А что, если я захочу что-нибудь сделать с этими расстояниями? Например, что, если я хочу нанести их на график против, я не знаю, весов на путях или любой другой меры, которая требует извлечения исходных идентификаторов узлов?

В getDistances() функция возвращает список списков, по одному для каждого узла с указанием расстояния до каждого другого узла, но я не знаю, как Networkit сопоставляет имена узлов с последовательностью целых чисел, которые он использует в качестве идентификаторов узлов, и, следовательно, в порядке следования для вычисления расстояний и сохранения их в выходных данных.

1 ответ

Решение

При создании нового графа из networkx NetworKit создает словарь, который отображает идентификатор каждого узла в nxG до уникального целого числа от 0 до n - 1 в G(где n - количество узлов) с помощью этой инструкции. К сожалению, это сопоставление не возвращаетсяnx2nk, поэтому вам следует создать его самостоятельно.

Предположим, вы хотите получить расстояние от узла 1 узел 2, где 1 а также 2 идентификаторы узлов в nxG:

import networkx as nx
import networkit as nk

nxG=nx.read_edgelist('test.edgelist',data=True)

G = nk.nxadapter.nx2nk(nxG, weightAttr='weight')

# Get mapping from node ids in nxG to node ids in G
idmap = dict((id, u) for (id, u) in zip(nxG.nodes(), range(nxG.number_of_nodes())))

apsp = nk.distance.APSP(G)
apsp.run()
dist=apsp.getDistances()

# Get distance from node `1` to node `2`
dist_from_1_to_2 = dist[idmap['1']][idmap['2']]
Другие вопросы по тегам