如果我有他的面孔列表,是否有绘制平面图的算法?
我知道有一些复杂的算法,例如路径添加和顶点添加,它们测试平面度并产生平面嵌入,但它并不是我所寻找的。 p>
答案 0 :(得分:0)
有许多可视化图形的技术,整本教科书专门用于该主题。如果您正在寻找快速算法来实现,我建议您查看force-directed graph drawing。
这个想法是考虑顶点自然地相互排斥,但边缘将它们绘制在一起。两种力(排斥力和吸引力)应该是顶点之间距离的函数,并且直接朝向(或远离)相关顶点。排斥力(1 / r ^ 2)和吸引力ln(r)的大小是好的。还要考虑在边界处施加的一些排斥力,以阻止分离的连接组件飞向无限远。
该算法类似于:
将所有顶点放在平面上的随机点上。
计算作用于每个顶点的净力。
将每个顶点移动一小部分净力。
如果没有顶点移动超过某个公差值,请绘制图形,否则转到2.
如果你想要一个动画,你可以用“绘制图形,然后转到2”替换第4步。
它并不快,并且它不能保证平面表示,但它实现起来很简单,并且通常可以很好地捕获平面度。高度连接的顶点最终彼此靠近。