我不知道Networkit是如何处理节点名称的。
假设我使用另一个Python模块(如Networkx)从edgelist读取一个大图;然后将它转换为一个网络图,然后执行一些操作,比如计算成对距离。这样做的一个简单代码可以是:
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()很简单-很简单。
如果我想用这些距离做点什么呢?例如,如果我想根据路径上的权重,或者任何需要检索原始节点if的其他度量来绘制它们,我不知道呢?
getDistances()函数返回一个列表列表,每个节点与每个其他节点的距离为一个,但我不知道Networkit如何将节点的名称映射到它用作节点标识符的it序列,从而得到计算距离并将其存储在输出中的顺序。
发布于 2020-02-19 12:16:11
在从networkx创建新图时,NetworKit创建一个字典,将nxG中的每个节点id映射到G中的0到n-1的唯一整数(其中n是节点数)和本指令。不幸的是,nx2nk没有返回这个映射,所以您应该自己创建它。
假设您希望从节点1到节点2的距离,其中1和2是nxG中的节点in。
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']]https://stackoverflow.com/questions/60285134
复制相似问题