3

你好,我正在处理以下问题。

给定一个大小为 M x N 且系数为正的矩阵。目标是选择 P 列,以使生成的 M x P 矩阵的每一行中所有元素的最大总和最小化。例如,如果 M = 3,N = 5,P = 2,矩阵由下式给出

a 11 a 12 a 13 a 14 a 15
a 21 a 22 a 23 a 24 a 25
a 31 a 32 a 33 `a 34 a 35

最佳解决方案是选择“第 2 列和第 4 列,得到的矩阵由下式给出

12 14 22 24 32 34 _ _
_ _ _ _

并且值 max{a 12 + a 14 , a 22 + a 24 , a 32 + a 34 } 在 P 列的所有选择中最小。

由于有 (N over P) 解决方案,因此可以实现一种简单的指数算法来解决这个问题,但是有没有更快的多项式时间解决方案呢?

或者,如果没有,任何人都可以肯定地证明这是一个 NP-hard 问题吗?你知道任何类似的 NP-hard 问题可以简化为这个问题吗?

4

1 回答 1

5

我相信这是 NP-hard 因为如果你能解决你的问题,那么你就可以解决minimum vertex cover

证明草图

方法是定义一个矩阵,每个顶点有一列,每条边有一行。

在第 j 行,对应于顶点 x 和 y 之间的一条边,将每个元素置为 0,除了在 x 和 y 列放置 1。

如果我们可以选择 P 列使得行和的最大值 <= 1,那么我们知道剩余的列对应于原始图的一个顶点覆盖。

(行总和 <= 1 意味着选择的 P 列最多只能包含 x 和 y 中的 1 个,因此我们的顶点覆盖中必须至少包含 x 和 y 中的 1 个。)

通过使用二分法,我们可以计算出最大的 P ,从而推导出最小顶点覆盖的大小。

于 2013-10-13T18:17:31.450 回答