Parvej's blog

By Parvej, history, 4 years ago, In English

How can I find all the simple cycles in an undirected graph?

126615260_419079712777006_8560932289449234104_n.png In the picture, there are 3 simple cycle:

  1. 1-2-3

  2. 1-2-4-5

  3. 1-3-2-4-5

How can I print all of them?

  • Vote: I like it
  • 0
  • Vote: I do not like it

»
4 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by Parvej (previous revision, new revision, compare).

»
4 years ago, # |
  Vote: I like it +5 Vote: I do not like it

Just try to backtracking/bruteforces. Each vertices during the visit will be marked (not go to that vertice again), else unmark it. The complexity will be $$$O(n!)$$$ time

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    SPyofgame I think time complexity will be O ((N^2) * (N!)) as for each path there will be N^2 computation right? Correct me if I am wrong. Thanks in advance.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      I dont think we need $$$O(n^2)$$$ for each $$$O(n!)$$$ path since you can try to implement directly or something similar.

      By the way, $$$O(n^2)$$$ is also considerably small compared to $$$O(n!)$$$. So unless the time limit is small, you can try to improve the complexity by changing implementation or even a bit of heuristic — which can provide better complexity and constant.