Labelling
By default, a vertex is identified by its internal identifier. However, a user can assign labels of any arbitrary Julia type to identify vertices. However, these labels can be used only externally. Internally, the vertices will still be identified by their integer ids. This is done has vertex label resolution can impose a significant overhead.
The following example demonstrates the Labelling API:
julia> using Graft julia> g = completegraph(10) Graph(10 vertices, 90 edges, Symbol[] vertex properties, Symbol[] edge properties) julia> # Set labels "1", "2" ... "10" to the vertices setlabel!(g, map(string, 1 : 10)) julia> # Translate labels into vertex identifiers decode(g, "1") 1 julia> # Decode a labelled edge decode(g, "1"=>"2") 1=>2 julia> # Translate vertex identifiers into labels encode(g, 1) "1" julia> # Encode an edge encode(g, 1=>2) "1"=>"2" julia> # Relabel a vertex relabel!(g, 1, "ONE") julia> # Remove all vertex labels (Use vertex identifiers instead) setlabel!(g) julia> # Display all vertex labels (defaults to vertex identifiers in this case) encode(g) 10-element Array{Int64,1}: 1 2 3 4 5 6 7 8 9 10
Detailed documentation:
setlabel!(::Graph, ::Vector) setlabel!(::Graph) decode(::Graph, ::Any) decode(::Graph, ::Pair) encode(::Graph, ::Int) encode(::Graph, ::Pair{Int,Int}) encode(::Graph) relabel!(::Graph, ::Int, ::Any) relabel!(::Graph, ::AbstractVector{Int}, ::Vector)