在 Networkit 中检索原始节点名称
Retrieving original node names in 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()
简单易行。
现在,如果我想对这些距离做些什么怎么办?例如,如果我想根据(我不知道)路径上的权重或任何其他需要检索原始节点 ID 的度量来绘制它们怎么办?
getDistances()
函数 returns 一个列表列表,每个节点都有一个到其他节点的距离,但我不知道 Networkit 如何将节点的名称映射到序列它用作节点标识符的整数,因此是计算距离并将它们存储在输出中所遵循的顺序。
从 networkx 创建新图时,NetworKit 创建一个字典,将 nxG
中的每个节点 ID 映射到 G
中从 0 到 n - 1 的唯一整数(其中 n 是数字节点数)和 this instruction。
不幸的是,nx2nk
不返回此映射,因此您应该自己创建它。
假设您想要获取从节点 1
到节点 2
的距离,其中 1
和 2
是 nxG
中的节点 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']]
我不确定我是否理解 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()
函数 returns 一个列表列表,每个节点都有一个到其他节点的距离,但我不知道 Networkit 如何将节点的名称映射到序列它用作节点标识符的整数,因此是计算距离并将它们存储在输出中所遵循的顺序。
从 networkx 创建新图时,NetworKit 创建一个字典,将 nxG
中的每个节点 ID 映射到 G
中从 0 到 n - 1 的唯一整数(其中 n 是数字节点数)和 this instruction。
不幸的是,nx2nk
不返回此映射,因此您应该自己创建它。
假设您想要获取从节点 1
到节点 2
的距离,其中 1
和 2
是 nxG
中的节点 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']]