我有一个有向图(流程图),希望以一种非常清晰、易于理解和易于阅读的方式在二维平面上可视化它。因此,我将为每个顶点分配(x,y)位置。我正在考虑使用模拟退火、遗传算法或任何你可以建议的方法来解决这个问题。
输入:一个图G=(V,E)。 输出:一组赋值,{每个vi的(xi,yi)}。换句话说,每个顶点都将被分配一个位置(x,y),其中坐标都是整数且>=0。
以下是我将用来评判解决方案的标准(我欢迎任何建议):
1.交叉边的数量应该最小; 2.所有的边都从左到右流动; 3.高角分辨率(由两条边形成的最小角度,这些边都与同一个顶点相交); 4.小区域-最不重要的。
此外,我有一个手工制作的初始配置(将位置分配给顶点),非常混乱,这就是我试图自动化这个过程的原因。
我的问题是,
1.选择使用局部搜索技术是否明智?它有多大可能产生期望的结果? 2.我应该从哪里开始?模拟退火、遗传算法还是其他什么? 3.我应该在开始时随机种子还是使用初始配置? 4.或者,如果你已经知道类似的实现/伪代码/东西,请指引我。
任何帮助都将不胜感激。谢谢。
编辑:它不需要快速-不是实时的。此外;|V|=~200,每个顶点平均有1.5个出边。图形没有断开的组件。它包含循环。