Algorithm 如何找到点位置以最小化线交互?

Algorithm 如何找到点位置以最小化线交互?,algorithm,math,graph,geometry,Algorithm,Math,Graph,Geometry,这就是我的问题,我有n个节点(可以称为没有位置的点),我有一列线,一条线是通过连接2个节点(点)来定义的 我的问题是找到每个节点(点)的正确位置,以最小化线之间的交点数量 我甚至不知道如何开始解决这个问题。如果有人能给我一个方法或解释某种算法,可以帮助我,我会很高兴,我不是在寻找代码 举例说明: 如果我们有4个节点[1,2,3,4]和4条线{[1,2],[2,3],[3,4],[4,1]} 如果我们按如下顺序排列点,则交点的最小数量可以为0: 但是有一种方法,我们可以有一个这样的交叉点:

这就是我的问题,我有n个节点(可以称为没有位置的点),我有一列线,一条线是通过连接2个节点(点)来定义的

我的问题是找到每个节点(点)的正确位置,以最小化线之间的交点数量

我甚至不知道如何开始解决这个问题。如果有人能给我一个方法或解释某种算法,可以帮助我,我会很高兴,我不是在寻找代码


举例说明:

如果我们有4个节点[1,2,3,4]和4条线{[1,2],[2,3],[3,4],[4,1]}

如果我们按如下顺序排列点,则交点的最小数量可以为0:

但是有一种方法,我们可以有一个这样的交叉点:


我的问题是在输入更加复杂的情况下,找到最小交互量的位置。

我认为我们缺乏关于问题的信息,因为如果点没有固定位置,使所有直线平行似乎是一种简单的方法。@RaymoAisla在最简单的情况下,如果有3个节点,并且所有节点都相互连接,则无法使所有直线平行。在这种情况下,这是一个可以视为图论问题的问题。知道图中的最小交点数是一个NP问题。在多项式时间内,可以确定图形是平面的,如果是平面的,则根据Fary定理,可以有零交点,并在平面上用线段绘制图形。但如果图在其子图中允许最小非平面图,则问题是NP-complete@RaymoAisla他的最后一句话基本上是好的,除了在一个图中找到最小的交点数是一个NP*完全*问题,我看不出“G在其小调中允许最小的非平面图”比仅仅说“G不是平面图”更简单.我没有答案,只是头脑风暴:如果你能识别网格中的面(即1,2,3,4),你可以将交点视为扭曲的面。然后你可以使用弹性网格模型来最小化网格的能量,这可能会(也可能不会)收敛到你想要的结果。我认为我们缺乏关于这个问题的信息,因为如果这些点没有固定的位置,使所有直线平行似乎是一种简单的方法。@RaymoAisla在最简单的情况下,如果有3个节点,并且所有节点都相互连接,则无法使所有直线平行。在这种情况下,这是一个可以视为图论问题的问题。知道图中的最小交点数是一个NP问题。在多项式时间内,可以确定图形是平面的,如果是平面的,则根据Fary定理,可以有零交点,并在平面上用线段绘制图形。但如果图在其子图中允许最小非平面图,则问题是NP-complete@RaymoAisla他的最后一句话基本上是好的,除了在一个图中找到最小的交点数是一个NP*完全*问题,我看不出“G在其小调中允许最小的非平面图”比仅仅说“G不是平面图”更简单.我没有答案,只是头脑风暴:如果你能识别网格中的面(即1,2,3,4),你可以将交点视为扭曲的面。然后,您可以使用弹性网格模型来最小化网格的能量,该能量可能会(也可能不会)收敛到您想要的结果。