紧凑地表示SAT实例的解决方案集


10

在阅读了安德拉斯·萨拉蒙(AndrásSalamon)和科林·麦奎兰(Colin McQuillan)对我以前的问题“单调2CNF公式的计数解决方案”的贡献后,我想到了这个问题。

编辑,2011年3月30 日,
添加了第2个问题。

编辑,2010年10月29 日,该
问题在安德拉斯提出通过很好地表示解决方案集的概念将其形式化的提议后改写(我对他的观点做了一些修改)。

令为具有变量的通用CNF公式。设为其解集。显然,在可以是指数。让n S | S | n R S RFnS|S|nR是的表示。当且仅当以下事实全部成立时,才被认为是很好的SR

  1. ñR多项式大小为。n
  2. 小号R允许以多项式延迟枚举的解。S
  3. | S |R允许确定在多项式时间内(即不列举所有解)。 |S|

如果有可能在多项式时间内为每个公式建立这样的,那将是很好的。R

问题:

  1. 有没有人证明了存在一个家庭式的针对这样一个很好的表现就不能存在?
  2. 有人研究过的表示形式与显示的对称性之间的关系吗?直觉上,对称性应该有助于紧凑地表示因为当实际归结为一个解时,对称性避免了显式表示解决方案子集(即,从每个您可以恢复其他所有通过应用适当的对称性,因此每个本身都代表整个)˚F 小号小号'小号小号小号小号小号Ĵ小号小号小号小号SFSSSSsiSsjSsiSS

1
我认为您需要稍微限制您的问题。如上所述,公式本身是的多项式大小表示。但这显然无助于先前问题的动力。也许你想一些约束(多项式?)上再现的复杂性小号(或可能的单个元素小号,或计算|小号|)从多项式大小的表示...小号FSSS|S|
约书亚Grochow

@约书亚:你是对的,谢谢。我丰富了要澄清的问题。请让我知道现在是否可以。
Giorgio Camerani

顺便说一句,表示解决方案集的一种方法是“与/或搜索树”。每个实例都是树的叶子,可以在不枚举所有解决方案的情况下进行计数。
Yaroslav Bulatov

@Yaroslav:有趣的...请您进一步阐述一下?
Giorgio Camerani 2011年

Answers:


10

如所述(修订版3),问题有一个简单的答案:否。

原因是,即使对于具有AND,OR和NOT门的布尔电路所给出的表示形式非常受限制,也没有非平凡的下界。(显然,代表的电路也将隐含地代表S,通过更改电路的输入很容易列举解决方案。)FS

对于单调或恒定深度电路之类的更为严格的表示,指数下界是已知的。尽管可以将它们视为恒定深度电路的特殊情况,但也存在指数下限以CNF或DNF形式表示公式。最后,BDD表示形式可以看作是DNF的紧凑形式,但是存在一些公式,其中BDD对于任何变量排序都要求指数大小。

为了使您的问题更精确,请详细考虑@Joshua的答案,并阐明“简单地列举每个解决方案”的含义。


对于版本4,请注意有关BDD大小的声明。您似乎要问的部分问题是:DNF公式比BDD 更为紧凑吗?令“ BDD 具有超多项式大小”是指“ 与变量B代表相同功能的每个BDD ,具有可变多项式,都具有超多项式大小”,而使“ nice表示”表示“允许以多项式延迟枚举解的表示”。然后,这个更具体的问题变为:BB

是否有一个具有多项式大小的公式族和一个很好的表示形式,而其BDD具有超多项式大小?

这是否抓住了您所要求的内容?


@András:我添加了一个澄清部分。
Giorgio Camerani 2010年

@András:如果我的问题不够精确,我深表歉意。您的句子“与BDD相比,DNF公式的表示形式更紧凑吗?” 抓住了我要问的本质。对于每个公式(甚至那些具有超多项式解的公式),这样的紧凑表示都必须是可能的。
Giorgio Camerani

