Questions tagged «satisfiability»

可满足性(SAT)是确定是否存在满足给定布尔公式的变量分配的问题。

1
平面1合3 SAT的平面度条件
平面3SAT是NP完全的。平面3SAT实例是3SAT实例,对于该3SAT实例,使用以下规则构建的图形是平面的: X一世X一世x_iX一世¯X一世¯\bar{x_i} 为每个子句添加一个顶点CĴCĴC_j (x一世,X一世¯)(X一世,X一世¯)(x_i,\bar{x_i}) X一世X一世x_iX一世¯X一世¯\bar{x_i} (x1个,X2),(X2,X3),。。。,(xñ,X1个)(X1个,X2),(X2,X3),。。。,(Xñ,X1个)(x_1,x_2),(x_2,x_3),...,(x_n,x_1) 特别是,规则5构建了一个“主干”,将子句拆分为两个不同的区域。 平面1合3 SAT也是NP完全的。 (x一世,X我+ 1)(X一世,X一世+1个)(x_i,x_{i+1})

2
从ILP到SAT的多时减少?
因此,众所周知,ILP的0-1决策问题是NP完全的。用NP显示它很容易,最初的减少来自SAT。从那时起,许多其他NP-Complete问题已被证明具有ILP公式(其作用是将这些问题简化为ILP),因为ILP非常有用。 排量从 ILP似乎更难要么自己或追查。 因此,我的问题是,有谁知道从ILP到SAT的多时减少,即说明如何使用SAT解决任何0-1 ILP决策问题?

2
证明DOUBLE-SAT是NP完全的
为便于参考,此处定义了众所周知的SAT问题。 DOUBLE-SAT问题定义为 DOUBLE-SAT={⟨ϕ⟩∣ϕ has at least two satisfying assignments}DOUBLE-SAT={⟨ϕ⟩∣ϕ has at least two satisfying assignments}\qquad \mathsf{DOUBLE\text{-}SAT} = \{\langle\phi\rangle \mid \phi \text{ has at least two satisfying assignments}\} 我们如何证明它是NP完全的? 不胜枚举的证明方法将不胜感激。

2
MIN-2-XOR-SAT和MAX-2-XOR-SAT:它们是NP硬的吗?
和\ text {MAX-2-XOR-SAT}的复杂性是什么?他们在P吗?他们是NP硬手吗?MIN-2-XOR-SATMIN-2-XOR-SAT\text{MIN-2-XOR-SAT}MAX-2-XOR-SATMAX-2-XOR-SAT\text{MAX-2-XOR-SAT} 为了更精确地将其形式化,让 Φ(x)=∧niCi,Φ(x)=∧inCi,\Phi\left(\mathbf x\right)={\huge\wedge}_{i}^{n}C_i, 其中x=(x1,…,xm)x=(x1,…,xm)\mathbf{x} = (x_1,\dots,x_m)并且每个子句CiCiC_i的形式为(xi⊕xj)(xi⊕xj)(x_i \oplus x_j)或(xi⊕¬xj)(xi⊕¬xj)(x_i \oplus \neg x_j)。 该2-异或2-异或\text{2-XOR-SAT}问题是要找到一个分配XX\mathbf{x}是满足ΦΦ\Phi。这个问题在PPP,因为它对应于线性方程组mod 222。 该MAX-2-XOR-SATMAX-2-XOR-SAT\text{MAX-2-XOR-SAT}问题是要找到一个分配XX\mathbf{x},最大限度地提高被满足子句的数目。该MIN-2-XOR-SATMIN-2-XOR-SAT\text{MIN-2-XOR-SAT}问题是要找到一个分配XX\mathbf{x},最大限度地减少被满足子句的数目。这些问题的复杂性是什么? 受到MIN或MAX-True-2-XOR-SAT NP-hard的启发吗?

2
广义XOR-SAT是否可以有效解决?
我已经了解了XOR-3-SAT是如何有效解决的(例如,有关布尔可满足性问题,请参见Wikipedia条目中的“ XOR-可满足性”部分)。 我想知道一个基本问题: 对于每个子句具有不同数量的文字的公式,XOR-k-SAT是否可以有效求解? 我真的很想知道是否可以将每个子句的文字量增加到3以上,以及是否可以混合使用子句长度。

