将点划分为最大距离

米雷克

我有一个GPS点列表...但是我要问的内容也可以用于任何X,Y坐标。

在我的用例中,我想在集合中分配点。每个点只能属于一个集合,并且每个集合都有一个条件,即集合中两个点之间的距离不大于某个常数...这意味着集合中的所有点都适合特定直径的圆。

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

会有一个只有一个点的集合,因为周围的其他点已经在不同的集合中,或者仅仅是因为周围没有点(它们之间的距离大于集合的条件)...我想避免的是效率低下的集合分配,例如,而不是找到理想的2套,每套30分,我发现5套,一套1分,第二套40分,依此类推...

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

有没有更好的方法?

鲁本·维邦(Ruben Verboon)

这里的问题是NP完全的。您尝试解决的问题是最大爬坡问题和集合覆盖问题。

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

对于其余的图G',您想查找所有集团(有效求解最大倾斜度)。一个集团是一组完全相连的顶点。将此清单命名为S。

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

布景问题和最大派系都是NP完整的。因此,找到最佳解决方案将花费指数时间。您可以查看这两个问题的近似算法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将点划分为区域

来自分类Dev

将列表划分为序言中的一点

来自分类Dev

根据线段将点集划分为子集

来自分类Dev

将表划分为子表

来自分类Dev

将网络划分为子网

来自分类Dev

将任务划分为类别

来自分类Dev

将整数划分为范围

来自分类Dev

在python中将点云划分为象限

来自分类Dev

将图划分为三顶点图,以使边的权重之和最小

来自分类Dev

将数组划分为k个或更少的子部分,以最小化每个部分的最大和

来自分类Dev

如何将正负数列表划分为总和为0的最大子集?

来自分类Dev

将数组划分为k个或更少的子部分,以最小化每个部分的最大和

来自分类Dev

C - 将数组划分为线程并使用并行性找到最大数量

来自分类Dev

如何将间隔[开始,结束]分为相等距离的n个点?

来自分类Dev

将字符向量划分为段

来自分类Dev

将矩阵划分为块矩阵

来自分类Dev

SQL将数据划分为行

来自分类Dev

将任务划分为线程-多线程

来自分类Dev

将日期范围划分为相应的星期

来自分类Dev

将子元素划分为子部分

来自分类Dev

将图划分为2组顶点

来自分类Dev

angularjs将内容划分为不同的段落

来自分类Dev

将数组划分为几乎相等的总和

来自分类Dev

将聊天数据划分为会话

来自分类Dev

将聊天数据划分为会话

来自分类Dev

将聊天数据划分为会话

来自分类Dev

将聊天数据划分为会话

来自分类Dev

将行划分为不同的部分

来自分类Dev

将字符向量划分为段