首页 > 其他分享 >2-SAT

2-SAT

时间:2023-03-11 14:12:13浏览次数:28  
标签:le 限制 变量 neg 拓扑 SAT rightarrow

\(n\) 个 bool 变量,有 \(m\) 个限制,形如:“第 \(i\) 个变量的真假性为 \(s\),那么第 \(j\) 个变量的真假性需要为 \(t\)”,其中 \(i, j \in [1, n], s, t \in \{0, 1\}\)。求这些变量的一组合法取值,使得满足所有限制。

这里把限制简化为 \((\neg) i \rightarrow (\neg) j\)。建立 \(2n\) 个点,意义类似并查集。对应进行连边。注意对于限制,要给其逆否命题也连一条边。

我们做一个观察,首先对于能够到达的点,可以看成其直接相邻。然后考虑这样一个事实:如果 \(x \rightarrow \neg x\) 并且 \(\neg x \rightarrow x\) 那么 \(x\) 取 \(0, 1\) 都不对。这种情况是无解。如果 \(x \rightarrow \neg x\) 那么 \(x\) 只可以取 \(0\)。

于是我们想到按照拓扑序来搞。就是如果发现 \(x \rightarrow \neg x\) 那么令 \(x=0\)。\(x \rightarrow \neg x\) 说明一定 \(x\) 点的拓扑序在 \(\neg x\) 的前面,因此我们取拓扑序后面的那个点。

首先证明一下这个对所有图上的限制都不会违反。违反限制,也就是 \(x \rightsquigarrow y\) 满足 \(x\) 选了但是 \(y\) 没选。因为 \(x\) 的拓扑序在 \(y\) 前面,\(\neg x\) 在 \(\neg y\) 后面,所以如果选了 \(x\),那么 \(\neg y \le \neg x \le x \le y\),一定是 \(y\) 选了。

其次证明建出的图包含了所有限制。也就是说,如果不存在一条边使得起点满足并且终点不满足,那么就是合法的。通过真值表我们可以发现是对的,只有原命题和逆否命题有用。

于是我们只需要建图,kosaraju 判 scc 上有没有对边,然后拓扑排序即可。

标签:le,限制,变量,neg,拓扑,SAT,rightarrow
From: https://www.cnblogs.com/Zeardoe/p/17205935.html

相关文章

  • 【CF995F Cowmpany Cowmpensation】(dp+容斥)
    原题链接题意一棵\(n\)个节点的树,给每个节点分配工资(\([1,D]\)),子节点不能超过父亲节点的工资,问有多少种分配方案。$1\len\le3000$,$1\leD\le10^9$思......
  • Landsat数据在USGS中无法下载Surface Reflectance产品的解决方法
      本文介绍在USGS官网下载Landsat遥感影像数据时,出现报错信息,无法下载地表反射率产品(SurfaceReflectance)的解决办法。  最近,利用这篇文章批量下载Landsat遥感影像的......
  • 批量下载Landsat遥感影像的方法
      本文介绍在USGS网站批量下载Landsat系列遥感影像的方法。  首先,打开EarthExplorer的官网,首先完成注册与登录。  接下来,点击左侧“SearchCriteria”,首先选择研究......
  • Opensatack-问题
    1、创建虚拟机时报错'ascii'codeccan'tdecode(1)问题在/var/log/nova/nova-compute.log中报错:Unexpectedbuildfailure,notreschedulingbuild.:UnicodeDecodeE......
  • satoken实现登陆验证
    1.第一步导入依赖//Sa-Token权限认证,在线文档:https://sa-token.ccimplementation'cn.dev33:sa-token-spring-boot-starter:1.34.0'2.第二步配置文件server:......
  • 安装Gentoo报错“ All ebuilds that could satisfy "sys-kernel/linux-firmware" have
    问题:(chroot)livecd/#emerge--asksys-kernel/genkernel *IMPORTANT:9newsitemsneedreadingforrepository'gentoo'. *Useeselectnewsreadtoviewne......
  • AMD-Xilinx MPSoC的SATA的psgtr的配置
    问题在启动基于K26设计的扩展板时,遇到下列错误。[5.858755]ata1:SATAmaxUDMA/133mmio[mem0xfd0c0000-0xfd0c1fff]port0x100irq46[5.866665]ata2:......
  • 使用iTOP3588开发板SATA硬盘测试
    iTOP-3588开发板使用SATA硬盘时需要用到SATA线和电源线,注意:为防止烧坏的情况发生,板子请先断电再接上SATA硬盘。SATA线如下图所示:​​​​电源线如下图所示:​​​......
  • Satellite Photographs
       SatellitePhotographsFarmerJohnpurchasedsatellitephotosofWxHpixelsofhisfarm(1<=W<=80,1<=H<=1000)andwishestodeterminethelarges......
  • 2-SAT-学习笔记
    基本知识复习https://oi-wiki.org/graph/2-sat/模板【模板】2-SAT问题#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=2e6+5;......