Linear programming 测试覆盖的整数线性规划公式?

Linear programming 测试覆盖的整数线性规划公式?,linear-programming,Linear Programming,测试覆盖问题可定义如下: 假设我们有一组n疾病和一组m测试可以检查症状。我们还得到以下信息: Anxn矩阵A其中A[i][j]是一个二进制值,表示对患有ith疾病的患者进行jth测试的结果(1表示阳性结果,0表示阴性) 运行测试的成本j,c_j;那 任何病人只会有一种疾病 这项任务是找到一组测试,能够以最低的成本唯一地识别每种n疾病 这个问题可以表述为一个整数线性规划,其中我们希望最小化目标函数\sum{j=1}^{m}c\u j x\u j,其中x\u j=1,如果我们选择在我们的集合中

测试覆盖问题可定义如下:

假设我们有一组
n
疾病和一组
m
测试可以检查症状。我们还得到以下信息:

  • A
    n
    x
    n
    矩阵
    A
    其中
    A[i][j]
    是一个二进制值,表示对患有
    i
    th疾病的患者进行
    j
    th测试的结果(1表示阳性结果,0表示阴性)
  • 运行测试的成本
    j
    c_j
    ;那
  • 任何病人只会有一种疾病
这项任务是找到一组测试,能够以最低的成本唯一地识别每种
n
疾病


这个问题可以表述为一个整数线性规划,其中我们希望最小化目标函数
\sum{j=1}^{m}c\u j x\u j
,其中
x\u j
=1,如果我们选择在我们的集合中包含test
j
,否则为0

我的问题是:

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


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

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

\sum_j x_j.A_ij >= 1 forall i

假设
T
是删除所有
j
j
第列
A
后得到的矩阵,从而
x_j
=0

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

观察两行
k
l
是相同的当且仅当所有
j
(T[k][j]XOR T[l][j])=0

因此,我们想要的约束是

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


对于所有
1,但如果任何x_j=0,则总和为0。所以这些限制迫使我们选择每一个测试,当然这不可能是正确的。。。除非我误解了你的答案。不是真的,如果A
x\j.A\ij
是1,那么总和至少是1,这就是你想要的。啊,现在我明白你的意思了。但是,这仍然是不正确的。考虑这样的情况,我们有两种疾病,D1和D2,以及两种测试,T1和T2,使得D1和D2均为T1阳性,T2为阴性。那么选择x_1=1和x_2=0满足了你的约束条件,但我们无法区分这两种疾病