首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >什么是SAT,它有什么好处?

什么是SAT,它有什么好处?
EN

Stack Overflow用户
提问于 2012-02-21 12:49:28
回答 2查看 13.3K关注 0票数 25

最近我在Reddit上看到了一篇关于使用SAT解决难题的文章1。这让我对"SAT“这件事感到非常好奇。我读过维基百科的文章,但我想请你们中的一些人用更外行的术语为我解释一下。

什么是SAT,它有什么好处?它可以用来遍历树结构吗?用来解析文本?换行2吗?用于装箱3?它是一种优化技术吗?

在相关的注释中,我读到NP vs P是关于选择集合中哪些数字的和为零,而不是检查一些数字是否和为零- SAT与此有什么关系吗?

1

2

3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-21 13:15:23

SAT是非常重要的,因为它是NP完全的。要理解这意味着什么,您需要对复杂性类有一个清晰的概念。下面是一个简短的概要:

  • P是所有能在多项式时间(即快速)内解决的问题,
  • NP是所有能在多项式时间内验证其解的问题。这意味着找到一个给定的解决方案是很快的,但找到一个解决方案通常是很慢的(通常是指数时间)。当然,除非问题出在NP的P部分(正如下面指出的,P是NP的一部分,这一点你可以很容易地验证)。

然后是NP-完全问题集。这个集合包含了所有如此通用的问题,你可以解决这些问题而不是NP中的另一个问题(这称为将一个问题归结到另一个问题上)。这意味着您可以将一个问题从一个领域转换为另一个NP完全问题,让它推导出答案,并将答案转换回来。

然而,通常可以证明一个问题是NP完全的,但是对于另一个给定的问题,转换是不清楚的。

SAT很好,因为它是NP完全的,也就是说,你可以用NP来解决它,而不是用NP来解决任何其他问题,而且归约也不是那么困难。TSP是另一个NP完全问题,但转换通常要困难得多。

所以,是的,SAT可以用来解决你提到的所有这些问题。然而,这通常是不可行的。可行的情况是,当不知道其他快速算法时,例如您提到的拼图。在这种情况下,您不必为拼图开发算法,但可以使用任何高度优化的SAT-Solver,最终将为您的拼图提供合理的快速算法。

例如,遍历树结构是如此简单,以至于从和到SAT的任何转换都很可能比直接编写遍历复杂得多。

票数 26
EN

Stack Overflow用户

发布于 2012-10-12 09:08:07

长话短说,SAT求解器是您为其提供布尔公式的东西,它告诉您是否可以找到不同变量的值,从而使公式为真。

示例

假设abc是布尔变量,您想知道是否可以为这些变量赋值,使公式成为(¬a ∨ b) ∧ (¬b ∨ c)。您将此公式发送到SAT求解器,它将返回true。SAT解算器通常也会为您提供有效的赋值。在这种情况下,此赋值可能为a: false, b:false, c:false

它能用来做什么?

我不会使用它来遍历树,也不会用它来解析文本或换行。但是,您可以在遍历树时使用它来检查树上的某些约束是否得到满足。你当然可以使用它来打包,即使一些专门的CSP解算器可能会在这类问题上表现得更好。

SAT求解器现在变得越来越普遍,特别是在包管理器这样的软件中。Eclipse嵌入了SAT4j来管理其插件之间的依赖关系。SAT的其他应用通常包括模型检查、计划应用、配置器、调度和许多其他应用。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9377916

