理解python中NetworkX.simple_cycles()的时间和空间复杂性与系统配置

时间:2018-06-01 18:07:24

标签: python-3.x algorithm time-complexity networkx space-complexity

我正在尝试使用python中的networkx.simple_cycles()函数查找数据中的所有循环。正如在networkx文档中所写“这是Johnson的算法的非递归,迭代器/生成器版本”。 Johnson的算法具有以下时间复杂度:((节点+边缘)*(周期+ 1))和空间复杂度:(节点+边缘)

我已经根据交易数据创建了一个有向图,边缘为从节点--->到节点。我正在删除具有度数或度数为0的节点,因为它们不会对周期(基本电路)做出贡献。 删除in-degree和out-degree 0节点后,我的图表详细信息如下:

对于109万条记录:

Number of nodes remaining-39278;
Number of edges-26324;
Number of cycles- Not able to get any output as the code keeps on running.

有108万条记录:

Number of nodes remaining-38664;
Number of edges-25710;
Number of cycles- 5612438.

对于105万条记录:

Number of nodes remaining-36737;
Number of edges-23784;
Number of cycles- 69671.

对于101万条记录:

Number of nodes remaining-34393;
Number of edges-21566;
Number of cycles- 3079.

100万条记录:

Number of nodes remaining-33841;
Number of edges-21125;
Number of cycles- 3072.

我想了解时间和空间复杂性与系统配置的关系。鉴于有关算法的所有这些细节,我如何找出适合特定大小数据的系统配置。为什么我无法运行这个算法超过108万个数据?

我的系统配置: 采用AMD Radeon R7显卡的AMD PRO A12-8800B(2.1 GHz,高达3.4 GHz,2MB高速缓存,4个内核)。 8GB RAM。

0 个答案:

没有答案