【发布时间】:2021-02-08 13:32:59
【问题描述】:
我有一个大小为 n 的点数组,称为 A,还有一个大小为 O(k)>k 的候选数组,称为 S。我想在 S 中找到 k 个点,使得到 A 的点的距离平方和从 k 个点到它们最近的点将被最小化。一种方法是检查 S 中任何可能的 k 点的成本并取最小值,但这需要 O(k^k*n) 时间,有没有更有效的方法来做到这一点?
我需要一个最优解或一个常数近似值。
我需要这个的原因是我试图尽可能快地找到 k-means 的常数近似值,然后将其用于核心集构造(核心集 = 数据最小化,同时仍然保持任何查询的成本大约相同)。我能够证明,如果我们假设在最优聚类中每个聚类都有 omega(n/k) 点,我们可以非常快速地创建一个大小为 O(k) 的候选者列表,其中包含 k 的 3 近似值-意思是,所以我想知道我们是否可以及时找到那些 k 点或它们的成本的常数近似值,这比穷举搜索要快。
k=2 的示例 在此示例中,S 是绿点,A 是红点。该算法应返回 S 中的 2 个圆圈点,因为它们最小化了从 A 的点到 2 的最近点的距离平方和。
【问题讨论】:
-
"和一个大小为 O(k)>k 的候选数组称为 S" 我假设你想写类似 "K > k" 而不是 "O(k) > k"
-
@Stef 我的意思是 K>k,但也是 K=O(k)。
-
@Elliott 不,它们是高维的。
-
您当前的公式意味着如果 A 中的所有
n点在 S 中具有相同的最近点,则 S 中的所有k-1其他点及其与 A 中的点的距离无关紧要,这是正确的吗? -
@tobias_k 最小化平方距离之和不同于最小化距离之和。是的,如果它们都具有相同的最近点而不是其他 k-1 点是任意的。