在Visual Basic中绘制节点图

时间:2009-09-02 15:41:04

标签: vb.net algorithm graph drawing

问题是我有10个节点(比方说),它们之间有一些连接。现在我想绘制一个描述上面的视觉图形,其中圆圈作为节点,线条作为它们之间的连接。我的问题是在屏幕上放置节点的算法是什么,比如我们绘制了一个圆,然后另一个圆应尽可能不重叠。请解释一下。

1 个答案:

答案 0 :(得分:2)

有很多方法可以解决这个问题,因为graph drawing中有许多不相互兼容的目标。要避免的事情包括

  • 交叉边数
  • 占据的总表面积和整体形状(紧凑度,纵横比)
  • 过长的边缘
  • 边缘之间的小角度(重叠边缘)

以下是一些方法。

  • 一个简单的代码就是将您的节点放在一个圆上,并将它们均匀分开。然后将边缘添加为直线。这将“主要起作用”。

  • 更为笼统的是model your nodes as springs彼此相互排斥。这就是Kamada-Kawai算法背后的想法。它使节点分开,同时最小化边长。

  • 第三种方法是radial layout,其中节点放在同心环上,表示它们与所选根节点的距离。

我建议您查看Graphviz包,以了解可能的内容。这很容易使用,也很有趣。有许多语言的Graphviz库绑定,但不幸的是Visual Basic似乎不是其中之一。

修改: This question相关。