java - 考虑多重约束,如何处理任务之间的依赖关系?

标签 java dependencies graph-theory jung constraint-programming

我正在开发一个 Java 程序,该程序接受一个输入文件,其中包含一堆任务之间的依赖关系,如下所示:

 C --> D 
 A --> B
 A --> D
 F --> G
 B --> C
 E --> F

“C --> D”表示任务 D 只能在 C 完成后开始,但并不一定意味着 D 紧随 C 之后。如果任务彼此独立,它们也可以并行运行(A &例如E)。

程序应该处理所有这些依赖项并考虑以下约束生成输出依赖项列表:

  • 查找所有源(在本例中为 A 和 E)并从源开始对依赖项进行排序:
A --> B
A --> D
B --> C
C --> D
E --> F
F --> G
  • 删除所有无用的依赖项(在本例中:A --> D)

  • 最后,通过在“Start”和源之间添加依赖关系,添加“Start”任务作为所有依赖关系的根。生成的输出列表应如下所示:

Start --> A
Start --> E
A --> B
B --> C
C --> D
E --> F
F --> G

然后我必须使用“Jung”等专用库从上面的依赖项列表中显示有根 TreeMap 。

关于如何处理所有这些约束有什么想法吗?

预先感谢您的帮助。

最佳答案

查找来源很简单;只需询问每个顶点是否有任何传入边即可。

对于其余的,基本上你想从图中提取生成树;有几种算法可以做到这一点。

关于java - 考虑多重约束,如何处理任务之间的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23240079/

相关文章:

Java - 给定字符串中的所有排列和组合

java - JDBC 返回结果集

java - 如何编写 Excel Upload 的 Junit 测试?

javascript - RequireJS - 导出一组函数

java - 通过 java 命令运行具有依赖项的 Gradle 编译 Java 应用程序

algorithm - 如何在不丢失现有路径的情况下从有向图中删除顶点?

xslt - 使用 XSLT/XPath 查找有向无环图 (DAG) 最小元素(顶点)?

java - Json解析: Iterating through the values?

c++ - 包含链如何在 C++ 中运行?

python - 有没有办法在 python 中给定包含节点和权重的 networkx 图创建自定义标准化 numpy 数组