You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[mvngu@sage mvngu]$ sage
----------------------------------------------------------------------
| Sage Version 4.3.3, Release Date: 2010-02-21 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------
sage: G = Graph({1:[1]}); G
Looped graph on 1 vertex
sage: sum(G.degree())
1
sage: G.size()
0
sage: G = Graph({1:[1]}, loops=True); G
Looped graph on 1 vertex
sage: sum(G.degree())
1
sage: G.size()
0
sage: G = Graph({1:[1]}, loops=True, multiedges=True); G
Looped multi-graph on 1 vertex
sage: sum(G.degree())
1
sage: G.size()
0
The size of G is 1 because there is one edge, i.e. the single
self-loop. As shown by the above session, Sage reports the size of G
as 0. I believe this is a bug.
See also the discussion at this other sage-devel thread. This also happens in the C graph backends for sparse and dense graphs:
[mvngu@sage ~]$ sage
----------------------------------------------------------------------
| Sage Version 4.3.5, Release Date: 2010-03-28 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------
sage: from sage.graphs.base.sparse_graph import SparseGraphBackend
sage: S = SparseGraphBackend(7)
sage: S.loops(True)
sage: S.add_edge(1, 1, None, directed=False)
sage: S.has_edge(1, 1, None)
True
sage: list(S.iterator_edges(range(7), None))
[(1, 1)]
sage: S.degree(1, directed=False)
1
sage:
sage: reset()
sage:
sage:
sage: from sage.graphs.base.dense_graph import DenseGraphBackend
sage: D = DenseGraphBackend(78)
sage: D = DenseGraphBackend(7)
sage: D.loops(True)
sage: D.add_edge(1, 1, None, directed=False)
sage: D.has_edge(1, 1, None)
True
sage: list(D.iterator_edges(range(7), None))
[(1, 1)]
sage: D.degree(1, directed=False)
1
Notice that degree() reports the degree of a self-loop as one, when in fact it should be 2. That's because both SparseGraphBackend and DenseGraphBackend inherit the same degree() function from CGraphBackend. I think the implementation of degree() in CGraphBackend needs to take into account the existence of self-loops.
Note: When this ticket is closed, make sure to also close ticket #9809.
From sage-devel:
See also the discussion at this other sage-devel thread. This also happens in the C graph backends for sparse and dense graphs:
Notice that
degree()
reports the degree of a self-loop as one, when in fact it should be 2. That's because bothSparseGraphBackend
andDenseGraphBackend
inherit the samedegree()
function fromCGraphBackend
. I think the implementation ofdegree()
inCGraphBackend
needs to take into account the existence of self-loops.CC: @jasongrout @nathanncohen
Component: graph theory
Author: Minh Van Nguyen
Reviewer: Robert Miller, Minh Van Nguyen
Merged: sage-4.6.2.alpha0
Issue created by migration from https://trac.sagemath.org/ticket/8395
The text was updated successfully, but these errors were encountered: