Developing Alternate Graph Types
This section is designed to guide developers who wish to write their own graph structures.
All LightGraphs functions rely on a standard API to function. As long as your graph structure is a subtype of AbstractGraph and implements the following API functions with the given return values, all functions within the LightGraphs package should just work:
edges- Base.eltype
has_edgehas_vertexinneighborsnenvoutneighborsverticesis_directed: Note that since LightGraphs uses traits to determine directedness,is_directedfor aCustomGraphtype should be implemented with both of the following signatures:is_directed(::Type{CustomGraph})::Boolis_directed(g::CustomGraph)::Bool
If the graph structure is designed to represent weights on edges, the weights function should also be defined. Note that the output does not necessarily have to be a dense matrix, but it must be indexable via [u, v].