ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[做题笔记] 2-sat 问题的进阶应用

2022-02-19 09:33:49  阅读:200  来源: 互联网

标签:连边 进阶 inv 笔记 选取 tt 字典 col sat


对称性

考虑 \(\tt 2sat\) 边的意义是:如果选取了 \(i\) 则必须选取 \(j\),那么如果我们连边 \((i,j)\),我们都是也需要连边 \((inv(y),inv(x))\)(\(inv(x)\) 即表示变量 \(x\) 的逆),因为原命题和其逆否命题真假相同。

那么发现这样建出来的图具有某种对称性,此性质是 \(\tt 2sat\) 算法最重要的性质

解的构造

设 \(col_i\) 表示 \(i\) 所在强连通分量的拓扑序编号(编号小的拓扑序大),那么如果 \(col_i<col_{i+n}\) 我们选取 \(i\);否则我们选取 \(i+n\)

要证明上述构造是正确的,我们只需要证明被选取点不能到达没有未被选取的点。使用反证法,假设存在被选取点 \(x\) 和未被选取 \(y\),并且存在 \(x\rightarrow y\) 的路径,那么显然有 \(col_x\geq col_y\),同时根据对称性,存在一条 \(inv(y)\rightarrow inv(x)\) 的路径,所以有 \(col_{y+n}\geq col_{x+n}\)

根据选取的关系可以知道:\(col_x<col_{x+n},col_{y}>col_{y+n}\),所以可以推出 \(col_{x+n}>col_x\geq col_y>col_{y+n}\),但是这与 \(col_{y+n}>col_{x+n}\) 矛盾,反证法证毕。

特殊的边

这里有一个小 \(\tt trick\):如果 \(i\) 强制不能选取,那么可以连一条 \((i,inv(i))\) 的边,表示强制不能选 \(i\)

虽然这样连边不是对称的,但是用处还是很多:NOI2017 游戏

字典序最小的解

这种问题建议用直接 \(\tt dfs\) 的方法,也就是先搜字典序小的再搜索字典序大的。

这个问题也是可拓展的,既然是字典序问题就很容易和贪心产生联系:New Language

前后缀优化建图

本质思想还是建虚点来优化建图,连向这个虚点就代表了连向一个前缀\(/\)后缀。

如果你遇到要连向除一个点之外所有点的问题,那么可以拆成前缀与后缀的连边:Duff in Mafia

标签:连边,进阶,inv,笔记,选取,tt,字典,col,sat
来源: https://www.cnblogs.com/C202044zxy/p/15911892.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有