使用Graphviz

时间:2017-10-03 16:16:01

标签: graphviz planar-graph

我用Graphviz绘制了small planar graph,但在一个地方有两条边的交叉点。我在SO上读到,并非所有平面图都可以在没有交叉点的情况下绘制,因为它是一个NP难问题。我还读到,Graphviz中甚至没有实现复杂的算法。但是这个交叉点尽可能容易修复,所以可能有办法摆脱它。

以下是我使用的选项:

overlap = false;
splines = curved;
nodesep = 0.5;

这是图表: planar graph

那么,有没有办法修正一个交叉点(25-38与7-18)而不改变边缘的顺序,就像我here一样?是不是像至少O(n^2)算法会交换两个顶点并检查交叉点是否消失了?

1 个答案:

答案 0 :(得分:2)

这是一种修补程序:

在节点7和25之间添加不可见边,即7 -- 25 [style="invis"];。该子句可以添加到图表定义的末尾,因此它不应该干扰任何自动生成。

感觉就像作弊一样,至少图表定义文件中有效载荷边缘的顺序保持不变。

不幸的是,我无法解释为什么会这样。特别是,在入射到违规边缘的其他节点之间添加边缘不会产生所需的结果。

Graphviz版本:2.38.0(20140413.2041)