Calculate fundamental cycles in a graph.
dodgr_fundamental_cycles(graph, vertices = NULL, graph_max_size = 10000, expand = 0.05)
Maximum size submitted to the internal C++ routines as a single chunk. Warning: Increasing this may lead to computer meltdown!
For large graphs which must be broken into chunks, this factor determines the relative overlap between chunks to ensure all cycles are captured. (This value should only need to be modified in special cases.)
List of cycle paths, in terms of vertex IDs in
graph and, for
spatial graphs, the corresponding coordinates.
Calculation of fundamental cycles is VERY computationally demanding,
and this function should only be executed on CONTRACTED graphs (that is,
graphs returned from dodgr_contract_graph), and even than may take a
long time to execute. Results for full graphs can be obtained with the
function dodgr_full_cycles. The computational complexity can also not
be calculated in advance, and so the parameter
graph_max_size will lead to
graphs larger than that (measured in numbers of edges) being cut into smaller
parts. (Note that that is only possible for spatial graphs, meaning that it
is not at all possible to apply this function to large, non-spatial graphs.)
Each of these smaller parts will be expanded by the specified amount
expand), and cycles found within. The final result is obtained by
aggregating all of these cycles and removing any repeated ones arising due to
overlap in the expanded portions. Finally, note that this procedure of
cutting graphs into smaller, computationally manageable sub-graphs provides
only an approximation and may not yield all fundamental cycles.