2-sat问题学习记录
如果你不知道什么是sat问题,请看以下问答.
Q:sat问题是什麽?
A:首先你有n个布尔变量,然后你有一个关于这n个布尔变量的布尔表达式,问你,如果让你随意给这n个布尔变量赋值,这个布尔表达式能否成立.
Q:k-sat是什麽意思?
A:把sat问题中的布尔表达式不断进行转化,直到变为一个由与连接的若干个[由或连接的若干个(布尔变量或被非运算了的布尔变量)],那么所有的[]中()的数量的最大值为k.
Q:怎么转化布尔表达式?
A:按照 !(a||b) -> (!a)&&(!b) , !(a&&b) -> (!a)||(!b) , (a&&b)||c -> (c||a)&&(c||b) 的法则来转化.
Q:为什么k>2的时候的k-sat问题是NPC问题?
A:我也不知道啊……
现在,你已经知道了什么是sat问题,那什么是2-sat问题呢?
结合以上定义,朴素地说,就是,你有n个布尔变量,并且对于这n个布尔变量,你有若干个二元或者一元限制,问你能否给这n个布尔变量赋值,使得所有的限制满足.
对于2-sat问题,有时候我们不仅仅要问能否成立,还要询问方案,而现在解决2-sat相关问题的流行做法,就是建图.
建图的话,就是把每个布尔变量拆成两个点,一个表示true,一个表示false,并且按照要求的限制,在这些点中连有向边,a->b表示若a则b.
当限制为一元的时候,就是确定了某个布尔变量的值,这个时候,对于这个布尔变量在图上的两个点,假设确定的值对应的点为a,另一个点为b,那我们连b->a.
当限制为二元的时候,就是两个布尔变量之间的限制,所以这两个布尔变量要相互连边.
当建完图之后,我们可以采取dfs或者Tarjan,来进行相关操作.
具体建图与操作还有很多……
有关sat问题的更多信息:
https://blog.csdn.net/seaskying/article/details/51726217
有关2-sat问题的相关操作的更多信息:
https://wenku.baidu.com/view/afd6c436a32d7375a41780f2.html
https://wenku.baidu.com/view/0f96c3daa58da0116c1749bc.html
https://www.cnblogs.com/-ZZB-/p/6635483.html
有关建图的更多信息:
COGS 313. [POI2001] 和平委员会
bzoj 2199: [Usaco2011 Jan]奶牛议会
bzoj 1997: [Hnoi2010]Planar
UOJ #210.【UER #6】寻找罪犯
LOJ #6036.「雅礼集训 2017 Day4」编码
2-sat问题学习记录的更多相关文章
- git原理学习记录:从基本指令到背后原理,实现一个简单的git
一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 git,于是就有了下面这篇学习记录. 本文的叙述思路参照了官方文档Book的原理介绍部分 ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
- UWP学习记录11-设计和UI
UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...
- UWP学习记录10-设计和UI之控件和模式7
UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...
- UWP学习记录9-设计和UI之控件和模式6
UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...
- UWP学习记录8-设计和UI之控件和模式5
UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...
- UWP学习记录7-设计和UI之控件和模式4
UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...
随机推荐
- 母版页 MasterPage
母版页是一个扩展名为.master的ASP.NET文件,主要是为了应用程序创建统一的用户功能界面和样式. ContentPlaceHolder控件只能在母版页中使用,在平常的web页面使用,会发生解析 ...
- HWI的安装
一.安装的过程 hwi的安装过程: 1.解压src源码包:tar -zvxf apache-hive-1.2.2-src.tar.gz 2.进到HWI目录下:cd /home/bigdata/apac ...
- 会声会影2018提示dll文件丢失怎么办?
一些会声会影2018用户,在安装.使用软件的过程中,会出现dll缺失的提示,导致软件无法打开,那么,出现这一问题要怎么解决.接下来小编为大家具体介绍下两种解决方法. 图1:dll丢失提示 打开会声会影 ...
- 直线石子合并(区间DP)
石子合并 时间限制:1000 ms | 内存限制:65535 KB 描述有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费 ...
- Beta发布——视频博客
1.视频链接 视频上传至优酷自频道,地址链接:http://v.youku.com/v_show/id_XMzkzNzAxNDk2OA==.html?spm=a2hzp.8244740.0.0 2.视 ...
- 02慕课网《vue.js2.5入门》——Vue中的组件,实现todolist
TodoList功能开发 例子:输入字符,在列表中显示: 由于有v-for属性,<li>不会被渲染,它已经和数据绑定在一起,有数据来决定 input和button上都有事件监听器,inpu ...
- OpenCV学习笔记——图像平滑处理
1.blur 归一化滤波器Blurs an image using the normalized box filter.C++: void blur(InputArray src, OutputArr ...
- 静默调用ShellContextMenu 实现QQ文件共享
我在CSDN提问题一直没人回复,一下午时间自己终于解决了问题 http://bbs.csdn.net/topics/391916381 现将过程录下 先说需求,我想实现的功能是 在程序中对文件调用百度 ...
- 404 Note Found队——现场编程
目录 组员职责分工 github 的提交日志截图 程序运行截图 程序运行环境 GUI界面 基础功能实现 运行视频 LCG算法 过滤(降权)算法 算法思路 红黑树 附加功能一 背景 实现 附加功能二(迭 ...
- WebForm与MVC模式优缺点
Asp.net Web开发方式,分为两种: 1. WebForm开发 2. Asp.Net MVC开发 MVC是微软对外公布的第一个开源的表示层框架,MVC目的不是取代WebForm开发,只是web开 ...