@András:嗨,我想了更多。我要问的本质的一个更好的体现是“是否有一个很好的表示形式,每个公式都有多项式大小?” 。这种表示必须是“有史以来最好的”,无论BDD与之相比表现如何。您关于多项式延迟的建议完全符合我的想法。
Giorgio Camerani

@Walter:可能值得根据该表述修改问题,或发布新问题。
安德拉斯·萨拉蒙(AndrásSalamon)2010年

@安德拉斯:我已改掉这个问题。好的表示的定义已经改变了一点(我假设这是您的发明的术语,而不是文献中已经确立的术语,对吗?)。
Giorgio Camerani

9

[此答案是针对2010年10月29日修订版6之前的版本的。]

我认为这个问题现在或多或少都可以解决,但仍然存在技术问题。即,如何形式化“仅通过查看这样的结构来枚举每个单个解决方案是微不足道的”。一个也许幼稚形式化(但我唯一能想出的时刻)如下:让表示解集表现小号φ φ。目前,我对R没有其他限制| R φ | p ø ý Ñ 其中φR(φ)S(φ)φR|R(φ)|poly(n)φ变量的CNF 。然后,我们希望这是一个算法使得[R φ = 小号φ 输入- [R φ 在时间用完p ø Ý Ñ |小号|nAA(R(φ))=S(φ)AR(φ))poly(n,|S|)

在这种形式化下,唯一困难的情况是是超多项式但是次指数的情况。其余情况下由下面的表示处理ř和算法:如果| S | p ø ý Ñ ,然后让- [R φ = 0 小号。如果| S | 2 Ω Ñ 然后让- [R φ = SRA|S|poly(n)R(φ)=(0,S)|S|2Ω(n)0 小号简单地输出小号,和1 φ 简单地计算小号从由蛮力 φ。由于 | S | = 2 Ω Ñ 在后一种情况下,这仍然在时间用完 Ö |小号|R(φ)=(1,φ)A(0,S)SA(1,φ)Sφ|S|=2Ω(n)O(|S|)

但是,在这种形式下,困难的情况通常是不可能的。如果这样的存在,这将意味着p每的-time有界Kolmogorov复杂小号由限定p Ó ý Ñ ,这是荒谬的(因为几乎所有集小号具有最大p -time有界的Kolmogorov复杂度,即| S |。(这里pA的运行时间,它是| S |的函数。)RApSpoly(n)Sp|S|pA|S|

(注意,如果我们还要求时刻运行p ø Ý Ñ | φ |,那么问题的答案是没有在一般情况下,假定P P [R ø 小号è ù P:如果φ有一个唯一的解,则A R φ 将求解φ并在时间p o l y n )内运行Rpoly(n,|φ|)PPromiseUPφA(R(φ))φpoly(n)


@Joshua:感谢您花费您的一些时间来回答这个问题。也许在最后第三行中,我们应该将替换为A吗?RA
Giorgio Camerani 2010年

@约书亚:我认为的“问题” 在于它需要蛮力。对于人类(对于算法而言)(也不是对算法而言),仅通过查看即可立即“看到”令人满意的任务并不是一件容易的事。R(φ)=(1,φ)
Giorgio Camerani

@沃尔特:我确实的意思是倒数第二行中的R
约书亚·格罗夫

@沃尔特:我完全认识到至少部分地违反了您的问题的实质(因为我仅对某些而非全部公式进行此操作)。这是技术问题的一部分:我可以想到的将问题正式化的唯一方法是允许像这样的愚蠢的事情,这部分违反了问题的实质。找到不允许这样做的形式化将非常有趣。R(φ)=(1,φ)
约书亚·格罗夫

@ Walter,@AndrásSalamon:也许Andras建议以多项式(以n)延迟(而不是时间O | S |)输出的元素会更好。即使φ具有指数级的许多解,它也可以排除R φ = 1 φ )之类的东西。SnO(|S|)R(φ)=(1,φ)φ
约书亚·格罗夫
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.