这种一看就很2的东西....


参考资料:

由对称性解2-sat问题

2-sat解法浅析


$SAT$理论:

$2-SAT$

两种形式:

$x \in \hat B$

$x \lor y(x,\ y \in B)$

对于第二种形式,$x \lor y\ =\ \neg(\neg x \land \neg y)$

增加有向边$(\neg x,y)\quad (\neg y,x)$

显然一个强连通分量中的点会被同时选择或不选

因此$b_i$和$\neg b_i$不能在同一个$SCC$中,我们通过求$SCC$就可以判断可行性了

由上可知这个图是对称的,表现:

$1.\quad$原图具有对称传递性 $x \rightarrow y$则$\neg y \rightarrow \neg x$

感觉好像逆否命题

$2.\quad SCC$对称

$3.\quad x$的后代对称于$\neg x$的前代

如何构造一组解?

$1.$求$SCC$,缩点边反向

$2.$记录每个原图的点$x$的$\neg x$,可以发现一个$SCC$只会有一个否定,因为图是对称的,$SCC$中所有点的否定的$SCC$是相同的

$3.$拓扑排序

$4.$选第一个未染色的点(这里指$SCC$),染白色,然后将否定点及其后代染黑色

$5.$重复上述过程直到染色完成

最后所有白色的点就是一组解

总体复杂度$O(n)$

$Naive$做法

求$SCC$的做法复杂度很优秀,但只能判断可行性和构造一组解

对于一些题目不能很好的处理

而$naive$做法就是选择一个没有赋值的变量,赋值为真,然后$dfs$下去,看看是否会冲突(一个点和否定点都为真)

这样就非常灵活了,因为选择一个变量的值的权力掌握在我们手上

复杂度最坏可能变为$O(nm)$

[2-SAT]【学习笔记】【未完】的更多相关文章

  1. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

  2. linux学习笔记---未完待续,缓慢更新

    做为linux菜鸟,由于work的需要,慢慢的开始接触学习linux. <鸟哥的linux私房菜>学习笔记. 一.基础命令操作 1.显示日期的命令 date 执行date命令后,显示结果为 ...

  3. jQuery 学习笔记(未完待续)

    一.jQuery概述    宗旨: Write Less, Do More.    基础知识:        1.符号$代替document.getElementById()函数        2.使 ...

  4. oracle-绑定变量学习笔记(未完待续)

    --定义变量SQL> var a number; --给绑定变量赋值SQL> exec :a :=123; PL/SQL procedure successfully completed. ...

  5. Scrapy 爬虫框架学习笔记(未完,持续更新)

    Scrapy 爬虫框架 Scrapy 是一个用 Python 写的 Crawler Framework .它使用 Twisted 这个异步网络库来处理网络通信. Scrapy 框架的主要架构 根据它官 ...

  6. Java学习笔记(未完待续)

    变量的作用域(scope)是指变量可以在程序中引用的范围.在方法中定义的变量称为局部变量(local variable).局部变量的作用域从声明变量的地方开始,直到包含该变量的块结束为止.局部变量都必 ...

  7. Greys学习笔记(未完待续)

    Greys介绍 greys-anatomy是一个Java线上诊断工具,取名来自美剧<实习医生格雷>,由菜鸟-杜琨同学开发维护.比我们常用的脚本工具btrace提供更多的功能,greys采用 ...

  8. c++课程学习(未完待续)

    关于c++课程学习 按照计划,我首先阅读谭浩强c++程序设计一书的ppt,发现第一章基本上都是很基础的东西. 同时,书中与班导师一样,推荐了使用visual c++. 而师爷的教程里面推荐使用的是ec ...

  9. HTML, CSS学习笔记(完整版)

    第一章 div布局 前几课内容 .htm是早期的后缀.由于那时仅仅能支持长度为3的后缀.因此html与htm是一样的. shtml是server先处理然后再交给浏览器处理 #HTML小知识#之#XHT ...

  10. JavaScript设计模式:读书笔记(未完)

    该篇随我读书的进度持续更新阅读书目:<JavaScript设计模式> 2016/3/30 2016/3/31 2016/4/8 2016/3/30: 模式是一种可复用的解决方案,可用于解决 ...

随机推荐

  1. java IO流、集合类部分小知识点总结

    在Java中,以下三个类经常用于处理数据流,下面介绍一下三个类的不同之处以及各自的用法. InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输 ...

  2. 基于VUE的九宫格抽奖功能

    HTML代码: <template> <div class="luckDraw"> <title-bar :title="title&quo ...

  3. 网站地图怎么做?dedecms网站地图制作方法听语音

    网站地图怎么生成?下面分享织梦dedecms系统网站地图的生成方式,怎么制作网站地图,方法很简单.下面介绍一下网站地图优化方法及制作方法. 工具/原料 一个网站 方法/步骤 第一步 登录网站后台 第二 ...

  4. PHP项目开发

    PHP项目开发 =================================== member:(用户表) userid username password name mobile emai a ...

  5. 获取select中的值

    分别使用javascript原生的方法和jquery方法<select id="test" name=""> <option value=&q ...

  6. 阿里巴巴Java开发手册评

    2016年底的时候阿里巴巴公开了其在内部使用的Java编程规范.随后进行了几次版本修订,目前的版本为v1.0.2版.下载地址可以在其官方社区-云栖社区https://yq.aliyun.com/art ...

  7. 读书笔记之《Java编程思想》

    17. 容器 Set 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素. Set接口不保证维护元素的次序 Map 映射表(关联数组)的基本思想是维护的是键-值(对)关联,因此可以用键来查找 ...

  8. 系列3|走进Node.js之多进程模型

    文:正龙(沪江网校Web前端工程师) 本文原创,转载请注明作者及出处 之前的文章"走进Node.js之HTTP实现分析"中,大家已经了解 Node.js 是如何处理 HTTP 请求 ...

  9. Docker镜像导致centos-root根分区容量爆满

    当虚拟机服务器运行Docker久了后,发现Docker的文件越来越大,某天发现此台机上的数据库访问不了了,再重启数据库等日志,提示空间不足,查看磁盘空间: root分区满载啊,前段时间还有不少空间的, ...

  10. 2018/1/28 每日一学 单源最短路的SPFA算法以及其他三大最短路算法比较总结

    刚刚AC的pj普及组第四题就是一种单源最短路. 我们知道当一个图存在负权边时像Dijkstra等算法便无法实现: 而Bellman-Ford算法的复杂度又过高O(V*E),SPFA算法便派上用场了. ...