Graphviz:如何插入两个新的链接节点并最小化边缘交叉?

时间:2012-11-03 00:29:42

标签: python graph-theory graphviz pygraphviz

我有以下图表graph

如您所见,有两个自然群集。我想找出一种方法将这些聚类分成两个图。

关键的一步当然是计算正确的分裂。我想插入两个节点n1& n2,将它们连接起来e(n1,n2),然后移动它们,最大限度地减少边缘交叉的数量(当然,将所有节点/边缘精确地固定在它们所在的位置)。

有人可以在这里提供任何帮助吗?我不认为graphviz有任何能让我这样做的东西。

1 个答案:

答案 0 :(得分:2)

我认为你在这里混合了两个不同的任务:一个是图的分析,另一个是可视化

Graphviz,顾名思义,是一种图形可视化工具。可视化可以采用多种形式,通常是通过使这些节点彼此接近连接来“使其看起来很好”,从而减少可视边缘长度。可以利用一些弹簧或重力模型来计算所有节点的最佳位置。其他选项包括圆形或外壳布局。

某个可视化不应该是分析图表的基础。图形属性(如平均最短路径长度或聚类系数)与任何可视化无关。

你说你想“最小化边缘交叉的数量”。边缘交叉的数量是可视化的属性,而不是图表的属性!每次让graphviz计算布局时,它可能会更改,即使图形未更改。谁说2d是你图表唯一可能的表示?只添加一个维度,您将不会有任何边缘交叉。

我建议专注于图表分析。我不知道你是否知道NetworkX。他们有数十Algorithms来分析您的图表。也许你感兴趣的是集群 clique 部分。