标签: networkit

在 networkit (python) 中使用 forEdges 迭代器

我仔细阅读了文档,但我仍然不清楚如何使用 G.forEdges(),它被描述为“实验边缘迭代器接口”。

假设我想降低图形的密度。我有一个排序的权重列表,我想根据它们的权重删除边,直到图分成两个连接的组件。然后我将选择保持图形连接的最少链接数。我会做这样的事情:

cc = components.ConnectedComponents(G).run()
while cc.numberOfComponents()==1:
    for weight in weightlist:
        for (u,v) in G.edges():
            if G.weight(u,v)==weight:
                G=G.removeEdge(u,v)
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我从文档中知道有这个边缘迭代器,它可能以更有效的方式进行迭代。但是从文档中我真的无法理解如何正确使用 this forEdges,并且我无法在互联网上找到一个示例。有任何想法吗?

或者也许是做我想做的事情的另一种想法:因为它是一个巨大的图(1.25 亿个链接),即使我在一个集群上工作,迭代也将永远持续下去。

python graph network-analysis networkit

3
推荐指数
1
解决办法
327
查看次数

在 Networkit 中检索原始节点名称

我不确定我是否理解 Networkit 如何处理节点的名称。

\n\n

假设我使用另一个 Python 模块(如 Networkx)从边缘列表中读取一个大图;然后我将其转换为网络图并执行一些操作,例如计算成对距离。执行此操作的一段简单代码可以是:

\n\n
import networkx as nx\nimport networkit as nk\n\nnxG=nx.read_edgelist('test.edgelist',data=True)\n\nG = nk.nxadapter.nx2nk(nxG, weightAttr='weight')\n\napsp = nk.distance.APSP(G)\napsp.run()\ndist=apsp.getDistances()\n
Run Code Online (Sandbox Code Playgroud)\n\n

十分简单。

\n\n

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

\n\n

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

\n

python networkx networkit

2
推荐指数
1
解决办法
948
查看次数

标签 统计

networkit ×2

python ×2

graph ×1

network-analysis ×1

networkx ×1