如何在NetworKit的边列表中表示无关联边的节点?
在NetworKit中表示边列表里的孤立节点
默认情况下,networkit.graphio.EdgeListReader只会根据边列表中出现的顶点ID创建节点,未出现在任何边中的孤立节点不会被自动纳入图中,但这类节点对代数连通性等指标计算至关重要,你可以通过以下两种方式解决:
方法1:显式指定总节点数
初始化EdgeListReader时,通过n参数指定图的总节点数,所有ID在0到n-1范围内的节点都会被创建,无论是否有关联边。
示例代码:
import networkit as nk # 指定总节点数为6(ID覆盖0-5),包含孤立节点4 reader = nk.graphio.EdgeListReader(separator=" ", firstNode=0, n=6, directed=True, weighted=True) graph = reader.read("your_edge_list.txt") # 验证节点总数 print(graph.numberOfNodes()) # 输出6,已包含孤立节点4
方法2:添加孤立节点的占位行
若不想提前确定总节点数,可在边列表中为孤立节点添加一行占位记录:将源、目标节点ID设为该孤立节点的ID,权重设为0(避免干扰带权指标计算)。
修改后的边列表示例:
0 1 10 1 0 2 3 2 3 5 0 1 4 4 0 # 孤立节点4的占位行
读取代码:
import networkit as nk reader = nk.graphio.EdgeListReader(separator=" ", firstNode=0, directed=True, weighted=True) graph = reader.read("your_edge_list.txt") # 验证孤立节点是否存在 print(graph.hasNode(4)) # 输出True
注意:方法2会为孤立节点添加一条权重为0的自环,若你的计算逻辑对自环敏感,优先选择方法1。
内容的提问来源于stack exchange,提问作者wrkyle
相关产品推荐
相关产品推荐

