形式系统(Formale System)-SAT问题

2024-03-26 12:48

本文主要是介绍形式系统(Formale System)-SAT问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是SAT问题

所谓SAT问题就是可实现性问题(Erfuellbarkeitsproblem)。即已知一个Formel F For0 ,问是否存在一个解释(Interpretation) I 使得 valI(F)=T
同时SAT问题也是一个NP完备性问题。也就是说假如存在一个确定的在多项式时间内完成的用于判定一个Formel是否可实现的的算法,那么同时也就可以得到NP=P,换言之,每一个非确定性的可于多项式时间内完成的判定问题同时也是确定性的可在多项式时间内完成的。//有点绕,总之就是说不存在咋能在多项式时间内完成的算法把???NP问题不懂啊

特定Formel的SAT问题复杂度

KNF3-KNF2-KNFDNFHorn-FormelNPNPNPO(nlogn)O(n^2)

//高项的KNF都可以通过转化化成3-KNF
//2-KNF也叫做Krom-Formel
//具体的数字不知道是怎么算出来的

Hron Formel

一个Formel A是Horn Formel,当且仅当:
1.A是KNF
2.A的每一个子项最多含有一个正的Literal

¬B1...¬BmA¬B1...¬BmAB1...BmAB1...Bm0(1)A

Hornformel可实现性测试

假如 C=D1..Dm 是一个Hornformel,那么可以通过以下算法,判定他是否可以实现:
0:假如 Di 中不存在单项式,那么算法结束,输出可实现。假如存在,那么标记所有的单项式
1:假如不存在 B1...BmK ,其中所有的 Bi 都已经标记过,那么输出可实现,算法停止
假如存在 B1...Bm0 ,并且其中的 Bi 都已经标记过,那么输出不可实现,算法停止
假如存在 B1...BmA ,并且其中的 Bi 都已经标记过,只有A还没有标记过,那么把A也给标记了,然后跳转到1
除了上述外的其他一切情况都输出可实现,然后算法停止

DPLL(Davis-Putnam-Logemann-Loveland)

补充知识

I 是Interpretation,S是Klausel的集合,C是Klausel,那么就有:
1.

valI(S)={TFCSvalI(C)=T

valI(C)={TFLC valI(L)=T

I( )=T // 表示S为空
I( )=F // 表示Klausel为空 恒假

算法

1.if S= then return 1;
2.if S then return 0;
3.if S contain singleklausel
then choose singleklausel {L} S
return DPLL( redL(S) );
else choose P atom(S)
return max{DPLL( SP ),DPLL( S¬P )}

其中:
red L (S)={red L (C)}C SLC
red L (C)=C\{ ¬L }
SP=S {{P}}
S¬P=S {{ ¬P }}

这篇关于形式系统(Formale System)-SAT问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848561

相关文章

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

MySQ中出现幻读问题的解决过程

《MySQ中出现幻读问题的解决过程》文章解析MySQLInnoDB通过MVCC与间隙锁机制在可重复读隔离级别下解决幻读,确保事务一致性,同时指出性能影响及乐观锁等替代方案,帮助开发者优化数据库应用... 目录一、幻读的准确定义与核心特征幻读 vs 不可重复读二、mysql隔离级别深度解析各隔离级别的实现差异