找到距离最小的项目的最大子集?

时间:2017-04-04 21:57:23

标签: algorithm

我的问题与此类似:Get largest Subset of Integers with certain minimum distance/difference

然而,在我的情况下,而不是可嵌入一维的整数之间的距离,我有一组任意元素和一个距离矩阵,它给出了从每个元素到另一个元素的距离。距离都是整数,它们满足distance metric的要求。给定指定的最小距离(例如3),目标是识别起始集的最大尺寸子集,使得子集中的每对元素具有至少指定阈值的距离。

根据上面的链接,明显的贪婪算法对于一维情况(整数之间的距离)是最佳的。但是,我怀疑是否存在任意数量的维度。这似乎是一种可以减少一些着名的计算机科学问题的问题,但如果是这样的话,我就无法找到正确的关键词组合来识别它。我只找到了对一维案例的引用。

那么,这个问题NP完全吗?如果是这样,是否有一个很好的启发式算法?如果没有,是否有最佳解决方案的快速算法?

(对于任何好奇的人来说,这个问题出现在选择尽可能大的DNA测序条形码的情况下,这些条形码彼此之间的差异甚至比测序错误仍然可以区分。)

编辑:现在我考虑一下,我们可以通过用0和1s矩阵替换距离矩阵来简化问题,其中1表示元素接近(距离小于阈值),0表示元素是不熟。然后我想目标是找到其邻接矩阵全为0的元素的最大大小子集。

1 个答案:

答案 0 :(得分:2)

我认为您需要的问题是https://en.wikipedia.org/wiki/Independent_set_%28graph_theory%29,这是NP完全的。如果你可以解决最小允许距离2的问题,那么你可以通过构造一个距离矩阵求解最大独立集,其中独立集合图中附近顶点之间的距离为1,这样就不允许它们在一起。

相关问题