set cover problem
1.exhausitive search 穷举法(最笨但最简单):
先遍历一遍单个子集,看有无覆盖的。没有再组合两个子集看有无全覆盖的。没有再组合三个子集。。。
2. greedy search 贪心算法:(不一定是全局最优但堪用)
for si in S:
S-si ==u
delete si
break
for ki in S-si:
if S-si-ki == U:
delete ki
break
....直到不满足条件 输出子集个数
3. math formulation
将问题转成一个integer liner problem
然后再松弛成liner problem 进行求解。