`digraph1`=`digraph2`returns

`true`

if`digraph1`and`digraph2`have the same vertices, and`DigraphEdges(`

, up to some re-ordering of the edge lists.`digraph1`) = DigraphEdges(`digraph2`)Note that this operator does not compare the vertex labels of

`digraph1`and`digraph2`.`digraph1`<`digraph2`This operator returns

`true`

if one of the following holds:The number \(n_1\) of vertices in

`digraph1`is less than the number \(n_2\) of vertices in`digraph2`;\(n_1 = n_2\), and the number \(m_1\) of edges in

`digraph1`is less than the number \(m_2\) of edges in`digraph2`;\(n_1 = n_2\), \(m_1 = m_2\), and

`DigraphEdges(`

is less than`digraph1`)`DigraphEdges(`

after having both of these sets have been sorted with respect to the lexicographical order.`digraph2`)

`‣ IsSubdigraph` ( super, sub ) | ( operation ) |

Returns: `true`

or `false`

.

If `super` and `sub` are digraphs, then this operation returns `true`

if `sub` is a subdigraph of `super`, and `false`

if it is not.

A digraph `sub` is a *subdigraph* of a digraph `super` if `sub` and `super` share the same number of vertices, and the collection of edges of `super` (including repeats) contains the collection of edges of `sub` (including repeats).

In other words, `sub` is a subdigraph of `super` if and only if `DigraphNrVertices(`

, and for each pair of vertices `sub`) = DigraphNrVertices(`super`)`i`

and `j`

, there are at least as many edges of the form `[i, j]`

in `super` as there are in `sub`.

gap> g := Digraph([[2, 3], [1], [2, 3]]); <digraph with 3 vertices, 5 edges> gap> h := Digraph([[2, 3], [], [2]]); <digraph with 3 vertices, 3 edges> gap> IsSubdigraph(g, h); true gap> IsSubdigraph(h, g); false gap> IsSubdigraph(CompleteDigraph(4), CycleDigraph(4)); true gap> IsSubdigraph(CycleDigraph(4), ChainDigraph(4)); true gap> g := Digraph([[2, 2], [1]]); <multidigraph with 2 vertices, 3 edges> gap> h := Digraph([[2], [1]]); <digraph with 2 vertices, 2 edges> gap> IsSubdigraph(g, h); true gap> IsSubdigraph(h, g); false

`‣ IsUndirectedSpanningTree` ( super, sub ) | ( operation ) |

`‣ IsUndirectedSpanningForest` ( super, sub ) | ( operation ) |

Returns: `true`

or `false`

.

The operation `IsUndirectedSpanningTree`

returns `true`

if the digraph `sub` is an undirected spanning tree of the digraph `super`, and the operation `IsUndirectedSpanningForest`

returns `true`

if the digraph `sub` is an undirected spanning forest of the digraph `super`.

An *undirected spanning tree* of a digraph `super` is a subdigraph of `super` that is an undirected tree (see `IsSubdigraph`

(4.1-1) and `IsUndirectedTree`

(6.3-7)). Note that a digraph whose `MaximalSymmetricSubdigraph`

(3.3-4) is not connected has no undirected spanning trees (see `IsConnectedDigraph`

(6.3-2)).

An *undirected spanning forest* of a digraph `super` is a subdigraph of `super` that is an undirected forest (see `IsSubdigraph`

(4.1-1) and `IsUndirectedForest`

(6.3-7)), and is not contained in any larger such subdigraph of `super`. Equivalently, an undirected spanning forest is a subdigraph of `super` whose connected components coincide with those of the `MaximalSymmetricSubdigraph`

(3.3-4) of `super` (see `DigraphConnectedComponents`

(5.3-8)).

Note that an undirected spanning tree is an undirected spanning forest that is connected.

gap> gr := CompleteDigraph(4); <digraph with 4 vertices, 12 edges> gap> tree := Digraph([[3], [4], [1, 4], [2, 3]]); <digraph with 4 vertices, 6 edges> gap> IsSubdigraph(gr, tree) and IsUndirectedTree(tree); true gap> IsUndirectedSpanningTree(gr, tree); true gap> forest := EmptyDigraph(4); <digraph with 4 vertices, 0 edges> gap> IsSubdigraph(gr, forest) and IsUndirectedForest(forest); true gap> IsUndirectedSpanningForest(gr, forest); false gap> IsSubdigraph(tree, forest); true gap> gr := DigraphDisjointUnion(CycleDigraph(2), CycleDigraph(2)); <digraph with 4 vertices, 4 edges> gap> IsUndirectedTree(gr); false gap> IsUndirectedForest(gr) and IsUndirectedSpanningForest(gr, gr); true

generated by GAPDoc2HTML