图自动布局算法

Che*_*tah 61 algorithm layout graph edges nodes

为了简化问题,我有一个图表,其中包含2D平面上的节点和边.

我想要做的是单击一个按钮,它会自动布局图形看起来干净.我的意思是边缘的最小交叉,节点之间的漂亮空间,甚至可能代表图形比例(加权边缘).

我知道这是一个看起来很干净的图表是完全主观的,但有没有人知道一个算法开始,而不是重新发明轮子?

谢谢.

ype*_*eᵀᴹ 75

你会发现HTTP:// graphdrawing.org /本教程,由罗伯托·塔马西亚,教授在布朗大学,非常有用.

我喜欢很多Force-Directed Techniques(教程中的第66-72页),比如Spring Embedder.

你假设任何两个相邻节点之间有弹簧或其他力,让自然(模拟)完成工作:)

  • 我认为问题是关于算法而不是框架.我不明白为什么不接受这个问题,这是唯一一个关于算法的问题. (3认同)
  • @xhg thnx!我编辑了布朗大学Roberto Tamassia网页的链接. (2认同)

Nou*_*him 19

我建议你看看graphviz.该dot程序可以采用图形规范,并为您"干净"地生成网络图像.如果您对理论背景感兴趣,该页面上的"理论"链接会为您提供一些可能相关的链接.

  • 这就是为什么我特意提到该页面上的理论链接. (8认同)
  • 很公平.我理解OP希望解决布局问题(而不是重新实现解决方案)并根据我的答案(经过充分测试,生产质量"轮",他或她不必重新发明). (3认同)
  • 问题是关于图形布局的算法,而不是应用程序. (2认同)