我用 Graphviz 画了一个小的平面图,但在一个地方有两条边的交点。我在 SO 上读到,并非所有平面图都可以在没有交点的情况下绘制,因为这是一个 NP 难题。我还读到 Graphviz 中甚至没有实现复杂的算法来做到这一点。但是那个交叉点很容易修复,所以可能有办法摆脱它。
以下是我使用的选项:
overlap = false;
splines = curved;
nodesep = 0.5;
那么,有没有一种方法可以修复一个交叉点(25-38 和 7-18)而不像我在这里所做的那样改变边缘的顺序?至少没有O(n^2)
算法可以交换两个顶点并检查交叉点是否消失?