The current implementation works for undirected graphs only, directed graphs
are treated as undirected graphs. Loop edges and multiple edges are ignored.
If the graph is a forest (ie. acyclic), then zero is returned.
This implementation is based on Alon Itai and Michael Rodeh: Finding a
minimum circuit in a graph Proceedings of the ninth annual ACM
symposium on Theory of computing, 1-10, 1977. The first implementation of
this function was done by Keith Briggs, thanks Keith.
References
Alon Itai and Michael Rodeh: Finding a minimum circuit in a
graph Proceedings of the ninth annual ACM symposium on Theory of
computing, 1-10, 1977
# No circle in a treeg <- make_tree(1000, 3)
girth(g)
# The worst case running time is for a ringg <- make_ring(100)
girth(g)
# What about a random graph?g <- sample_gnp(1000, 1/1000)
girth(g)