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: - SageObject- A 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 - directedis- True, this is interpreted as an arc from \(u\) to \(v\).- INPUT: - u,- v– vertices
- l– edge label
- directed– boolean
 
 - add_edges(edges, directed)[source]¶
- Add a sequence of edges to - self.- If - directedis- True, these are interpreted as arcs.- INPUT: - edges– list/iterator of edges to be added
- directed– 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 all- Nonevalues in- vertices
 - OUTPUT: - Generated names of new vertices if there is at least one - Nonevalue present in- vertices.- 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 label
- directed– boolean
 - OUTPUT: degree of \(v\) 
 - del_edge(u, v, l, directed)[source]¶
- Delete the edge \((u,v)\) with label \(l\). - INPUT: - u,- v– vertices
- l– edge label
- directed– 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 labels
- l– 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 in- self.- INPUT: - vertices– list of vertex labels
- labels– 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 in- self.- INPUT: - vertices– list of vertex labels
- labels– 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 in- self.- INPUT: - vertices– list of vertex labels
- labels– 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) or- None, in which case the current value is returned. It is set to- Noneby 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) or- None, in which case the current value is returned. It is set to- Noneby default.
 
 - name(new=None)[source]¶
- Get/set name of - self.- INPUT: - new– can be a string (in which case it sets the value) or- None, in which case the current value is returned. It is set to- Noneby 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 running- f(*args). In particular, there is apparently no way to define a- **kwargs(i.e. define the value of keyword arguments of- f), which means that one must know the order of all arguments of- f(here,- fis- Graphor- DiGraph).- As a consequence, this means that the order cannot change in the future, which is something we cannot swear. - INPUT: - directed– boolean
- vertices– list of vertices
- edges– list of edges
- kwds– any dictionary whose keywords will be forwarded to the graph constructor
 - This function builds a - Graphor- DiGraphfrom 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')]