我用Graphviz绘制了small planar graph,但在一个地方有两条边的交叉点。我在SO上读到,并非所有平面图都可以在没有交叉点的情况下绘制,因为它是一个NP难问题。我还读到,Graphviz中甚至没有实现复杂的算法。但是这个交叉点尽可能容易修复,所以可能有办法摆脱它。
以下是我使用的选项:
overlap = false;
splines = curved;
nodesep = 0.5;
那么,有没有办法修正一个交叉点(25-38与7-18)而不改变边缘的顺序,就像我here一样?是不是像至少O(n^2)
算法会交换两个顶点并检查交叉点是否消失了?
答案 0 :(得分:2)
这是一种修补程序:
在节点7和25之间添加不可见边,即7 -- 25 [style="invis"];
。该子句可以添加到图表定义的末尾,因此它不应该干扰任何自动生成。
感觉就像作弊一样,至少图表定义文件中有效载荷边缘的顺序保持不变。
不幸的是,我无法解释为什么会这样。特别是,在入射到违规边缘的其他节点之间添加边缘不会产生所需的结果。
Graphviz版本:2.38.0(20140413.2041)