Python 3.x 解开图节点:python-igraph

Python 3.x 解开图节点:python-igraph,python-3.x,igraph,Python 3.x,Igraph,我的问题和我的问题相似。我正在使用python igraph库创建无向图。我想要实现的是尽可能多地解开缠绕,以达到边缘交叉的最小数量。然后我想把这个干净的布局转换成一个二维平面,在那里我可以读取每个顶点的坐标,并且没有顶点与任何其他顶点重叠 对于我当前的图形,我已经基于Fruchterman Reingold力定向算法生成了布局(如图所示) 谁能给我一些提示,我怎样才能做到这一点?或者,这无法在多项式时间内解决,因为找到交叉次数最少的顶点的最佳位置是一个NP难问题 关于节点重叠,请注意,igra

我的问题和我的问题相似。我正在使用python igraph库创建无向图。我想要实现的是尽可能多地解开缠绕,以达到边缘交叉的最小数量。然后我想把这个干净的布局转换成一个二维平面,在那里我可以读取每个顶点的坐标,并且没有顶点与任何其他顶点重叠

对于我当前的图形,我已经基于Fruchterman Reingold力定向算法生成了布局(如图所示)

谁能给我一些提示,我怎样才能做到这一点?或者,这无法在多项式时间内解决,因为找到交叉次数最少的顶点的最佳位置是一个NP难问题


关于节点重叠,请注意,
igraph
(或任何竞争库,如
networkx
)的布局例程中没有节点尺寸(相对于画布的w.r.t.)的概念,即它们表示为点,而不是具有非零区域的圆。因此,没有碰撞检测。因此,解决该问题的任何解决方案都需要大量的工作(基本上编写一个简单的物理引擎,计算模拟退火过程中任意点的弹簧力+节点碰撞产生的力,后者可能仅在模拟的“后期”阶段)。