首页 > 其他分享 >关于 2-SAT 的方案构造

关于 2-SAT 的方案构造

时间:2024-09-23 16:03:12浏览次数:11  
标签:方案 一个点 加入 neg 后代 构造 选过 SAT

基本思想是按某种顺序为每一对未确定的 \((a,\neg a)\) 确定一个合法的点并将其后代加入方案。如果本次选择了 \(a\),其合法等价于之后选到的 \(a\) 的后代不会同时包含某个点对\((b,\neg b)\)。其可以细分为:①之后选到的 \(a\) 的后代不包含先前已被加入到方案的点的反面,这里所说的一个点的反面指其所在点对的另一个点。② \(a\) 的后代不同时包含未被选过的点对(也不包含 \(\neg a\))。

在进行强连通分量缩点后,我们知道如果 \((a,\neg a)\) 存在于同个分量内,则一定无解。下面我们证明一个命题:只要没有 \((a,\neg a)\) 存在于同个分量内,就一定有解。之后的讨论都在没有 \((a,\neg a)\) 存在于同个分量内的情况下进行。

2-SAT 的构图是对称的,即如果存在 \(a\to b\) 的边,则必然存在 \(\neg b\to \neg a\) 的边。此处的边可以进一步泛化为可到达关系。因此有一个结论:当为 \((a,\neg a)\) 确定一个点加入方案的时候,不需要考虑这次选择可能会对先前已经被加入的点及其所在的点对造成的影响。即,当前的每一对未确定点对的点均满足①。

这是因为,一个点被加入方案时,会把它的所有后代全部加入方案,现在我们既然在确定选 \(a\) 或 \(\neg a\),这说明两者皆没有被选过,即两者都不会是先前选过的点的后代,由对称性,这两者也不会是先前选过的点的反面的前代,故选择这两者中的任意一方都不会强制选到先前的点所在点对的另一个点。所以,如果我们选了 \(a\) 后,只要 \(a\) 满足 ②,这个 \(a\) 就一定合法,不用考虑后效性。

当现在考虑到点对\((a,\neg a)\) 时, \(a\) 不合法等价于存在这样一个关系 \(a\to b \and a\to \neg b\),由对称性,这进一步等价于 \(a\to \neg a\)。由于 \(a\) 与 \(\neg a\) 不在同一分量内,所以一定不存在 \(\neg a \to a\)。这引出了第二个结论:如果 \(a\) 不满足②,\(\neg a\) 一定满足②。综合上面两个结论,每个点对中至少有一个点①②同时满足,这就证明了命题。

上述的讨论启发我们一种构造:每一轮找到一个未选择的点对,如果存在一条边(或可达关系)则选择边的终点,如果不存在边则随意选择一个点加入方案,并接着加入所有后代节点。这个构造可以覆盖所有的解,不过求一个解的复杂度还较高,是 \(O(nm)\) 的。

我们可以进一步简化构造。考虑点 \(a\) 的拓扑序 \(t_a\),对于 \(a\) 的所有后代 \(b\),有 \(t_a<t_b\)。并且,每个 \(b\) 对应的 \(\neg b\) 都是 \(\neg a\) 的前代,\(t_{\neg a}>t_{\neg b}\) 。因此,我们对每个点对选择拓扑序更大的那个点 \(a\),就会有 \(t_{\neg b}<t_{\neg a}<t_a<t_b\),\(a\) 的后代 \(b\) 在自己的点对中也是拓扑序更大的那个,免去了枚举后代节点的过程,可以做到真正的 \(O(n+m)\)。

标签:方案,一个点,加入,neg,后代,构造,选过,SAT
From: https://www.cnblogs.com/nkxjlym/p/18427187

