【问题标题】:Finding the "tightest" subset in Euclidean space在欧几里得空间中寻找“最紧”的子集
【发布时间】:2012-07-18 12:56:35
【问题描述】:

我在点 x_1, x_2, ... x_n \in R^d 中给出。我希望找到 k 点的子集,使得这些 k 点之间的距离之和最小。天真地这是一个 O(n 选择 k) 问题,但我正在寻找一种更快的算法。

我可以想到两个替代的等效公式:

  1. 最小边权重团问题:将点视为一个图,边权重是距离,并找到最小权重团。 This is equivalent to maximal edge weight problem,已知是 NP 完全的。但是,我知道我的图表嵌入在 R^d 中,并且所有权重都是正数,所以这可能会有所帮助?

  2. 最小无约束子矩阵问题:给定对称距离矩阵,我想找到和最小的 kXk 次要。

我将不胜感激。

【问题讨论】:

    标签: cluster-analysis graph-theory mathematical-optimization euclidean-distance


    【解决方案1】:

    最明显的优化实际上并不需要任何不同的公式。

    首先贪婪地找到一个接近最佳的候选人。尝试通过交换成员在线性时间内对其进行细化。然后进行穷举搜索,但每当新候选者比贪婪候选者更差时停止以修剪搜索空间。

    例如

    1. 计算平均值
    2. 按距离均值的平方对对象进行排序
    3. 按此顺序测试所有长度为 k 的 n-k 个区间,选择最佳的
    4. 对于任何未选择的对象,如果可以提高分数,请尝试将其与已选择的对象之一交换

    现在您应该有一个相当不错的修剪候选对象了。

    然后进行彻底的搜索,只要比这个候选人差就停下来。

    注意:步骤 1-3 的灵感来自快速凸包算法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      相关资源
      最近更新 更多