Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Algorithm 将点划分为最大距离集_Algorithm_Computational Geometry - Fatal编程技术网

Algorithm 将点划分为最大距离集

Algorithm 将点划分为最大距离集,algorithm,computational-geometry,Algorithm,Computational Geometry,我有一个GPS点列表…但我所要求的也可以用于任何X,Y坐标 在我的用例中,我希望在集合中指定点。每个点只能属于一个集合,并且每个集合都有一个条件,即集合中任意两点之间的距离不大于某个常数……也就是说,集合中的所有点都适合一个特定直径的圆 对于点列表,我想找到集合数最少的最佳(或至少某些)排列 因为周围的其他点已经在不同的集合中,或者仅仅因为周围没有点(它们之间的距离大于集合条件下的距离),所以会有只有一个点的集合。我想要避免的是无效的集合分配,例如,不是找到理想的2个集合,每个集合有30个点,我

我有一个GPS点列表…但我所要求的也可以用于任何X,Y坐标

在我的用例中,我希望在集合中指定点。每个点只能属于一个集合,并且每个集合都有一个条件,即集合中任意两点之间的距离不大于某个常数……也就是说,集合中的所有点都适合一个特定直径的圆

对于点列表,我想找到集合数最少的最佳(或至少某些)排列

因为周围的其他点已经在不同的集合中,或者仅仅因为周围没有点(它们之间的距离大于集合条件下的距离),所以会有只有一个点的集合。我想要避免的是无效的集合分配,例如,不是找到理想的2个集合,每个集合有30个点,我发现5组,一组得1分,第二组得40分,等等

我所能做的只是一个蛮力解决方案,计算所有距离,构建所有可能的集合安排,按集合数对它们进行排序,然后选择一个集合数最少的集合


有更好的方法吗?

这里的问题是NP完全问题。你要解决的是马克斯集团的问题,再加上一个封面问题

您的问题可以表示为图G=(V,E),其中顶点是您的坐标,边是距离中的连接。这个图可以在O(n^2)时间内绘制出来。然后过滤掉距离大于常数的所有边,给出图G'

用剩下的图G'你们想要找到所有的派系(有效地解决了最大派系)。团是一组完全连接的顶点。请将这张派系名单命名为S

现在,寻找覆盖所有顶点的S元素的最小集合是集合覆盖问题


集覆盖问题和最大团问题都是NP完全问题。因此,找到一个最优的解决方案需要指数时间。你可以看看这两个问题的近似算法。

一旦你有了
G'
,剩下的我可以肯定的是解决了。是的,@nularman,你是对的。事实上,由于NPC问题的性质,它是任何问题,在NPC问题中发现另一个NPC问题并不奇怪,因为每个NPC问题都可以简化为任何其他NPC问题。公平地说,我也时不时地这样做。