【问题标题】:Finding that maximal subset of items with a minimum distance between them?找到它们之间距离最小的最大项目子集?
【发布时间】:2017-08-30 07:30:02
【问题描述】:

我的问题和这个类似:Get largest Subset of Integers with certain minimum distance/difference

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

根据上面的链接,明显的贪心算法对于一维情况(整数之间的距离)是最优的。但是,我怀疑这是否适用于任意数量的维度。这似乎是一种可以简化为一些著名的计算机科学问题的问题,但如果是这样,我一直无法找到正确的关键字组合来识别它。我只找到了对一维案例的引用。

那么,这个问题是 NP 完全的吗?如果是这样,是否有一个好的启发式算法?如果没有,是否有一种快速算法可以优化求解?

(对于任何好奇的人来说,这个问题是在选择尽可能多的 DNA 测序条形码集的背景下产生的,这些条形码彼此之间的差异足够大,即使出现测序错误,它们仍然可以被区分。)

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

【问题讨论】:

  • 我认为您可以使用分而治之的策略(请参阅 Corman,算法)来查找距离阈值内的所有元素。然后你可以取那个集合的逆来找到你想要的组。
  • 我不明白分而治之的策略在这里如何发挥作用,除非阈值太低以至于很少有元素比指定的距离更近。在我的特定数据集中绝对不是这种情况。而且即使问题可以被分割成更小的问题,也绝对不会被无限分割,所以仍然需要解决一般问题。
  • 根据违规的常见程度,寻找在不再出现违规之前必须删除的最少点可能是有意义的。使用距离矩阵,您可以非常轻松地计算每个点的违规次数,这些违规次数可用于获取候选删除。
  • 这听起来确实可能会导致一个更简单的解决方案,它也让我意识到距离矩阵可以替换为相邻矩阵只有 1 表示相邻,0 表示不相邻。我已经编辑了我的问题。
  • @RyanThompson Idk 但从您编辑的部分来看,这与 NPC 的最大集团问题不一样吗?

标签: algorithm


【解决方案1】:

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

【讨论】:

  • 是的,这看起来相当于我的问题。谢谢!
猜你喜欢
  • 2014-04-20
  • 1970-01-01
  • 2020-04-08
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 2016-12-28
  • 1970-01-01
相关资源
最近更新 更多