我在D维度量空间中有一组N个点。我想以这样的方式选择它们中的K,即子集中任意两点之间的最小距离是最大的。
例如,在3D欧几里德空间中N = 4且K = 3,解是四面体中具有最长短边的面。
有没有经典的方法来实现这一目标?它能在多项式时间内完全解决吗?
我尽可能多地使用Google搜索,但我还没想出如何调用此问题。
在我的情况下,N = 50,K = 10,典型地D = 300。
澄清:
蛮力方法是尝试N中K点的每个组合,并确定每个子集中最接近的对。解决方案由产生最长对的子集给出。
完成琐碎的方式,一个O(K ^ 2)过程,重复N! / K!(N-K)!次。
哼,10 ^ 2 50! / 10! 40! = 1027227817000答案 0 :(得分:1)
我认为您可能会发现有关单位磁盘图表的信息,但令人沮丧。例如,http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.3113&rep=rep1&type=pdf表示NP-complete中单位磁盘图上的最大独立集问题,即使磁盘表示已知。单位磁盘图是通过在平面中放置点并在每对点之间形成最多相距单位距离的链接而得到的图。
所以我认为如果你能在多项式时间内解决你的问题,你可以在单位磁盘图上运行不同的K值,直到你找到一个值,两个选择点之间的最小距离刚好超过一个,并且我认为这将是单位磁盘图上的最大独立集,它将在多项式时间内解决NP完全问题。
(即将跳上自行车,所以这有点匆忙,但在单位磁盘图上搜索论文可能至少会出现一些有用的搜索词)
这是尝试一点一点地解释它:
这是将这两个问题联系起来的另一种尝试。
对于最大独立集,请参阅http://en.wikipedia.org/wiki/Maximum_independent_set#Finding_maximum_independent_sets。这个决策问题的版本是“这个图中是否有K个顶点,没有两个边缘连接?”如果你能解决这个问题,你肯定可以找到一个最大的独立集合,通过向不同的K提出这个问题来找到最大的K,然后通过询问有关一个或多个节点的图形版本的问题找到K个节点。
我没有证据表明在单位磁盘图中找到最大独立集是NP完全的。另一个参考是http://web.sau.edu/lilliskevinm/wirelessbib/ClarkColbournJohnson.pdf。
您问题的决定版本是“在任何两点之间是否存在距离至少为D的K点?”同样,你可以在多项式时间内解决这个问题,如果你可以在多项式时间内解决你的原始问题 - 一直玩到找到最大的D给出答案是,然后删除点并看看会发生什么。
当两点之间的距离为1或更小时,单位磁盘图具有精确的边。因此,如果您可以解决原始问题的决策版本,只需设置D = 1并解决问题就可以解决单位磁盘图问题的决策版本。
所以我认为我构建了一系列链接,表明如果你能解决问题,你可以通过将问题转化为问题来解决NP完全问题,这会让我觉得你的问题很难解决。