Algorithm 找到k个彼此最远点的子集

Algorithm 找到k个彼此最远点的子集,algorithm,Algorithm,我有一组N个点(特别是这个点是二进制字符串),每个点都有一个离散的度量(汉明距离),因此给定两个点,I和j,Dij是第I点和第j点之间的距离。 我想找到k元素的子集(当然k2时,我怎么能推广这个问题呢? 有什么建议吗?这是一个NP难问题? 感谢您的回答一个概括是“找到k点,使任意两个k点之间的最小距离尽可能大” 不幸的是,我认为这很难,因为我认为如果你能有效地做到这一点,你就能有效地找到派系。假设有人给你一个距离矩阵,让你找到一个k-集团。创建另一个矩阵,其中条目1为原始矩阵的无穷大,条目100

我有一组N个点(特别是这个点是二进制字符串),每个点都有一个离散的度量(汉明距离),因此给定两个点,I和j,Dij是第I点和第j点之间的距离。 我想找到k元素的子集(当然k2时,我怎么能推广这个问题呢? 有什么建议吗?这是一个NP难问题?
感谢您的回答

一个概括是“找到k点,使任意两个k点之间的最小距离尽可能大”

不幸的是,我认为这很难,因为我认为如果你能有效地做到这一点,你就能有效地找到派系。假设有人给你一个距离矩阵,让你找到一个k-集团。创建另一个矩阵,其中条目1为原始矩阵的无穷大,条目1000000为原始矩阵的任何有限距离。现在,新矩阵中的一组k点,其中该组中任意两点之间的最小距离为1000000,对应于原始矩阵中相互连接的一组k点-一个团

这种构造没有考虑到点对应于位向量,它们之间的距离是汉明距离,但是我认为可以扩展它来处理这个问题。为了证明一个能够解决原始问题的程序可以用来寻找派系,我需要证明,给定一个邻接矩阵,我可以为每个点构造一个位向量,使得图中连接的点对,以及邻接矩阵中的1,彼此之间的距离大约为a,图中未连接的点对彼此之间的距离为B,其中A>B。请注意,A可能非常接近B。事实上,三角形不等式将迫使这种情况发生。一旦我展示了这一点,相互之间距离为A的所有k点(最小距离为A,距离之和为k(k-1)A/2)将对应于一个团,因此查找此类点的程序将查找团

为此,我将使用长度为kn(n-1)/2的位向量,其中k将随n增长,因此位向量的长度可以达到O(n^3)。我可以这样做,因为这仍然是n中唯一的多项式。我将每个位向量分成n(n-1)/2个字段,每个字段的长度为k,其中每个字段负责表示两点之间的连接或不连接。我声称存在一组长度为k的位向量,因此这些k长位向量之间的所有距离大致相同,只是其中两个比其他两个更接近。我还声称存在一组长度为k的位向量,因此它们之间的所有距离大致相同,只是其中两个比其他两个相距更远。通过在这两个不同的集合之间进行选择,并通过将更近或更远的一对分配给拥有位向量内n(n-1)/2场的当前位场的两个点,我可以创建具有所需距离模式的位向量集合

我认为这些是存在的,因为我认为有一种结构以很高的概率创建了这样的模式。创建长度为k的n个随机位向量。任何两个这样的位向量的期望汉明距离为k/2,方差为k/4,因此标准偏差为sqrt(k)/2。对于较大的k,我们期望不同的距离相当相似。要在此集合中创建两个非常接近的点,请将其中一个点复制到另一个点。要创建两个相距很远的点,请将其中一个点设为另一个点的“非”(其中一个点为0,另一个点为1,反之亦然)


给定任意两点,它们之间的预期距离为(n(n-1)/2-1)k/2+k(如果它们相距很远)和(n(n-1)/2-1)k/2(如果它们相距很近)我在没有证据的情况下宣称,通过使k足够大,预期的差异将战胜随机变化,我将得到我所需要的相当于A和相当于B的距离。

@mcdowella,我想我可能没有很好地解释我的问题。 在我的问题中,我有一个二进制字符串,对于它们中的每一个,我可以使用汉明距离计算到另一个的距离 这样我就得到了一个距离矩阵D,它在每个元素D(I,j)中都有一个有限值。 我可以像一个图一样看到这个距离矩阵:事实上,每一行都是图中的一个顶点,在列中我有连接顶点Vi和顶点Vj的弧的权重。 这个图表,出于我解释的原因,是完整的,它本身就是一个集团。 由于这个原因,如果我从原始图中随机选取k个顶点,我会得到一个同样完整的子图。 从所有可能的k阶子图中,我想选择一个最好的。 最好的是什么?是这样一个图:顶点之间的距离尽可能大,但也尽可能均匀。 假设我的子图中有两个顶点v1和v2,它们的距离是25,我还有另外三个顶点v3,v4,v5,这样 d(v1,v3)=24,d(v1,v4)=7,d(v2,v3)=5,d(v2,v4)=22,d(v1,v5)=14,d(v1,v5)=14

根据这些距离,v3距离v1太远,但非常接近v2,而v4的情况正好相反,距离v2太远,但接近v1。 相反,我更喜欢将顶点v5添加到我的子图中,因为它与其他两个顶点的距离更为均匀。 我希望现在我的问题清楚了。
你认为你的公式已经正确了吗?

我已经声明,找到k点的问题是