我正在寻找一些Python库中的现有库函数或使用快速的numpy或pandas的自定义Python函数,它执行以下操作:将二分图中的边列表作为输入并返回子集边缘是长度> = 3的交替路径的一部分,不包括该交替路径的2个端边缘。
输入将是:
[[B,1],[C 2],[A 2],[C 3],[d,2],[d,3],[E,3],[E,4 ]
,输出为:
[[C,2],[d,3],[E,3]]
换句话说,如果和edge是长度<1的交替路径的一部分。 3,然后将其排除(例如[B-1])。而且,对于长度> = 3的交替路径,仅包括非端边缘。所以例如不包括[A,2]和[C,3],不包括[D,2]和[E,4]。
现在我正在为蓝色和红色节点集创建关联矩阵,然后查看1个条目。与rowum&gt;连续排列的1个条目1和列中的柱子&gt; 1是我正在寻找的连接。但是这种创建关联矩阵的方法看起来太慢了,所以我希望有更快的解决方案。
P.S。我知道我可以很容易地在Pandas的2列中制作稀疏关联矩阵,如下所示:
<div class="wrapper">
<img src="http://placehold.it/250x100">
</div>
但问题是我的蓝色和红色节点集的基数很大,当基数为>时,我会出现内存错误。 50000.所以现在我正在迭代地构建稀疏关联矩阵的每一行,然后如前所述查看1。但是如果有一种快速的方法来检查二分图中的交替路径而不建立一个很好的解决方案的入射矩阵。