我在Sage工作。 Python似乎为循环可变/不可变图定义了不一致的度。这很难搞砸我的计算。这是怎么回事?
q=graphs.CompleteGraph(2)
q.allow_loops(True)
q.allow_multiple_edges(True)
q.add_edge([1,1])
a=q.copy(immutable=True)
b=q.copy(immutable=False)
sage: a==b
True
sage: a.degree()
[1, 2]
sage: b.degree()
[1, 3]
答案 0 :(得分:2)
这是一个令人讨厌的错误。这就是原因。
sage: a._backend
<class 'sage.graphs.base.static_sparse_backend.StaticSparseBackend'>
sage: b._backend
<class 'sage.graphs.base.sparse_graph.SparseGraphBackend'>
在通常的后端,对于无向图,有类似的代码。
if self._loops and self.has_edge(v, v, None):
if self._multiple_edges:
d += len(self.get_edge_label(v, v))
else:
d += 1
在静态中,我们得到
else:
return cg.out_degree(v)