我仔细阅读了文档,但我仍然不清楚如何使用 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 亿个链接),即使我在一个集群上工作,迭代也将永远持续下去。
我不确定我是否理解 Networkit 如何处理节点的名称。
\n\n假设我使用另一个 Python 模块(如 Networkx)从边缘列表中读取一个大图;然后我将其转换为网络图并执行一些操作,例如计算成对距离。执行此操作的一段简单代码可以是:
\n\nimport 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()\nRun Code Online (Sandbox Code Playgroud)\n\n十分简单。
\n\n现在,如果我想对这些距离做一些事情该怎么办?例如,如果我想根据(我不知道\xe2\x80\x99)路径上的权重或任何其他需要检索原始节点 ID 的度量来绘制它们,该怎么办?
\n\n这getDistances()函数返回一个列表列表,每个节点都有一个列表,其中包含到每个其他节点的距离,但我不知道 Networkit 如何将节点 \xe2\x80\x99 名称映射到它用作节点标识符的整数序列,因此计算距离并将其存储在输出中所遵循的顺序。