【发布时间】:2011-07-12 19:44:49
【问题描述】:
我有一个有向图 G=(V,E),我想重新绘制它,因为它目前非常混乱。这是一个可视化的流程图,因为 |V|>1000 并且 V 中的每个 v 都有超过 1 个出边,因此很难用肉眼追踪。例如;左下角的节点通过一条边连接到右上角的节点。例如,如果这两个节点彼此相邻放置会更好。边缘太多了,每一个都很难追踪。
我可以访问并且可以更改所有顶点的 (x,y) 坐标。我想以一种更人性化的方式保持 G 的当前结构来重绘 G。我认为最小化相交边的数量可能是开始的事情。
有没有算法可以帮我重绘这张图?
我的问题是,如何为 V 中的每个 v 分配 (x,y) 坐标,以便更好地组织和更容易跟踪和阅读?我如何正式表达这些要求?如果这是 NP,我应该采用启发式方法吗? Here 是一个有组织的图表的例子,this 是一些混乱的东西(虽然比我处理的要小得多)。
任何帮助将不胜感激。谢谢。
编辑:我仍在寻找中肯的答案。我研究过平面直线和正交绘图方法,但我得到的是冗长的研究论文。我正在寻找的是一个实现、伪代码或至少让我开始的东西。
编辑 2: 我不想显示图表。算法的输入应为graph G (composed of V and E),输出应为{(xi, yi) for each vi in V}
【问题讨论】:
-
不,不是作业。只是试图自动化和简化事情......
标签: java python algorithm optimization graph