最小集合覆盖
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最小集合覆盖
最小集合覆盖的启发式算法
摘要
本文给出了一种求解集合覆盖问题的新的启发式算法,对该算法的合理性、时间复杂性以及解的精度进行了分析。
主要创新点是用完备策略建立启发式算法。
该方法具有一定的普遍性、可行性,可以应用到其他的NP困难问题。
关键词:最小集合覆盖;启发式算法;完备策略;NP困难问题
集合覆盖问题是NP困难问题中具有代表性的问题之一,它在模式识别、机器学习等领域中具有重要的应用。
目前已有许多比较有效的启发式算法,但由于问题本身固有的难度,这些启发式算法具有各种的缺陷,本文提出的启发式算法由多个启发式策略组成,同时考虑到计算复杂度,具有一定的效果。
1 相关概念和完备策略
最小集合覆盖问题:S是一个集合,S1,S2,…,Sm是S的子集,且构成S的覆盖,即?Si=S,求最小覆盖。
例1 设S={0,1,2,3,4,5,6,7,8,9};S1={0,1,2,3,4};
S2={0,1, 5,6,7};S3={3,4,5,6,7};S4={5,6,7,9};
S5={2,8,9};S6={1,3,5,7};S7={0,4,6,8};
S8={0,3,6};S9={1,4,7}
定义1 设 NPH(NP-hard)是一个给定的 NP困难问题(例如,集合覆盖问题,TSP等),ST是一个求解NPH的策略,如果ST的前提条件的验证以及策略的操作者都可以在多项式时间内完成,则称ST为多项式时间策略。
一般的启发式策略都是多项式时间策略,例如,集合覆盖问题,选取最大基数的集合作为覆盖中的一员;对TSP来说,选择最邻近的点构成回路等都是多项式策略。
定义2 NPH是一个NP困难问题,ST是求解NPH的一个多项式时间策略,NPHO 是NPH 经过ST操作后得到的一个新的问题,如果问题NPHO的规模比问题NPH 小,并且NPHO的最优解都是NPH的最优化解,则称ST为完备策略。
通俗地讲,一个完备策略是,当问题满足策略条件时,把原闸题化简成更
易解的问题,并且新问题的最优化解都是原问题的最优化解,即保留一些最优化解的策略。
在求解NP困难问题时,用完备策略既能降低问题的求解难度,又能保留最优解,所以它是求解NP困难问题的最重要的策略(如果有的话)。
因此用启发式算法求解NP困难问题时,我们首先应该考虐寻找完备策略。
集合覆盖问题的完备策略:
完备策略1 如果S1,S2,…,Sm中一个集合Si=S,则选择Si作为最优覆盖中的唯一一个集合Si。
完备策略2 如果存在x?S,x只属于S1,S2,…,Sm中的一个集合Si,则选择Si作为最优化中的一个集合Si。
完备策略3 如果Si?Sj,则排出Si。
完备策略4 Sn(x)表示包含x?S集合的序号组成的集合,即Sn(x)=|x?S|,如果Sn(x) ?Sn(y),则删除S中的元素y.
下表给出了例1的特征矩阵A,元素aij=1表示第i个集合S的元素在子集Sj 中出现,aij=0表示没有出现:
表1 例1的特征矩阵
S1 S2 S3 S4 S5 S6 S7 S8 S9
(0) 1 1 0 0 0 0 1 1 0
(1) 1 1 0 0 0 1 0 0 1
(2) 1 0 0 0 1 0 0 0 0
(3) 1 0 1 0 0 1 0 1 0
(4) 1 0 1 0 0 0 1 0 1
(5) 0 1 1 1 0 1 0 0 0
(6) 0 1 1 1 0 0 1 1 0
(7) 0 1 1 1 0 1 0 0 1
(8) 0 0 0 0 1 0 1 0 0
(9) 0 0 0 1 1 0 0 0 0
|Si| 5 5 5 4 3 4 4 3 3
不难看出以上四个策略都是多项式时间策略,下面依次来证明四个策略满足定义2。
策略1显然满足定义2.
考虑策略2,当问题的实例满足策略2的条件时,即存在x?S只属于覆盖中的一个集合,不妨设x?S1,则S1一定在任何覆盖中(否则不能形成一个覆盖),于是S1属于任何一个最优化覆盖中,这就是说,选择S1之后求解难度降低了,但还保留着所有最优化覆盖,故策略2是完备策略。
考虑策略3,问题的实例满足策略3的条件时,即存在两个集合Si,Sj满足Si?Sj,如果一个最优覆盖含有Si之后,则在覆盖中用Sj来代替Si后仍然是一个最优化覆盖,故排出Si之后问题的难度降低了,但不增加最优化覆盖,因此策略3是完备策略。
考虑策略4,问题的实例满足策略4的条件时,即存在两个集合Sn(x),Sn(y)满足Sn(x) ?Sn(y),则包含x的集合都包含了y,所以覆盖x的任何一个覆盖总能
覆盖y,于是删除S中的元素y之后问题的难度降低了,但并增加最优化覆盖,因此策略4是完备策略。
2 启发式算法
在上节中给出了四个完备策略,在这一节中我们给出基于完备策略的启发函数算法。
初值,COVER={Φ},COVER0={S1,S2,…,Sm};
第一步:如果S1,S2,…,Sm中的一个集合Si=S,则COVER=COVER+{Si},停止。
第二步:如果存在x?S,x只属于S1,S2,…,Sm中的一个集合Si,则
COVER=COVER+{Si},COVER0=COVER0-{Si},S=S-{Si}。
第三步:如果存在两个集合Si?Sj,则COVER0=COVER0-{Si}。
第四步:如果存在两个元素x,y?S,满足Sn(x) ?Sn(y),则S=S-{y}。
第五步:如果上述四个条件都不满足,则选择一个基数最大的集合Si,COVER=COVER+{Si},COVER0=COVER0-{Si},S=S-{Si},返回第一步。
下面以例1的数据为例来详细说明本算法的求解过程。
第一步:不满足完备策略1、2、3,现在看是否满足策略4,现列出包含每个元素的集合序列:
Sn(0)=S1 S2 S7 S8 Sn(1)=S1 S2 S6 Sn(2)=S1 S5
Sn(3)=S1 S3 S6 S8 Sn(4)=S1 S3 S7 S9 Sn(5)=S2 S3 S4 S6
Sn(6)= S2 S3 S4 S6 S7 S8 Sn(7)=S2 S3 S4 S6 S9
Sn(8)=S5 S7 Sn(9)=S4 S5
由上可知存在两个元素5、7?S,满足Sn(5) ?Sn(7),故S=S-{7}= {0、1、2、3、4、5、6、8、9}。
删除元素7后的集合序列变为:
S1={0,1,2,3,4}; S2={0,1, 5,6};S3={3,4,5,6};
S4={5,6,9};S5={2,8,9};S6={1,3,5};S7={0,4,6,8};
S8={0,3,6};S9={1,4}
第二步:不满足完备策略1、2,但满足完备策略3,即存在两个集合 S9?S1,故COVER0=COVER0-{S9},即COVER0={S1 S2 S3 S4 S5 S6S 7S8}。
第三步:四个完备策略都不满足,所以选择基数最大的集合,在第二步删除元素7和S9后每个集合的基数变为:
?S1?=5 ?S2?=4 ?S3?=4 ?S4?=3
?S5?=3 ?S6?=3 ?S7?=4 ?S8?=3
由上可知基数最大的集合为S1,COVER=COVER+{S1},COVER0=COVER0-{S1},S=S-S1,即COVER={S1},COVER0={S2 S3 S4 S5 S6
S7 S8},S={5、6、8、9}。
将S2,S3,…,Sm中与S1中重复的元素删除掉后的结果为:
S2={5,6},S3={5,6},S4={5,6,9},
S5={8,9},S6={5},S7={6,8},S8={6}。
第四步:不满足完备策略1、2,但满足完备策略3,即由第三步结果可知,
S2、S3、S6、S8?S4,故COVER0=COVER0-{S2,S3,S6,S8},即COVER0= {S4,S5,S7}。
第五步:满足策略2,即元素5只属于集合S4,故COVER=COVER+{S4},COVER0=COVER0-{S4},S=S-{S4},即COVER={S1 S4},COVER0= {S5,S7},
S={8},将S5,S7中与S4中重复的元素删除掉后的结果为:S5={8},S7={8}。
第六步:由上一步结果可知只有元素8和包含该元素的两个集合S5,S7,故COVER=COVER+{S5},停止,最后得到的最小覆盖是S1,S4,S5,不难看出S1,S4,S5是例1的一个最优解。
3 算法的计算复杂性与解的精度估计
下面分析本文算法的计算复杂性:
N和M分别表示集合S的基数与集合的个数
1)完备策略 1的计算复杂性为 O(NM)(
2)完备策略 2的计算复杂性为 O(NM)(
23)完备策略 3的计算复杂性为 O(NM)(
24)完备策略4的计算复杂-睦为 O(NM)(
5)“贪心”策略的计算复杂性为 O(NM)(
因此本算法的计算复杂性上界为
222T(N,M)?(O(NM)+O(NM)+O(NM)+ O(NM)(N+M) ?O(NM(N+M))
4 总结
本文以一个特定的例子详细讲解了求一个集合最小覆盖的启发式算法,
算法的核心思想就是循环不断的对集合进行扫描,判断是否符合完备策略,然后根据完备策略的要求选出最小覆盖的集合,从而最终得到一个最优解。
参考文献
[1] 李国杰(人工智能的计算复杂性研究[J](模式识别与人工智能,1992 [2] 姜成志,金光浩(集合覆盖问题的一种启发式算法[J](黑龙江矿业学院学报,1997
[3] 洪炳熔,叶风(集合覆盖问题的启发函数算法[J](软件学报,1998 [4] 陈端兵,黄文奇(一种求解集合覆盖问题的启发式算法[J](计算机科学,2007
[5] 周海岩(最优集合覆盖的一种启发式算法[J](忻州师范专科学校学报,2000 [6] 宋晓晨(集合覆盖问题的遗传算法求解方法[J](黑龙江工程学院学报,2007。