测试封面的整数线性规划公式?

时间:2012-04-10 20:56:44

标签: linear-programming

测试封面问题可以定义如下:

假设我们有一组n疾病和一组m测试我们可以检查症状。我们还给出了以下内容:

  • n x n矩阵A其中A[i][j]是二进制值,表示对患者进行j测试的结果i疾病(1表示阳性结果,0表示阴性);
  • 运行测试的费用jc_j;那
  • 任何患者都会患上一种疾病

任务是找到一组能够以最低成本唯一识别每种n疾病的测试。


此问题可以表示为整数线性程序,我们希望最小化目标函数\sum_{j=1}^{m} c_j x_j,如果我们选择在集合中包含测试x_j,则j = 1 ,否则为0。

我的问题是:

  

这个问题的线性约束是什么?

顺便说一句,我认为这个问题是NP难的(一般是整数线性规划)。

2 个答案:

答案 0 :(得分:0)

如果我是正确的,你只需要确保

\sum_j x_j.A_ij >= 1 forall i

答案 1 :(得分:-1)

T成为删除所有j的{​​{1}} Aj所产生的矩阵,使x_j = 0。

然后选择一组能够唯一区分任何两种疾病的测试,相当于确保T的每一行都是唯一的。

当且仅当k适用于所有l时,请注意两行(T[k][j] XOR T[l][j]) = 0j相同。

所以,我们想要的约束是

  

\sum_{j=1}^{m} x_j(A[k][j] XOR A[l][j]) >= 1

     

适用于所有1 <= k <= m1 <= l <= 1k != l

请注意,上述约束是线性的,因为我们可以预先计算系数(A[k][j] XOR A[l][j])