问题是我有10个节点(比方说),它们之间有一些连接。现在我想绘制一个描述上面的视觉图形,其中圆圈作为节点,线条作为它们之间的连接。我的问题是在屏幕上放置节点的算法是什么,比如我们绘制了一个圆,然后另一个圆应尽可能不重叠。请解释一下。
答案 0 :(得分:2)
有很多方法可以解决这个问题,因为graph drawing中有许多不相互兼容的目标。要避免的事情包括
以下是一些方法。
一个简单的代码就是将您的节点放在一个圆上,并将它们均匀分开。然后将边缘添加为直线。这将“主要起作用”。
更为笼统的是model your nodes as springs彼此相互排斥。这就是Kamada-Kawai算法背后的想法。它使节点分开,同时最小化边长。
第三种方法是radial layout,其中节点放在同心环上,表示它们与所选根节点的距离。
我建议您查看Graphviz包,以了解可能的内容。这很容易使用,也很有趣。有许多语言的Graphviz库绑定,但不幸的是Visual Basic似乎不是其中之一。
修改: This question相关。