The Vertex–Set and Edge–Set of a Graph
Introduction
Let \(G\) be a graph on \(n\) vertices and \(m\) edges whose vertex-set is \(V = \{v_1, \ldots, v_m\}\) and edge-set is \(E = \{e_1, \ldots, e_m\}\). A graph created by Magma consists of three objects: the vertex-set \(V\), the edge-set \(E\), and the graph \(G\) itself. The vertex-set and edge-set of a graph are enriched sets and consequently constitute types. The vertex-set and edge-set are returned as the second and third arguments, respectively, by all functions which create graphs. Alternatively, a pair of functions are provided to extract the vertex-set and edge-set of a graph \(G\). The main purpose of having vertex-sets and edge-sets as types is to provide a convenient mechanism for referring to vertices and edges of a graph. Here, the functions applicable to vertex-sets and edge-sets are described.
Creating Edges and Vertices
- Edges(G): Grph -> {@ GrphEdge @}
A set \(E\) whose elements are the edges of the graph \(G\). Note that this creates an indexed set and not the edge-set of \(G\), in contrast to the function
EdgeSet.
- Vertices(G): Grph -> { GrphVert}
A set \(V\) whose elements are the vertices of the graph \(G\). In contrast to the function
VertexSet, this function returns the collection of vertices of \(G\) in the form of an indexed set.
- V ! v: GrphVertSet, . -> GrphVert
Given the vertex-set \(V\) of the graph \(G\), coerce \(v\) to a vertex of \(G\). If \(v\) lies in the support of \(G\), return the corresponding vertex. If \(v\) is an integer \(i\) with \(1 \leq i \leq \#V\), return the vertex with index \(i\) (equivalent to
V . i).
- V . i: GrphVertSet, RngIntElt -> GrphVert
Given a vertex-set \(V\) and an integer \(i\) such that \(1 \leq i \leq \#V\), create the vertex \(v_i\) of \(V\).
- Index(v): GrphVert -> RngIntElt
Given a vertex \(v\) of some graph \(G\), return the index of \(v\) in the (indexed) vertex-set of \(G\).
- E ! { u, v}: GrphEdgeSet, { . } -> GrphEdge
Given the edge-set \(E\) of an undirected graph \(G\), coerce the unordered pair \(\{u, v\}\) to the edge of \(G\) joining the vertices \(V!u\) and \(V!v\), where \(V\) is the vertex-set of \(G\). It is an error to use this form on a directed graph; use
E ! [u, v]for directed graphs.
- E ! [u, v]: GrphEdgeSet, [ . ] -> GrphEdge
Given the edge-set \(E\) of a directed graph \(G\) (not a network), coerce the ordered pair \([u, v]\) to the directed edge of \(G\) from vertex \(V!u\) to vertex \(V!v\), where \(V\) is the vertex-set of \(G\). It is an error to use this form on an undirected graph; use
E ! {u, v}for undirected graphs.
- E . i: GrphEdgeSet, RngIntElt -> GrphEdge
Given an edge-set \(E\) and an integer \(i\) such that \(1 \leq i \leq \#E\), create the \(i\)-th edge of \(E\).
- Example: Vertices and Edges of an Odd Graph (ex-e2c41e)
Run in calculator (opens in a new tab)
The construction of vertices and edges is illustrated using the Odd Graph, \(O_{3}\). and then form its standard graph.
> S := Subsets({1..5}, 2); > O3, V, E := Graph< S | { {u,v} : u,v in S | IsDisjoint(u, v) } >; > VertexSet(O3); Vertex-set of O3 > Vertices(O3); {@ { 1, 5 }, { 2, 5 }, { 1, 3 }, { 1, 4 }, { 2, 4 }, { 3, 5 }, { 2, 3 }, { 1, 2 }, { 3, 4 }, { 4, 5 } @} > EdgeSet(O3); Edge-set of O3 > Edges(O3); {@ {{ 1, 5 }, { 2, 4 }}, {{ 1, 5 }, { 2, 3 }}, {{ 1, 5 }, { 3, 4 }}, {{ 2, 5 }, { 1, 3 }}, {{ 2, 5 }, { 1, 4 }}, {{ 2, 5 }, { 3, 4 }}, {{ 1, 3 }, { 2, 4 }}, {{ 1, 3 }, { 4, 5 }}, {{ 1, 4 }, { 3, 5 }}, {{ 1, 4 }, { 2, 3 }}, {{ 2, 4 }, { 3, 5 }}, {{ 3, 5 }, { 1, 2 }}, {{ 2, 3 }, { 4, 5 }}, {{ 1, 2 }, { 3, 4 }}, {{ 1, 2 }, { 4, 5 }} @} > u := V!{1, 2}; > u, Type(u); {1, 2} GrphVert > Index(u); 8 > V ! 8; {1, 2} GrphVert > x := E!{ {1,2}, {3,4}}; > x, Type(x); {{ 1, 2 }, { 3, 4 }} GrphEdge
Operations on Vertex-Sets and Edge-Sets
For each of the following operations, \(S\) and \(T\) may be interpreted as either the vertex-set or the edge-set of the graph \(G\). The variable \(s\) may be interpreted as either a vertex or an edge. The edge-set and vertex-set support all the standard set operations.
- s in S: GrphVert, GrphVertSet -> BoolElt
- s in S: GrphEdge, GrphEdgeSet -> BoolElt
Return
trueif the vertex (edge) \(s\) lies in the vertex-set (edge-set) \(S\), otherwisefalse.
- s notin S: GrphVert, GrphVertSet -> BoolElt
- s notin S: GrphEdge, GrphEdgeSet -> BoolElt
Return
trueif the vertex (edge) \(s\) does not lie in the vertex-set (edge-set) \(S\), otherwisefalse.
- S subset T: GrphVertSet, GrphVertSet -> BoolElt
- S subset T: GrphEdgeSet, GrphEdgeSet -> BoolElt
Return
trueif the vertex-set (edge-set) \(S\) is contained in the vertex-set (edge-set) \(T\), otherwisefalse.
- S notsubset T: GrphVertSet, GrphVertSet -> BoolElt
- S notsubset T: GrphEdgeSet, GrphEdgeSet -> BoolElt
Return
trueif the vertex-set (edge-set) \(S\) is not contained in the vertex-set (edge-set) \(T\), otherwisefalse.
- S eq T: GrphVertSet, GrphVertSet -> BoolElt
- S eq T: GrphEdgeSet, GrphEdgeSet -> BoolElt
Return
trueif the vertex-set (edge-set) \(S\) is equal to the vertex-set (edge-set) \(T\).
- s eq t: GrphVert, GrphVert -> BoolElt
- s eq t: GrphEdge, GrphEdge -> BoolElt
Returns
trueif the vertex (edge) \(s\) is equal to the vertex (edge) \(t\).
- S ne T: GrphVertSet, GrphVertSet -> BoolElt
- S ne T: GrphEdgeSet, GrphEdgeSet -> BoolElt
Returns
trueif the vertex-set (edge-set) \(S\) is not equal to the vertex-set (edge-set) \(T\).
- s ne t: GrphVert, GrphVert -> BoolElt
- s ne t: GrphEdge, GrphEdge -> BoolElt
Returns
trueif the vertex (edge) \(s\) is not equal to the vertex (edge) \(t\).
- ParentGraph(S): GrphVertSet -> Grph
- ParentGraph(S): GrphEdgeSet -> Grph
Return the graph \(G\) for which \(S\) is the vertex-set (edge-set).
- ParentGraph(s): GrphVert -> Grph
- ParentGraph(s): GrphEdge -> Grph
Return the graph \(G\) for which \(s\) is a vertex (edge).
- Random(S): GrphVertSet -> GrphVert
- Random(S): GrphEdgeSet -> GrphEdge
Choose a random element from the vertex-set (edge-set) \(S\).
- Representative(S): GrphVertSet -> GrphVert
- Rep(S): GrphVertSet -> GrphVert
- Representative(S): GrphEdgeSet -> GrphEdge
- Rep(S): GrphEdgeSet -> GrphEdge
Choose some element from the vertex-set (edge-set) \(S\).
Operations on Edges and Vertices
- EndVertices(e): GrphEdge -> { GrphVert}
- EndVertices(e): GrphEdge -> [ GrphVert ]
Given an edge \(e\) belonging to the graph \(G\), return a set containing the two end-vertices of \(e\). If \(G\) is a digraph return the two end-vertices in a sequence.
- InitialVertex(e): GrphEdge -> GrphVert
Given an undirected or directed edge \(e\) from vertex \(u\) to vertex \(v\), return vertex \(u\). This is useful in the undirected case since it indicates, where relevant, the direction in which the edge has been traversed.