2
为什么谢弗定理不能证明P = NP?
这可能是一个愚蠢的问题,但我只是不明白。在另一个问题中,他们提出了舍费尔的二分法定理。对我来说,它似乎证明了每个CSP问题都在P或NP完全中,但不在两者之间。由于每个NP问题都可以在多项式时间内转换为CSP(因为CSP是NP完全的),为什么不能证明P和NP-Complete之间没有空间,所以P = NP? 例如,我的想法是,可以将整数分解分解为可满足性问题,因此使用Schaefer定理,它应该是P或NP完全的,但不能介于两者之间(即使我们无法确定它是哪一个)。 看待整个问题的另一种方式:为什么我们不能使用Schaefer定理来确定整数分解是P还是NP-complete? 编辑:回应大卫·里希比的回答(评论太久了): 有趣,但我尚未完全理解。在使用舍弗定理定义关系伽玛集时,我们可能对其施加限制。例如,我们可以将伽玛限制为仅使用Arity 2关系(然后问题出在P中)。我们可以对伽玛施加什么样的限制? 我们为什么不能强加所有CSP(gamma)实例与(同构为)L完全相同的限制?例如,当对不均匀数进行整数分解时,两个除数之一用二进制表示为xn .. x3 x21。现在,我希望此数字大于1。因此,我具有以下关系(xn或..或x3或x2)。因此,我说伽玛可以与n-1有一个OR关系。但是我不希望该or-relation用于在语言中包含L以外的其他实例,因此我还强加了or-relation中的x2..xn不允许取反。当然,我还需要施加限制,即仅在其中使用特定变量。 是否可以通过这种方式让CSP(γ)同构为整数分解?主要问题是:我们可以对伽玛施加什么样的限制? 编辑2:回应尤瓦尔·菲利弗斯的回答。 我理解您的回答,尽管与David的回答大致相同,但它似乎是正确的。例如,我们可以将因式分解简化为3-sat,然后得出因式分解是NP完全的结论,这是错误的,因为3-sat还有其他实例可能不是因式分解的。 我不了解的部分是实例是(非)任意的。例如,2-SAT在我看来也不是任意的,因为只允许使用arity 2的子句(尽管我必须承认,证明仍然成立,因为它是一个上限,在这种情况下,上限是P)。 NP完整性是一个更好的例子:上面的问题。一个回答者提供了完整的Schaefer证明。但是我对输入施加了重要的限制(允许2-SAT子句和异或子句,但没有其他限制)。当然,证明仍然成立,因为证明中考虑的CSP问题与原始问题完全相同。 我不理解的部分是为什么我们不能对分解进行类似的处理?当然,将其简化为3-SAT是没有用的,但是请允许我给出一个CSP实例,该实例分解一个数字,仅分解一个数字(4位)。(如果您认为可行,请跳至END-OF-SKIP)。 分解实例。 输入: ñ4ñ3ñ2ñ1个n4n3n2n1n_4n_3n_2n_1米4米3米2米1个m4m3m2m1m_4m_3m_2m_1 现在,让我们将其转换为CSP实例 ñ5。。ñ1个n5..n1n_5..n_1米5。。米1个m5..m1m_5..m_1 d4d3d2d1个d4d3d2d1d_4d_3d_2d_1Ë4Ë3Ë2Ë1个e4e3e2e1e_4e_3e_2e_1 关系: Ë4∨ è3∨ è2e4∨e3∨e2e_4 \lor e_3 \lor e_2 (d4∧¬m4)∨(d4=m4∧d3∧¬m3)∨(d4=m4∧d3=m3∧d2∧¬m2)∨(d4=m4∧d3=m3∧d2=m2∧d1∧¬m1)(d4∧¬m4)∨(d4=m4∧d3∧¬m3)∨(d4=m4∧d3=m3∧d2∧¬m2)∨(d4=m4∧d3=m3∧d2=m2∧d1∧¬m1)(d_4 \land \neg m_4) \lor (d_4=m_4 \land d_3 \land \neg m_3) \lor (d_4=m_4 \land d_3=m_3 \land d_2 …

2
证明决定单调布尔公式可满足性的NP完备性
我正在努力解决这个问题,我真的很努力。 甲单调布尔公式是在命题逻辑式,所有的文字是正的。例如, (x1个∨ X2)∧ (x1个∨ X3)∧ (x3∨ X4∨ X5)(x1∨x2)∧(x1∨x3)∧(x3∨x4∨x5)\qquad (x_1 \lor x_2) \land (x_1 \lor x_3) \land (x_3 \lor x_4 \lor x_5) 是单调布尔函数。另一方面,类似 (x1个∨ X2∨ X3)∧ (¬ X1个∨ X3)∧ (¬ X1个∨ X5)(x1∨x2∨x3)∧(¬x1∨x3)∧(¬x1∨x5)\qquad (x_1 \lor x_2 \lor x_3) \land (\neg x_1 \lor x_3) \land (\neg x_1 \lor x_5) 不是单调布尔函数。 如何证明此问题的NP完整性: 如果变量或更少的变量设置为1,则确定单调布尔函数是否可满足?ķkk1个11 …

3
具有XOR关系的NP 2-SAT是否完整?
我想知道是否存在针对“具有XOR关系的2-SAT”的多项式算法。2-SAT和XOR-SAT都在P中,但是它的组合吗? 输入示例: 2-SAT部分: (a or !b) and (b or c) and (b or d) XOR部分: (a xor b xor c xor 1) and (b xor c xor d) 换句话说,输入是以下布尔公式: (a∨¬b)∧(b∨c)∧(b∨d)∧(a⊕b⊕¬c)∧(b⊕c⊕d).(a∨¬b)∧(b∨c)∧(b∨d)∧(a⊕b⊕¬c)∧(b⊕c⊕d).(a \lor \neg b) \land (b \lor c) \land (b \lor d) \land (a \oplus b \oplus \neg c) \land (b …


1
推断优化类型
在工作中,我的任务是推断一些有关动态语言的类型信息。我将语句序列重写为嵌套let表达式,如下所示: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 由于我从一般类型信息开始,并试图推断出更具体的类型,因此自然的选择是精简类型。例如,条件运算符返回其真假分支类型的并集。在简单的情况下,它效果很好。 但是,在尝试推断以下类型时遇到了障碍: function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

1
顶级SAT求解器可以分解为简单数吗?
现代SAT求解器非常擅长求解SAT实例的许多实际示例。但是,我们知道如何生成难的密码:例如,使用从分解为SAT的简化方法,并提供RSA数字作为输入。 这就提出了一个问题:如果我举一个简单的因式分解的例子怎么办。而不是对位取两个大质数,如果我对位取质数而对位取质数q ,则令并编码作为SAT实例。是通过蛮力搜索或筛分法容易分解的数字,因为其中一个因素很小。从分解到SAT的标准减少了的现代SAT求解器是否也采用了这种结构?n / 2ñ/2n/2ppp日志ñ日志⁡ñ\log nñ /日志ññ/日志⁡ñn/\log nñ= p qñ=pqN = pqF A C T O R( N)F一种CŤØ[R(ñ)\mathrm{FACTOR}(N)ññN 可以使SAT求解器的因子,其中快速?ñ= pqñ=pqN = pq| p |=日志ñ|p|=日志⁡ñ|p| = \log n

2
寻找可满足性问题的解决方案比确定可满足性难吗?
确定给定布尔表达式在计算上是否可以满足与实际找到该表达式的解决方案的问题是否存在? 换句话说,是否有另一种方式可以找到给定的表达式是令人满意的,而无需明确确定布尔变量的“正确设置”?还是所有可能的证明都将多项式时间减少到“正确的设置”? 原谅我的无知,我只是一名工程专业的学生。维基百科似乎暗示仅找到SAT或UNSAT 的行为是NP完全的。

1
DNF到CNF的转换:简单或困难
关于证明从CNF到DNF的转换是NP-Hard的线程(以及相关的Math线程): 从DNF到CNF的另一个方向如何?容易还是困难? 在本文的第2页上,他们似乎暗示了两个方向,当他们说“ 我们对从CNF表示转换为DNF表示(反之亦然)时最大的尺寸爆炸感兴趣 ”时,两个方向都同样困难。 但是DNF-SAT在P中,而CNF-SAT在NP中。因此,在给定DNF表达式,应该有一个满足条件的 CNF表达式其长度是的长度的多项式。而且转换可以在多边形时间内完成。它是否正确?ϕ1个ϕ1个\phi_1ϕ2ϕ2\phi_2ϕ1个ϕ1个\phi_1ϕ1个→ ϕ2ϕ1个→ϕ2\phi_1 \to \phi_2 编辑:更改等效于equisatisfiable(即,附加的变量允许在)。ϕ2ϕ2\phi_2

1
如何证明在多项式时间内可求解的3SAT约束版本(其中没有一个文字可以出现多次)是可解决的?
我正在尝试制定一项任务(取材于算法-S. Dasgupta,CH Papadimitriou和UV Vazirani撰写,第8章,问题8.6a),而我的解释是: 鉴于即使限制在每个文字最多出现两次的公式中,3SAT仍然是NP完全的,这表明如果每个文字最多出现一次,那么该问题可以在多项式时间内解决。 我试图通过将子句分成多个组来解决此问题: 与其余条款没有任何共同点的条款 仅有1个共同变量的子句 有两个共同变量的条款 具有所有三个变量的子句 我的推理是按照这样的思路进行的:此类组的数量是有限的(由于没有文字出现的限制超过一次),我们可以尝试首先满足最严格的组(第4组),然后替换会产生较少的受限制的组(3、2,然后是1),但是我意识到这并不能带我去任何地方,因为这与3SAT受约束版本的情况并没有太大不同,在受约束版本中,每个文字都可以出现最多两次,这已被证明是NP完全的。 我尝试在网上搜索任何提示/解决方案,但我只能获得此链接,其中的提示对我来说没有足够的意义,我在这里逐字复制: 提示:由于每个文字出现最多一次,转换这个问题2SAT问题-因此多项式时间内,如果一个文字显示在条款Ç Ĵ和的补体X 我(即,¯ X 我在子句)Ç ķ,构建体的新子句子句ç Ĵ ∨ ¯ ç ķ。xixix_iCjCjC_jxixix_ixi¯¯¯¯¯xi¯\overline{x_i}CkCkC_kCj∨Ck¯¯¯¯¯¯Cj∨Ck¯C_j \lor \overline{C_k} 无论和ç ķ有每次三个文字-我没有得到我应该如何去这样做将其转换为2SAT Ç Ĵ ∨ ¯ ç ķ(或¯ ç Ĵ ∨ Ç ķ如果我读错的话)。CĴCĴC_jCķCķC_kCĴ∨ çķ¯¯¯¯¯¯CĴ∨Cķ¯C_j \lor \overline{C_k}CĴ∨ çķ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯CĴ∨Cķ¯\overline{C_j \lor C_k} 在解密提示或提供我可以探索的路径方面的任何帮助将不胜感激。

1
冲突驱动子句学习回溯澄清
在这里的Wikipedia页面上,它很好地描述了CDCL算法(似乎图片是由普林斯顿的Sharad Malik创建的幻灯片拍摄的)。但是,当描述如何回溯时,它只是说“到适当的位置”。MiniSAT还使用了CDCL算法的变体,因此我阅读了本文。他们似乎在说,您应该回溯到Learned子句是unit子句之前。那当然是澄清,但对我来说没有意义。据我所知,最后一个赋值肯定会成为学习到的冲突子句的一部分(也许我在这里错了?),所以当您回溯一步时,您将立即使学习到的子句成为单位,最后分配的值将翻转,并且该算法将完全按照DPLL进行,而不会回溯足够远。另外,维基百科页面不遵循此规则,它似乎可以回溯得多。 应该回溯多远?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.