【问题标题】:Given K sets of points, choose one point from each set such that the sum of pairwise distances between the selected points is minimized给定 K 组点,从每组中选择一个点,以使所选点之间的成对距离之和最小化
【发布时间】:2015-06-13 17:34:37
【问题描述】:

和这个问题很相似

Selecting an integer from each of the given n sets of integers such that the sum of their pairwise distances is minimized

除了整数之外,我们还有具有任意距离函数的多维特征向量来测量它们的相似性。

发布该问题的人声称他们找到了一个多项式时间解决方案来解决他们的问题,这似乎也适用于我的问题,但我无法理解他们的答案,也不清楚它是否真的正确.

我的问题也等同于这个问题,图的权重等于相似函数的输出。

max-weight k-clique in a complete k-partite graph

但目前还不清楚 k 部分是否比一般的最大权重集团问题更容易解决这个问题。

编辑:

从 David Eisenstat 的回答看来,原始问题在多项式时间内无法解决。但是,如果目标是最小化所选点之间的最大成对距离,会有什么变化吗?

【问题讨论】:

  • 也许我没有完全正确地理解这个问题,但这难道不能用两遍线性算法解决吗? 1)遍历所有集合中的所有点以计算所有点的质心,然后 2)对于每个集合,迭代集合中的所有点以找到与质心距离最小的点。似乎至少在二维情况下会起作用。也许在 3 维及以上维度上没有那么多 - 这有点难以可视化......
  • 考虑每个集合的第一个元素相同的情况。所以最好的解决方案是为每个集合选择第一个元素。但是这些集合包括一堆其他点,它们将质心拖离这个解决方案很远,所以离质心最近的点不是最好的解决方案。

标签: algorithm graph dynamic-programming


【解决方案1】:

另一个答案必须是使用整数的特定属性,因为这个版本是 NP 难的。给定 k 和一个无向图 G = (V, E),我们可以通过设点 V × {1, …, n} 并设置 d((v, i), (w , j)) = 1 如果 {v, w} ∈ E 和 i ≠ j,否则 d((v, i), (w, j)) = 2。每个集合由一些 i 的点 V × {i} 组成。

Evgeny Kluev 的本地搜索算法可能是一个合理的尝试。用随机点初始化一个解,然后重复执行以下操作。对于一些随机集合(或集合的集合),在其他集合的点保持不变的约束下确定最优解。重试整个计算几次以避免局部最小值。

【讨论】:

  • 好的,谢谢,这是有道理的。如果距离函数是欧几里得距离,你认为有什么变化吗?
  • @gokva 我必须查找度量嵌入的详细信息,但可能没有太大变化。有几个维度?可能有一个实用的近似方案。
  • 在我的设置中,“点”是二维多边形,可能有不同数量的顶点。为了比较它们,我可能会在固定大小的二维网格上用它们的距离函数值来表示多边形。所以“点”的维度是网格点的数量,可能很多。无赖。
  • 哦,另一件事,如果目标是最小化最大成对距离而不是最小化总和,您认为我们可以做得更好吗?
  • @gokva 不,减少真的只需要目标检测我们是否到处都是1。
猜你喜欢
  • 2021-10-24
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
相关资源
最近更新 更多