Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 次最近对问题_Math_Graph_Graph Theory - Fatal编程技术网

Math 次最近对问题

Math 次最近对问题,math,graph,graph-theory,Math,Graph,Graph Theory,我相信大多数人都熟悉,但有没有其他方法或方法来修改当前的CP算法以获得下一个最接近的对?简单的方法,在O(n log(n)): 在O(n log(n))中找到壁橱对(p1,p2) 用p1或p2计算所有对(但不是(p1,p2))保留最接近的一个,让我们称之为O(n)中的E 拆下(1)中的p1和p2 找到壁橱对,将其与E进行比较,并将最接近的一个保留在O中(n log(n)) 您现在有了第二个最近的一个。简单的一个,在O(n log(n))中: 在O(n log(n))中找到壁橱对(p1,p2

我相信大多数人都熟悉,但有没有其他方法或方法来修改当前的CP算法以获得下一个最接近的对?

简单的方法,在O(n log(n)):

  • 在O(n log(n))中找到壁橱对(p1,p2)
  • 用p1或p2计算所有对(但不是(p1,p2))保留最接近的一个,让我们称之为O(n)中的
    E
  • 拆下(1)中的p1和p2
  • 找到壁橱对,将其与
    E
    进行比较,并将最接近的一个保留在O中(n log(n))
您现在有了第二个最近的一个。

简单的一个,在O(n log(n))中:

  • 在O(n log(n))中找到壁橱对(p1,p2)
  • 用p1或p2计算所有对(但不是(p1,p2))保留最接近的一个,让我们称之为O(n)中的
    E
  • 拆下(1)中的p1和p2
  • 找到壁橱对,将其与
    E
    进行比较,并将最接近的一个保留在O中(n log(n))

您现在有了第二个最近的距离。

如果需要恒定数量的最小距离(下一对),可以修改维基百科文章中的步骤3-5,将d_-Lmin、d_-Rmin、d_-LRmin重新定义为最小距离的恒定长度列表。使用c*log(n)内存的

若next的使用次数少于O(n)次,则CR问题的重新表述返回的距离小于给定的d,与next方法相同。它可以用与CR相同的方法实现。我看不出理论上保证步骤4可以在线性时间内完成,但不检查小方框中的点有好处


如果next的使用次数超过O(n)次,则最好计算所有距离并对其进行排序(如果内存没有问题)。

如果需要恒定数量的最小距离(下一对),可以修改维基百科文章中的步骤3-5,将d_Lmin、d_Rmin、d_LRmin重新定义为最小距离的恒定长度列表。使用c*log(n)内存的

若next的使用次数少于O(n)次,则CR问题的重新表述返回的距离小于给定的d,与next方法相同。它可以用与CR相同的方法实现。我看不出理论上保证步骤4可以在线性时间内完成,但不检查小方框中的点有好处


如果next的使用次数超过O(n)次,则最好计算所有距离并对其进行排序(如果内存没有问题)。

您知道是否有一种有效的方法来概括此过程,以便获得第k对最近的距离?最好是以一种不是O(n!)的方式?@Tyler:只需将进程k乘以,那么
O(k.n.log(n))
你知道是否有一种有效的方法来概括这个过程,从而获得第k个最接近的对吗?最好以一种不是O(n!)的方式?@Tyler:只需执行进程的k倍,因此
O(k.n.log(n))