复制
相关文章
prolog实例_prolog实例
Jetbrains全家桶1年46,售后保障稳定 现在打开编辑器GNU-Prolog,打开文件可以直接询问机器:
全栈程序员站长
2022/11/16
1.3K0
Prolog 语言入门教程
Prolog 是一种与众不同的语言,不用来开发软件,专门解决逻辑问题。比如,"苏格拉底是人,人都会死,所以苏格拉底会死"这一类的问题。
ruanyf
2020/01/21
3.4K0
ios应用列表调整后排名规则
2013年3月。苹果修正了应用程序列表的排名规则。调整后排名规则将应用程序下载量作为最重要的排名的指标,并考虑到应用程序的质量和用户活跃因素。下载后用户的持续使用和活动成为影响排名最重要的因素。苹果这一举动的主要原因是许多应用程序开发人员选择购买下载和更新列表,以提高应用程序排名,从而形成恶性循环。那些打破列表的人从开发人员的口袋里拿钱。被列入的苹果用户将被指控为苹果不可能。最终,这将损害苹果应用商店的公平和形象。
爱学iOS的小麦子
2023/05/09
4390
ios应用列表调整后排名规则
2013年3月。苹果修正了应用程序列表的排名规则。调整后排名规则将应用程序下载量作为最重要的排名的指标,并考虑到应用程序的质量和用户活跃因素。下载后用户的持续使用和活动成为影响排名最重要的因素。苹果这一举动的主要原因是许多应用程序开发人员选择购买下载和更新列表,以提高应用程序排名,从而形成恶性循环。那些打破列表的人从开发人员的口袋里拿钱。被列入的苹果用户将被指控为苹果不可能。最终,这将损害苹果应用商店的公平和形象。
iOS Magician
2023/03/22
5810
在iview中实现列表远程排序
iview中可以通过给列表中每个字段设置sortable: true可以实现字段排序,但是当列表中的数据量比较多时,列表中会有分页,此时只能对当前页进行排序,针对这个问题,iview中有一个远程排序功能,可以通过远程排序实现多页数据的排序
用户3880999
2023/04/13
1.9K0
在iview中实现列表远程排序
[译]在Solidity中创建无限制列表
在大多数应用中,使用列表相当简单。大多数语言都提供用于处理列表的库,我们不必担心使用细节。但是,智能合约不同于“大多数应用程序”,我们需要特别注意区块链施加的设计限制。
Tiny熊
2020/09/14
3.2K0
[译]在Solidity中创建无限制列表
Fiddler 在列表中显示图片尺寸
https://docs.telerik.com/fiddler/knowledgebase/fiddlerscript/customizesessionslist
卓越笔记
2023/02/18
4.1K0
Fiddler 在列表中显示图片尺寸
【说站】splitlines在python中返回列表
2、返回一个是否包含换行符的列表,如果参数keepends为False,则不包含换行符。
很酷的站长
2022/11/23
2.4K0
注意!​在python中不要所有操作都用列表
列表十分方便、它的结构清晰灵活。而且学习列表推导有着一种纯粹的乐趣,就像是中了数据类型中的头奖。
昱良
2020/02/27
2K0
在Python中,不用while和for循环遍历列表
s1=s.encode(encoding='utf-8').decode('unicode_escape')
用户2337871
2019/07/19
5.5K0
Python3--中括号"[]"与冒号":"在列表中的作用
如 : list[ : n]表示从第0个元素到第n个元素(不包括n),list[1: ] 表示该列表中的第1个元素到最后一个元素
狼啸风云
2019/09/25
5K0
Vue中的set、delete方法在列表渲染中的使用
不知大家是否有过类似的经历,比如说for循环渲染数组或者对象中的数据,渲染完成后,给数组或者对象添加、修改、删除数据后却没有在页面中渲染出来。
砖业洋__
2023/05/06
3.3K0
Vue中的set、delete方法在列表渲染中的使用
组合模式在商品分类列表中的应用 顶
{"id":100,"name":"根目录","takeCareProducts":[{"id":200,"name":"可乐","takeCareProducts":[{"id":1,"model":"500ml","name":"可口可乐","price":3}]},{"id":300,"name":"咖啡","takeCareProducts":[{"id":2,"model":"600ml","name":"雀巢咖啡","price":6}]}]}
算法之名
2019/08/20
2K0
DEDE在图集列表中调出图集的所有图片[首页也适用]
模板中 [field:id function=”Getimgs(@me,220,80,90)” /]
全栈程序员站长
2021/12/23
2.2K0
请停止在Python中无休止使用列表
当你学习不熟悉的新东西的时候,一旦发现某样东西有效,那么你就会坚持使用它而放弃探索更多的可能性。在Python中,那样东西就是列表。
HuangWeiAI
2020/11/17
2.9K0
请停止在Python中无休止使用列表
在 Linux 终端调整图像的大小
ImageMagick 是一个方便的多用途命令行工具,它能满足你所有的图像需求。ImageMagick 支持各种图像类型,包括 JPG 照片和 PNG 图形。
用户4988085
2021/09/14
4.5K0
在 Python 中合并列表的5种方法
当我开始学习 Python 的时候,并不知道它是多么的灵活和优雅。在阅读和编写了大量代码之后,我越来越喜欢 Python。因为即使是一个普通的操作也可以有许多不同的实现。合并列表是一个很好的例子,至少有5种方法可以做到这一点。本文将介绍它们,并展示在引擎盖下的技巧。
AI算法与图像处理
2021/04/21
4.1K0
在 Python 中合并列表的5种方法
怎么在插件列表中隐藏一个WordPress插件?
怎么在插件列表中隐藏一个WordPress插件?如果你不想让客户看到你为其订制的插件显示在插件列表中,在本教程中,将向您展示如何轻松地从插件列表中隐藏一个WordPress插件,插件仍在工作,只是不会出现在插件列表中。
主机教程网2bcd.com
2022/10/31
1.3K0
点击加载更多

相似问题

Prolog在列表中追加列表

13

在prolog中管理列表

20

在prolog中构建列表

11

在Prolog中构建列表

11

在prolog中创建列表

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文