- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
two-sat:2判定性问题研究
* * Two-sat By Szc Two-sat Two-sat即2判定性问题。 Two-sat是一种特殊的逻辑判断问题。 为了了解它的特殊性,我们先来看一道经典例题 Poi 0106 Peaceful Commission [和平委员会] 某国有n个党派,每个党派在议会中恰有2个代表。 现在要成立和平委员会 ,该会满足: 每个党派在和平委员会中有且只有一个代表 如果某两个代表不和,则他们不能都属于委员会 代表的编号从1到2n,编号为2a-1、2a的代表属于第a个党派 输入n(党派数),m(不友好对数)及m对两两不和的代表编号 (1≤n≤8000,0≤m ≤20000 ) 问是否能找到一种方案创立和平委员会。 定义Ai表示第i个党派的一位代表,Bi表示这一党派的另一代表(Ai,Bi只是相对而言,不直接表示某位代表)。 构图,每位代表做一个节点,如图 1 3 2 4 5 6 7 8 若某Ai与Aj代表之间不和,则在AiBj之间连一条有向边(Ai-Bj),AjBi之间连一条有向边(Aj-Bi)。如图,若1与4不和,2与3不和,3与7不和,则: 1 3 2 4 5 6 7 8 观察,这个图有什么特点? 图的边都是对称的! (这里所说的对称指若有Ai-Bj,必定有Bi-Aj) 1 3 2 4 5 6 7 8 当然,如果直接在图中枚举每一对未被选择的点并进行推导,效果就和DFS一样了。 那为什么要构图呢? 因为题目的特点和刚开始的构图方式,导致了图中边都是对称的。这个结论在接下来的证明中将会有重要作用。 还是这个图 发现,1,3成圈,2,4成圈。根据最开始的定义,1,3如果选择了其中一个,就必须选择另一个,2,4同理。 缩圈后,重新构图,如右。 (S与S’的关系等同于A与B) 新图与原图是等价的! 1 3 2 4 5 6 7 8 S1 S1 S2 S2 S3 S3 新算法:把圈缩为点,构建出一个与原图等价的有向无环图,然后进行枚举。 这个算法的实现方法很简单 求强连通分量(即将圈缩为点) 判断是不是有某个Ai与Bi同时处于一个强连通分量内,如果有即无解 对新图进行拓扑排序,然后再进行选择即可找出一组解。 之前提到,原图中 的边都是对称的。 显然,在原图中如果有Ai-Aj,Aj-Ak,必定会有Bk-Bj,Bj-Bi。同时这也等价于Ai-Ak,Bk-Bi(结论1) 1 3 2 4 5 6 7 8 由于对称性,原图中如果存在Ai,Aj属于同一个环,那么Bi,Bj也属于同一个环。 根据之前的结论,可以证明每个环分别对称。 Ai Aj Bi Bj 由于原图中的环都是对称的,并且剩余的边也是对称的,我们不难证明,新图也具有结论1的性质。 我们可以得到一般的情况 可以得出一个新的结论:Si的所有后继节点与Si’所有前驱节点对称(结论2) 接下来就可以证明算法的正确性,即如果任意一对Ai,Bi都不在同一圈内问题必定有解。 如果选择Si,那么对于所有Si- Sj,Sj都必须被选择。 而Si‘ 必定不可选,这样Si’的所有前驱节点也必定不可选。由结论2可以证明,这样的操作必定不会导致矛盾。 每次找到一个未被确定的Si并且不存在Si-Si’,选择Si及其后代节点并使得Si’及Si’的所有前驱节点不可选。一定可以构造出一组可行解。 如果直接每次都朴素寻找Si,算法会达到一个相当高的时间复杂度,所以我们需要拓扑排序。拓扑排序之后就可以直接进行选择了。 到这里,Two-sat的基本算法就结束了。 总结: 解题的时候要充分利用上题目的某些特殊性质。挖掘出题目的特殊性质之后要充分利用,这样才能算真正的解出题目。 * * * *
文档评论(0)