gpt4 book ai didi

python - 使用 igraph 投影二分网络有困难

转载 作者:太空宇宙 更新时间:2023-11-03 18:00:24 25 4
gpt4 key购买 nike

我在投影玩具二分网络时遇到困难。

from igraph import *
def create_bipartite(n1, n2, directed=False):
g = Graph(n1+n2, directed=True)
g.vs["type"] = 0
g.vs[n2:]["type"] = 1
return g
gb=create_bipartite(4,3)
gb.add_edges([(0,1),(0,2),(3,4),(0,4),(0,5),(3,6)])



> In [358]: gb.is_bipartite()
Out[358]: True

In [359]: gb.bipartite_projection()
---------------------------------------------------------------------------
InternalError Traceback (most recent call last)
<ipython-input-359-a7b9927dc7bb> in <module>()
----> 1 gb.bipartite_projection()

/usr/lib/python2.7/dist-packages/igraph/__init__.pyc in bipartite_projection(self, types, multiplicity, *args, **kwds)
2530 superclass_meth = super(Graph, self).bipartite_projection
2531 if multiplicity:
-> 2532 g1, g2, w1, w2 = superclass_meth(types, True, *args, **kwds)
2533 g1.es["weight"] = w1
2534 g2.es["weight"] = w2

InternalError: Error at structure_generators.c:84: Invalid (negative) vertex id, Invalid vertex id

In [360]:

我得到的错误是尝试投影到任一节点:这意味着什么?负顶点?有什么想法可以解决这个问题吗?

最佳答案

较新版本的 igraph 提供了更丰富的错误消息(实际上,我不确定此更改是否已经发布 - 我生活在最前沿):

InternalError: Error at ../../src/bipartite.c:198: Non-bipartite edge found in
bipartite projection, Invalid value

(此时您可能会感到惊讶为什么 g.is_bipartite() 返回 True - 原因是 g.is_bipartite()仅检查图是否具有名为 type 的顶点属性)。

问题是你的类型向量看起来像这样:

>>> gb.vs["type"]
[0, 0, 0, 1, 1, 1, 1]

由于顶点 3 和 4 之间有一条边(这两个顶点都是类型 1),因此该图不是二分图。我强烈怀疑实际的错误是在 create_bipartite 中,您想在其中编写以下内容:

g.vs[n1:]["type"] = 1

而不是这个:

g.vs[n2:]["type"] = 1

关于python - 使用 igraph 投影二分网络有困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27760729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com