2

我不知道这是一个众所周知的问题还是可以简化为一个问题,但这是我最近几天以来一直在努力解决的问题。

令 X_1, X_2, X_3 .. X_n 为整数集。

在每个集合 X_i 中,我们有 m 个(对所有集合相等)元素 x_i,j:j = 1...m。

我的目标是从每个集合中选择一个元素,以使所有选定元素之间的成对差异之和最小。

我从一个稍微不同的问题开始,即最小化序列差异之和(即,从连续集合中选择的元素之间的差异之和)。DP 中的前向计算如下:

令 F(i, j) 为从集合 i 中选择元素 j 的成本。

F(i, j) = min_k F(i - 1, k) + |x(i-1,k) - x(i, j)|

也就是说,我们在前一个集合中选择第 k 个元素,然后评估在当前集合中选择第 j 个元素的成本。当前步骤的成本等于集合 i-1 中的第 k 个元素与集合 i 中的第 j 个元素之间的绝对差。

但是,我真正的问题并不取决于集合 X_1,... X_n 的顺序。从本质上讲,动态规划给了我一些东西,但正如我所说,这是一个相关但不同的问题,即从每个集合中找到元素的“链”,以使“串行”差异的总和最小化。

从基本分析来看,我看到这个问题的一个简单的解决方案是生成 n 个集合的所有排列,然后对每个排列使用动态规划来解决它。这是棘手的,但是当 n 足够小时 - 我们甚至可以采用这种愚蠢的穷举方法。

我无法弄清楚这个问题是否可以使用多项式算法来解决,或者是否可以将其简化为已知的 NP-hard/complete 问题之一,在这种情况下,我将通过对其建模来寻求近似算法作为一个二次程序。

请给我建议或指点我一些阅读材料。

谢谢。

[编辑 1]

为了方便讨论,这里添加一个例子:

X = [[11, 24, 38], [12, 21, 33], [13, 22], [15, 23]]

解决方案是 24、21、22、23(可能无关紧要,但我的 DP 给了我 11、12、13、15,我特别构建了这个示例以使我的 DP 失败。)。

[编辑 2]

我想这不是一个NP完全问题。我们可以从 DP 扩展的解决方案如下[不确定是否正确,但似乎是这样]:

该解决方案至少包含每组中的一个元素。

因此,让我们选择任何一组(最好是最小的,如果大小不同),然后将其从列表中删除。

让我们称它为 X\Xp,其中 Xp 是移除的集合。

现在对于 \Xp 中的每个元素 x,构造一个新集合 X' = X\Xp U {x}。

我们求解 DP m 次并计算目标函数(成对距离之和),然后我们可以从中选出最好的。

DP 本身需要 O(nm^2) 并且我们运行这个 m 次,所以我们有 O(nm^3)。

4

2 回答 2

1

这可以减少在加权图中找到最小权重团。不同集合中的任何两个节点的权重等于它们差异的绝对值。

于 2013-07-13T07:48:39.043 回答
1

我不认为这是 NP 完全的,因为我认为我们可以找到并识别最多 O(n^2m^2) 猜测的解决方案。

为了不担心平局,从整数到实数并添加非常少量的抖动。我认为这是随机的,但我认为您可以选择确定性抖动来达到相同的效果。

将问题想象为从布置在实线上的一组彩色点中进行选择,以便从每种颜色中选择一个点,并使它们之间的绝对差之和最小化。

我只考虑 n 是偶数的情况。解点集的中值出现在两个中心点之间。对于解集中的每个点,它与两个中心点之间没有相同颜色的点(或者我们可以改进解)。出于同样的原因,如果我们将其从解决方案集中移除,每个点都是该颜色与我们得到的 n-1 个点的中位数最近的点。

使用我们的 (nm)^2 猜测,我们猜测解集中两个中心点的身份。这让我们找到 n-2 个点,我们可以将可能性减少到每种颜色中的两个,即离这两个点两侧的两个中心点最近的点。

现在考虑通过从解集中删除一个点形成的中位数。如果我们删除的点位于两个中心点的右侧,则中位数是这两个点的左侧。如果我们删除的点在左侧,则中位数是这两个点的右侧。在解决方案集中,我们刚刚删除的点比该颜色的任何其他点更接近新中值,并且新中值是距离它的两个中心点中较远的一个。所以我们可以将它与其他相同颜色的候选区分开来——它是两者中最接近两个中心点中的另一个。

因此,通过最多 O(n^2*m^2) 的猜测,我们可以为每个 get 找到一个可能的解集,并从这些解集中选择目标最小的一个来获得全局最小值。每个猜测都需要一些工作——可能是 O(m),所以这很可能是一个 O(n^2m^3) 的完全幼稚的实现——也许主要是一种理论方法。

也许这好得令人难以置信,但我们能否将其转化为简单地检查数据中的每个点以及最接近它的其他颜色的点的证明?一个论点是,如果我们有两个点,并且我们可以将解决方案中的每个点识别为最接近两个点中的最远点,那么该点也必须最接近该点对中的另一个点。因此,猜测这对中的任何一个点并找到最接近它的点可能会起作用。这开始看起来很像 Evgeny Kluev 解决方案的证明

于 2013-07-14T11:54:55.670 回答