Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I find cycles in my object hierarchy?

There is a class Company, which has reference to another instance of Company to represent the parent. Lets say there are four companies c1, c2, c3 & c4 and c2, c3, c4 has parent company set as c1.

For example:

public class Company {
  public Company parent;

  public Company() { }
  public Company(Company parent) {
    this.parent = parent;
  }

  public static void main(String[] args) {
    Company c1 = new Company();
    Company c2 = new Company(c1);
    Company c3 = new Company(c1);
    Company c4 = new Company(c1);
}

If we set c2 as parent company of the c1:

c1.parent = c2;

then it will create a Cyclomatic Complexity infinite loop in the company hierarchy, which we have to avoid in our system.

We would like to be able to detect this in runtime. What is the best algorithm to check the cyclomatic complexity in objects of the same class in the above situation?

like image 364
Mukesh Kumar Avatar asked Mar 16 '23 03:03

Mukesh Kumar


1 Answers

Your task has nothing to do with cyclomatic complexity. Your entities basically form a graph and you want to detect cycle in it. The common way to do that is to perform a DFS.

You can find plenty of examples how to do that over the internet.

like image 119
Aivean Avatar answered Mar 23 '23 03:03

Aivean