Given a symmetric adjacency matrix, determine the number of unique undirected cycles.
For example, the graph represented by adjacency matrix
A = [
0 1 1 0 1
1 0 1 1 0
1 1 0 1 1
0 1 1 0 0
1 0 1 0 0];
has 6 cycles. They are:
[1 -> 2 -> 3 -> 1]
[1 -> 3 -> 5 -> 1]
[2 -> 3 -> 4 -> 2]
[1 -> 2 -> 4 -> 3 -> 1]
[1 -> 2 -> 3 -> 5 -> 1]
[1 -> 2 -> 4 -> 3 -> 5 -> 1]
The input is an adjacency matrix of 0s and 1s, and the output should be the number of unique (simple) undirected cycles in the graph.
Solution Stats
Problem Comments
4 Comments
Solution Comments
Show comments
Loading...
Problem Recent Solvers20
Suggested Problems
-
Number of 1s in the Binary Representation of a Number
480 Solvers
-
Back to basics 9 - Indexed References
462 Solvers
-
Getting the indices from a vector
11850 Solvers
-
531 Solvers
-
Back to Basics - Find no. of elements in a matrix?
328 Solvers
More from this Author3
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
could you please clarify, in your example, why cycles like '1->2->1', '1->5->1' or '3->5->3' are not counted?
it seems the expected solution only counts cycles that include three or more nodes... is this correct?
That is correct. In a directed graph, the cycle 1 -> 2 -> 1 actually uses two different edges, while in an undirected graph, the edge 1 -> 2 and 2 -> 1 are one and the same. I am only considering cycles valid if each node along the way is visited once and if edges are not used more than one time. I chose this criteria so that the number of cycles counted would match the results for the table provided here: http://mathworld.wolfram.com/GraphCycle.html
got it. Thanks for the clarification!