我想找到给定基数 k 的 S ,最大化每个点与给定集合 A 之间的最小距离。是否有一个简单的算法来找到这个max-min问题的解决方案?
Given a universe X ⊆ R^d and A ⊆ X,
find the argmax_{S⊆X, |S|=k} min_{s⊆S, s'≠s ⊆ S∪A} distance(s,s')
谢谢!
答案 0 :(得分:3)
对于给定的k,其中X和A作为输入,暴力强制显然在P中(因为C(| X |,k)是| X |中的多项式。)
如果k也是输入,那么它可能取决于“距离”:
如果'距离'是任意的,那么你的问题相当于在图中找到一个固定大小的团(这是NP完全的):
NP-Hardness :
获取clique问题的一个实例,即图(G,E)和整数k。 添加到此图中的顶点'a'连接到每个其他顶点,让(G',E')成为修改后的图形。
(G',E')k + 1则是第一个clique问题实例的等效实例。
创建一个从G'到R ^ d的地图Phi(无论如何都可以在N上映射G')并定义'距离',使距离(Phi(c),Phi(d'))= 1 (c,d)⊆E',否则为0。
X = Phi(G'),A = Phi({a}),k + 1为您提供问题的实例。
你可以注意到,通过构造s≠Phi(a)< =>距离(s,Phi(A))= 1 =最大距离(。,。),即min_ {s⊆S,s'≠s⊆S∪A}距离(s,s')= min_ {s⊆S,如果| S |,s'≠s S}距离(s,s') = k> = 2
解决你的问题的这个实例(X,A,k + 1):这给你一个基数k + 1的集合S,使得min(距离(s,s')| s,s'⊆S,s ≠s')是最大的。
检查是否有s,s'⊆S,s≠s',距离(s,s')= 0(这可以用k ^ 2作为| S | = k):
这解决了多项式简化问题,相当于集团问题(称为NP-hard)。
NP-Easiness :
让X,A,k成为你问题的一个实例。
对于X min_ {s⊆S,s'≠s⊆S∪A}的任何子集S,距离(s,s')只能取{distance(x,y),x,y⊆X}中的值 - 它有一个多项式基数 - 。
要找到一个最大化此距离的集合,我们将按递减顺序测试正确集合的每个可能距离。
为了测试距离d,我们首先将X缩小为X',仅包含距离> = d的点{A点}本身}。
然后我们创建一个图形(X',E)¤其中(s,s')⊆Eiff距离(s,s')> = d。
测试这个图的k-clique(它是NP-easy),通过构造有一个iff,那里它的顶点S是一个具有min_ {s⊆S,s'≠s⊆S∪A}距离的集合(s ,s')> = d
如果'距离'是欧几里德或有任何有趣的财产,它可能在P中,我不知道,但如果我是你,我不会希望太多。
¤我认为X(因此X')在这里是有限的
答案 1 :(得分:1)
这可能是NP难的。贪婪地选择离以前选择最远的点是2近似。 根据Arora和Mitchell的Euclidean TSP方案,可能存在一个复杂的低d近似方案。对于d = 10,请忘记它。
答案 2 :(得分:1)
搜索sphere packing np complete
的前2个结果显示了对1981年论文的引用,证明在2d中的最佳包装和覆盖是完整的。我无法访问研究图书馆,因此无法阅读该论文。但是我希望你的问题可以改写为那个问题,在这种情况下你可以证明你有一个NP完全问题。