NetworkX cycle_basis返回非基础周期?

时间:2019-04-25 08:49:32

标签: python networkx graph-theory

对于一个discrete element modelling项目,我最近开始研究接触的粒子集合的图形表示。基本思想是:我有一个由许多粒子组成的粒状聚集体。每个粒子都通过接触点与其邻居互动,这些接触点可以表示为连接粒子(节点)的边。然后,目的是提取cycle basis,即,从中可以构造较大循环的最小可能循环的集合。为此,我使用Python networkx包构造了一个图,然后使用networkx.cycle_basis函数提取了循环基础。一个简单的示例伪代码来说明我的过程:

import networkx as nx

nodes = [particle IDs]
edges = [pairs of particle IDs]
G = nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)
cycles = nx.cycle_basis(G)

cycles表示每个基本周期中参与的粒子ID的列表。但是,当我绘制图形(使用模拟中的粒子坐标)时,我发现cycles包含许多实际上是较小循环的组合的循环,因此不是基本循环(如果I正确理解)。一个示例如下所示:

enter image description here

在这里,连接粒子的黑线表示图形中的边缘,红色循环是cycles中包含的一个循环(这显然不是基础循环)。此外,集合中偶尔还会有重复项。

我的问题:networkx.cycle_basis为什么显示此行为?这是预期的吗?我对周期基础的理解是否错误,或者输出是否错误?还有什么方法可以消除这些非基本周期?

0 个答案:

没有答案