gpt4 book ai didi

python - 在 Networkit 中检索原始节点名称

转载 作者:行者123 更新时间:2023-12-02 00:07:00 24 4
gpt4 key购买 nike

我不确定我是否理解 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()

简单易行。

现在,如果我想对这些距离做些什么怎么办?例如,如果我想根据(我不知道)路径上的权重或任何其他需要检索原始节点 ID 的度量来绘制它们怎么办?

getDistances() 函数返回一个列表列表,每个节点都有一个到其他节点的距离,但我不知道 Networkit 如何将节点的名称映射到它用作节点标识符的整数,因此是计算距离并将它们存储在输出中所遵循的顺序。

最佳答案

当从 networkx 创建新图时,NetworKit 创建一个字典,将 nxG 中的每个节点 ID 映射到 G 中从 0 到 n - 1 的唯一整数(其中n 是节点数)与 this instruction .不幸的是,nx2nk 不返回此映射,因此您应该自己创建它。

假设您想要获取从节点 1 到节点 2 的距离,其中 12nxG 中的节点 ID:

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']]

关于python - 在 Networkit 中检索原始节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60285134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com