绘制平面图的算法

时间:2014-05-11 15:31:28

标签: graph-theory planar-graph

如果我有他的面孔列表,是否有绘制平面图的算法?

我知道有一些复杂的算法,例如路径添加和顶点添加,它们测试平面度并产生平面嵌入,但它并不是我所寻找的。

1 个答案:

答案 0 :(得分:0)

有许多可视化图形的技术,整本教科书专门用于该主题。如果您正在寻找快速算法来实现,我建议您查看force-directed graph drawing

这个想法是考虑顶点自然地相互排斥,但边缘将它们绘制在一起。两种力(排斥力和吸引力)应该是顶点之间距离的函数,并且直接朝向(或远离)相关顶点。排斥力(1 / r ^ 2)和吸引力ln(r)的大小是好的。还要考虑在边界处施加的一些排斥力,以阻止分离的连接组件飞向无限远。

该算法类似于:

  1. 将所有顶点放在平面上的随机点上。

  2. 计算作用于每个顶点的净力。

  3. 将每个顶点移动一小部分净力。

  4. 如果没有顶点移动超过某个公差值,请绘制图形,否则转到2.

  5. 如果你想要一个动画,你可以用“绘制图形,然后转到2”替换第4步。

    它并不快,并且它不能保证平面表示,但它实现起来很简单,并且通常可以很好地捕获平面度。高度连接的顶点最终彼此靠近。