【学习笔记】2-SAT
适应性问题#
存在若干命题 ,以及若干形如 的 ,其中 为 或 其中一个。
要求是否存在一个命题的取值集合使得条件 均成立,其中每个条件最多包含 个命题,这样的问题称为 n-SAT 问题, 的情况已被证明为 NP-complete 问题。
图论建模#
考虑单个条件 ,这意味着 ,即如果其中一个命题不成立,那么为保证条件成立,另一命题必须成立。
考虑按照这种“逻辑推理”的方式连有向边,那么如果存在路径使得 可达 ,则 一定不成立,更进一步说,如果 和 在同一强连通分量中,则一定没有合法解。
这个过程用 Tarjan 来实现。
对于其他形式的条件,也可以建出模型,主要就是一个若 A 则 B 的连边过程。
而如果钦定 一定成立,实际就是 一定不成立,因此连边 即可。
由于命题与其逆否命题的真假性相同,我们若 A 则 B 的连边同样一定可以连出若非 B 则非 A 的连边。
求一组合法解#
在判断有解基础上,我们得到一个 DAG,而如果 成立,其必要条件是 不可达 ,换言之如果 对应强连通分量的拓扑序在 之后,则 本身一定成立。
考虑证明这样单独考虑后全局也是合法的,设已知拓扑序有 ,假设 可达 ,可知 ,由连边的对称性得 同样可达 ,于是 ,二者矛盾。故全局合法。
实际上不需要拓扑排序,因为我们本质是要知道是否可达,而如果存在强连通分量外的边 ,而 先弹出,则 所在强连通分量的编号更小,相当于反向拓扑。所以只需要判断 强连通分量编号是否比 小,如果是则取 ,反之取 。
例题#
Luogu-P5782 POI 2001 和平委员会#
模板题,直接建模即可。
Luogu-P3825 NOI 2017 游戏#
如果不存在 类型,则可以每个命题只有真与假,正常建模可以求出答案。
如果枚举钦定 类型的选取方案,复杂度是 ,不能通过。
注意到枚举选取方案是小题大做的,因为我们的处理范围是剩下两个选择,因此可以改为枚举不选那个,这样枚举不选 A 或不选 B 两种,对于单个来说就覆盖了三种选择情况,即可以覆盖所有可能,复杂度是 。
参考资料#
-
OI Wiki
作者:SoyTony
出处:https://www.cnblogs.com/SoyTony/p/Learning_Notes_about_2-Satisfiblity.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效