Backends for Sage (di)graphs¶
This module implements GenericGraphBackend (the base class for
backends).
Any graph backend must redefine the following methods (for which
GenericGraphBackend raises a NotImplementedError)
Add an edge \((u,v)\) to |
|
Add a sequence of edges to |
|
Add a labelled vertex to |
|
Add labelled vertices to |
|
Return the total number of vertices incident to \(v\). |
|
Return the in-degree of \(v\) |
|
Return the out-degree of \(v\) |
|
Delete the edge \((u,v)\) with label \(l\). |
|
Delete a labelled vertex in |
|
Delete labelled vertices in |
|
Return the edge label of \((u,v)\). |
|
True if |
|
True if |
|
Iterate over the edges incident to a sequence of vertices. |
|
Iterate over the incoming edges incident to a sequence of vertices. |
|
Iterate over the outbound edges incident to a sequence of vertices. |
|
Iterate over the vertices adjacent to \(v\). |
|
Iterate over the in-neighbors of vertex \(v\). |
|
Iterate over the out-neighbors of vertex \(v\). |
|
Iterate over the vertices \(v\) with labels in verts. |
|
Get/set whether or not |
|
Get/set whether or not |
|
Get/set name of |
|
The number of edges in |
|
The number of vertices in |
|
Relabel the vertices of |
|
Label the edge \((u,v)\) by \(l\). |
For an overview of graph data structures in sage, see
overview.
Classes and methods¶
- class sage.graphs.base.graph_backends.GenericGraphBackend[source]¶
Bases:
SageObjectA generic wrapper for the backend of a graph.
Various graph classes use extensions of this class. Note, this graph has a number of placeholder functions, so the doctests are rather silly.
- add_edge(u, v, l, directed)[source]¶
Add an edge \((u,v)\) to
self, with label \(l\).If
directedisTrue, this is interpreted as an arc from \(u\) to \(v\).INPUT:
u,v– verticesl– edge labeldirected– boolean
- add_edges(edges, directed)[source]¶
Add a sequence of edges to
self.If
directedisTrue, these are interpreted as arcs.INPUT:
edges– list/iterator of edges to be addeddirected– boolean
- add_vertex(name)[source]¶
Add a labelled vertex to
self.INPUT:
name– vertex label
OUTPUT: if
name=None, the new vertex name is returned,Noneotherwise
- add_vertices(vertices)[source]¶
Add labelled vertices to
self.INPUT:
vertices– iterator of vertex labels; a new label is created, used and returned in the output list for allNonevalues invertices
OUTPUT:
Generated names of new vertices if there is at least one
Nonevalue present invertices.Noneotherwise.EXAMPLES:
sage: G = sage.graphs.base.graph_backends.GenericGraphBackend() sage: G.add_vertices([1,2,3]) Traceback (most recent call last): ... NotImplementedError
>>> from sage.all import * >>> G = sage.graphs.base.graph_backends.GenericGraphBackend() >>> G.add_vertices([Integer(1),Integer(2),Integer(3)]) Traceback (most recent call last): ... NotImplementedError
- degree(v, directed)[source]¶
Return the total number of vertices incident to \(v\).
INPUT:
v– a vertex labeldirected– boolean
OUTPUT: degree of \(v\)
- del_edge(u, v, l, directed)[source]¶
Delete the edge \((u,v)\) with label \(l\).
INPUT:
u,v– verticesl– edge labeldirected– boolean
- del_vertices(vertices)[source]¶
Delete labelled vertices in
self.INPUT:
vertices– iterator of vertex labels
- get_edge_label(u, v)[source]¶
Return the edge label of \((u, v)\).
INPUT:
u,v– vertex labels
OUTPUT:
label of \((u,v)\)
- has_edge(u, v, l)[source]¶
Check whether
selfhas an edge \((u,v)\) with label \(l\).INPUT:
u,v– vertex labelsl– label
OUTPUT: boolean
- has_vertex(v)[source]¶
Check whether
selfhas a vertex with label \(v\).INPUT:
v– vertex label
OUTPUT: boolean
- iterator_edges(vertices, labels)[source]¶
Iterate over the edges incident to a sequence of vertices.
Edges are assumed to be undirected.
This method returns an iterator over the edges \((u, v)\) such that either \(u\) or \(v\) is in
verticesand the edge \((u, v)\) is inself.INPUT:
vertices– list of vertex labelslabels– boolean
OUTPUT:
a generator which yields edges, with or without labels depending on the labels parameter.
- iterator_in_edges(vertices, labels)[source]¶
Iterate over the incoming edges incident to a sequence of vertices.
This method returns an iterator over the edges \((u, v)\) such that \(v\) is in
verticesand the edge \((u, v)\) is inself.INPUT:
vertices– list of vertex labelslabels– boolean
OUTPUT: a generator which yields edges, with or without labels depending on the labels parameter
- iterator_in_nbrs(v)[source]¶
Iterate over the in-neighbors of vertex \(v\).
This method returns an iterator over the vertices \(u\) such that the edge \((u, v)\) is in
self(that is, predecessors of \(v\)).INPUT:
v– vertex label
OUTPUT: a generator which yields vertex labels
- iterator_nbrs(v)[source]¶
Iterate over the vertices adjacent to \(v\).
This method returns an iterator over the vertices \(u\) such that either the edge \((u, v)\) or the edge \((v, u)\) is in
self(that is, neighbors of \(v\)).INPUT:
v– vertex label
OUTPUT: a generator which yields vertex labels
- iterator_out_edges(vertices, labels)[source]¶
Iterate over the outbound edges incident to a sequence of vertices.
This method returns an iterator over the edges \((v, u)\) such that \(v\) is in
verticesand the edge \((v, u)\) is inself.INPUT:
vertices– list of vertex labelslabels– boolean
OUTPUT:
a generator which yields edges, with or without labels depending on the labels parameter.
- iterator_out_nbrs(v)[source]¶
Iterate over the out-neighbors of \(v\).
This method returns an iterator over the vertices \(u\) such that the edge \((v, u)\) is in
self(that is, successors of \(v\)).INPUT:
v– vertex label
OUTPUT: a generator which yields vertex labels
- iterator_verts(verts)[source]¶
Iterate over the vertices \(v\) with labels in
verts.INPUT:
verts– vertex labels
OUTPUT: a generator which yields vertices
- loops(new=None)[source]¶
Get/set whether or not
selfallows loops.INPUT:
new– can be a boolean (in which case it sets the value) orNone, in which case the current value is returned. It is set toNoneby default.
- multiple_edges(new=None)[source]¶
Get/set whether or not
selfallows multiple edges.INPUT:
new– can be a boolean (in which case it sets the value) orNone, in which case the current value is returned. It is set toNoneby default.
- name(new=None)[source]¶
Get/set name of
self.INPUT:
new– can be a string (in which case it sets the value) orNone, in which case the current value is returned. It is set toNoneby default.
- sage.graphs.base.graph_backends.unpickle_graph_backend(directed, vertices, edges, kwds)[source]¶
Return a backend from its pickled data.
This methods is defined because Python’s pickling mechanism can only build objects from a pair
(f,args)by runningf(*args). In particular, there is apparently no way to define a**kwargs(i.e. define the value of keyword arguments off), which means that one must know the order of all arguments off(here,fisGraphorDiGraph).As a consequence, this means that the order cannot change in the future, which is something we cannot swear.
INPUT:
directed– booleanvertices– list of verticesedges– list of edgeskwds– any dictionary whose keywords will be forwarded to the graph constructor
This function builds a
GraphorDiGraphfrom its data, and returns the_backendattribute of this object.EXAMPLES:
sage: from sage.graphs.base.graph_backends import unpickle_graph_backend sage: b = unpickle_graph_backend(0, [0, 1, 2, 3], [(0, 3, 'label'), (0, 0, 1)], {'loops': True}) sage: b <sage.graphs.base.sparse_graph.SparseGraphBackend object at ...> sage: list(b.iterator_edges(range(4), True)) [(0, 0, 1), (0, 3, 'label')]
>>> from sage.all import * >>> from sage.graphs.base.graph_backends import unpickle_graph_backend >>> b = unpickle_graph_backend(Integer(0), [Integer(0), Integer(1), Integer(2), Integer(3)], [(Integer(0), Integer(3), 'label'), (Integer(0), Integer(0), Integer(1))], {'loops': True}) >>> b <sage.graphs.base.sparse_graph.SparseGraphBackend object at ...> >>> list(b.iterator_edges(range(Integer(4)), True)) [(0, 0, 1), (0, 3, 'label')]