有谁知道这是否是多项式可解的?

时间:2013-10-13 17:38:25

标签: algorithm matrix time-complexity np-hard

嗨,我正在处理以下问题。

给出一个大小为M x N且具有正系数的矩阵。目标是选择P列,使得得到的M×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列,结果矩阵由

给出

a 12 a 14
a 22 a 24
a 32 a 34

和值max {a 12 + a 14 22 + a 24 ,a <在P列的所有选项中,sub> 32 + a 34 }是最小的。

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

或者,如果没有,任何人都可以肯定地证明这是一个NP难题吗?你知道任何类似的NP难问题可能会减少到这个吗?

1 个答案:

答案 0 :(得分:5)

我认为这是NP难的,因为如果你能解决问题,那么你可以解决minimum vertex cover

证明草图

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

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

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

(行总和&lt; = 1表示所选择的P列最多只能包含x和y中的1个,因此我们的顶点覆盖中必须包含x和y中的至少1个。)

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