我正在寻找一种算法的想法,该算法生成类似于以下的图,给定一组非循环依赖(我使用此图像来表明依赖关系可能很复杂)
(来源:interactivetvweb.org)
制作这样的图表并不总是可行的。 (非循环)依赖关系:
A取决于X,Y,Z
B取决于X,Y,Z
C取决于X,Y,Z
描述了六个顶点上的完整二部图,即non-planar。对于您显示的图表类型,其结果是图表中的至少一个区域必须分成两个单独的部分,和/或至少其中一个区域不能直接连接到其依赖项。
基于图形的可视化(例如graphvis)可以避免这个问题,其中边缘可以相互交叉。
生成您正在寻找的图表的启发式算法的大纲如下:
这不会每次产生最好的图形(如果这样的概念甚至是明确定义的......)但是应该为像你的例子这样的问题做一个合理的工作。
STAN4J从java代码生成这种图表。