java - 查找循环依赖

标签 java algorithm tree

<分区>

Possible Duplicate:
Finding all cycles in graph

我有一个任务我一直在绞尽脑汁,但在执行它时仍然遇到困难。开始了:有一个类:

public class Package {
private String name;
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

private List<Package> dependencies;

public List<Package> getDependencies() {
    return dependencies;
}

public void setDependencies(List<Package> dependencies) {
    this.dependencies = dependencies;
}

public Package(String name){
    this.name = name;
    this.dependencies = new ArrayList<Package>();
}
  //any bunch of methods here))
}

还有一个:

public class Project {
private String name;
private List<Package> packages = new ArrayList<Package>();

public boolean hasCyclic(){
    //**//implementation should be here
}

}

我需要查找项目中的包列表是否具有循环依赖性。例如 A->B->C->B - 找到,返回真或 A->C->Z->A - 找到,返回真。 首先想到的是获取所有包的名称,对它们进行排序并查找重复项。但是在我大脑深处的某个地方,有东西​​告诉我这不是最佳解决方案。你们能帮帮我吗?非常感谢您。

最佳答案

这基本上是一个“检测有向图中的环”问题。

我打不过这个answer已经在 SO 中发布,解释了如何解决这个问题。

关于java - 查找循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6613828/

相关文章:

java - 有没有办法开始和停止记录多行语句和执行时间?

java - 可以以任何方式序列化 transient 变量吗?

algorithm - 棘手的链表问题

data-structures - b树的顺序

java - 执行缓慢并且耗尽堆空间(即使 vm args 设置为 2g)

java - 错误 :552 5. 3.4 消息大小超过固定的最大消息大小

java - 错误 找不到符号 Main();第 20 行符号 : Method Main() Location class Main 1 error

algorithm - 你会如何编写一个程序来找到单词列表中最短的 pangram?

r - 如何最小化 R 中的线性最小二乘函数?

java - 如何创建动态树?