相关文章

  • 鸿蒙跨端实践-长列表解决方案和性能优化
    这是我参加创作者计划的第一篇文章。 前言长列表是前端和客户端应用中最常见的业务场景,比如商品瀑布流等,有成千上万条数据,因此长列表的渲染性能在iOS,Android,Harmony,Web等各大平台都非常重要。HarmonyOS和iOS类似也提供了自己的解决方案。Roma(罗码)作为跨端平台,在此基础上......
  • SQLSyntaxErrorException: Unknown database ‘server‘ ---数据库相关报错解决方案
    java.sql.SQLSyntaxErrorException:Unknowndatabase'server'这个错误通常表示你尝试连接的数据库名称(在这个例子中是server)在你的数据库服务器上不存在。这可能是由于以下几种原因之一:数据库名称拼写错误:检查你在连接字符串中指定的数据库名称是否正确,确保没有拼写错......
  • 建立数据库连接时出现错误:原因与解决方案
    建立数据库连接时出现错误的原因可能有很多,以下是一些常见的原因及其解决方案:原因登录信息错误:账号、密码、服务器名称或数据库名称不正确。网络问题:客户端与数据库服务器之间的网络连接不稳定或中断。数据库服务未启动:数据库服务没有运行,或者在尝试连接时服务停止......
  • NASA:ATLAS/ICESat-2 L3A 地面和植被冠层表面高度数据第六版
    目录简介摘要代码引用网址推荐0代码在线构建地图应用机器学习ATLAS/ICESat-2L3ALandandVegetationHeightV006简介该数据集(ATL08)包含地面和冠层表面在WGS84椭球面(ITRF2014参考框架)上的沿轨高度。冠层和地表以固定的100米数据段进行处理,通常包含100多个信号光子。数据......
  • 可编辑PPT | 能源企业数字化框架、数字化运营及数字化平台建设方案
    项目背景及需求理解首先提出了全球能源互联网的概念,强调了清洁能源和电能替代的重要性,并介绍了德国工业4.0战略以及泛在电力物联网的创新。文档探讨了信息化与工业化的深度融合,以及云计算、大数据、物联网和移动应用等新技术在能源行业的应用。数字化企业架构本方案涵盖了......
  • 建立数据库连接时出现错误:原因与解决方案
    网站数据库连接失败可能有以下几个常见原因:数据库配置错误:数据库连接参数配置错误,如用户名、密码、主机地址、端口号、数据库名称等配置不正确。应用程序中的数据库配置文件(如WordPress中的wp-config.php)可能包含了错误的信息。网络问题:数据库服务器与应用程序服务器......
  • 统信服务器操作系统【SSH登录常见问题】解决方案
    方案适用于统信服务器操作系统D/E/A版。文章目录前言问题及解决方案问题一问题现象问题原因问题方案问题二问题现象问题原因问题方案问题三问题原因问题方案问题四问题现象问题原因问题方案问题五问题现象问题原因问题方案......
  • 数据库连接错误:原因与解决方案
    数据库连接错误可能由多种因素引起,下面列出了一些常见的原因及其解决方案:常见原因及解决方案配置错误原因:数据库连接字符串中的参数错误,如主机名/IP地址、端口号、数据库名称、用户名或密码不正确。解决方法:检查并确认连接字符串中的所有参数都正确无误。网络问题原......
  • SpringBoot中基于JWT的双token(access_token+refresh_token)授权和续期方案
    微服务架构中,JWT认证方案中,用户登录成功后,后端会生成一个JWT格式的access_token并发送给前端。前端接收后,会将此access_token安全地存储在浏览器的LocalStorage中,以便在后续请求中作为身份认证的依据。每次API请求时,前端都会将access_token附加在请求头中发送给后端,后端则通过过......
  • SpringBoot前后端接口加解密--解决方案
    开放接口-通信方式采用HTTP+JSON或消息中间件进行通信。-调用接口之前需要使用登录鉴权接口获得token。-当鉴权成功之后才能调用其他接口(携带Token)。登录接口:Code 说明200 成功401 未授权,请先登录。403 没有访问权限404 接口不存在500 接口内部错误但是开放接口......