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
xn
矩阵n
其中A
是一个二进制值,表示对患有A[i][j]
th疾病的患者进行i
th测试的结果(1表示阳性结果,0表示阴性)李>j
- 运行测试的成本
,j
;那c_j
- 任何病人只会有一种疾病
n
疾病
这个问题可以表述为一个整数线性规划,其中我们希望最小化目标函数
\sum{j=1}^{m}c\u j x\u j
,其中x\u j
=1,如果我们选择在我们的集合中包含testj
,否则为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。所以这些限制迫使我们选择每一个测试,当然这不可能是正确的。。。除非我误解了你的答案。不是真的,如果Ax\j.A\ij
是1,那么总和至少是1,这就是你想要的。啊,现在我明白你的意思了。但是,这仍然是不正确的。考虑这样的情况,我们有两种疾病,D1和D2,以及两种测试,T1和T2,使得D1和D2均为T1阳性,T2为阴性。那么选择x_1=1和x_2=0满足了你的约束条件,但我们无法区分这两种疾病