Graphs with vertices labelled with arbitrary objects.
Graphs from LightGraphs
use vertices labelled with contiuous integer range starting from 1.
This poses a problem if one wants to handle graphs whose vertices are labelled either by more general integer ranges or other objects (e.g. strings).
LabelledGraphs
extend LightGraphs
by allowing more flexible labelling of verices.
Labelled graph can be created by providing a sequence of labels, i.e.:
using LabelledGraphs
lg = LabelledGraph(["a", "b", "c"]) # Undirected graph with vertices a, b, c
ldg = LabelledDiGraph([4, 5, 10]) # Directed graph with vertices 4, 5, 10
One can also create labelled graph backed by a simple graph from LightGraphs
.
using LabelledGraphs
using LightGraphs
g = path_graph(5)
lg = LabelledGraph(["a", "b", "c", "d", "e"], g)
Once the graph is created, it can be used mostly like other graphs rom LightGraph
.
All method operate on labels given during graph's construction, for instance:
using LabelledGraphs
using LightGraphs
g = path_digraph(5)
lg = LabelledGraph(["a", "b", "c", "d", "e"], g)
println(vertices(lg)) # prints ["a", "b", "c", "d", "e"]
println(edges(lg)) # prints edges "a" -> "b", "b" -> "c" etc.
add_edge!(lg, "e", "b")
println(inneighbors(lg, "b")) # prints ["a", "e"]
Additionally, one can add new vertices to the LabelledGraph
, either by using add_vertex!
or add_vertices!
.
add_vertex!(lg, "f")
add_vertices!(lg, ["u", "v", "w"])