测量SAT实例的难度


28

给定一个SAT实例,我希望能够估计解决该实例的难度。

一种方法是运行现有的求解器,但这种方法无法达到估算难度的目的。第二种方法可能是查看子句与变量的比率,就像在random-SAT中进行相变一样,但是我确信存在更好的方法。

给定一个SAT实例,是否有一些快速的试探法来衡量难度?唯一的条件是,这些启发式方法要比在实例上实际运行现有的SAT求解器快。


相关问题

哪些SAT问题很容易?在cstheory.SE 该问题询问有关易于处理的实例集。这是一个类似的问题,但并不完全相同。我对一种启发式方法非常感兴趣,该启发式方法对单个实例做出了某种半智能的猜测,以确定该实例是否很难解决。


您能详细说明为什么不需要“密度” 的相变吗?
拉斐尔

@Raphael是一个非常好的方法,我在问题中提到了它。但是我给人的印象是存在更好的启发式方法。相变会困扰我,因为它似乎很容易欺骗(只需将容易满足的子句或实例添加到您要伪装的子句或实例中即可)
Artem Kaznatcheev 2012年

抱歉,错过了您的问题部分。是的,正如评论者所指出的,相变似乎对非随机公式很敏感。
拉斐尔

2
您可以将SAT(在CNF中)公式表示为二部图,其中每个公式和子句的顶点以及代表出现的边。如果此图易于划分,则可以将问题分解为已划分的子图。也许这可以作为一种有用的措施?我不知道(这就是为什么这是评论而不是答案)。
亚历克斯(Alex)10布林克(Brink)

您可能会发现这很有用:ece.uwaterloo.ca/~vganesh/QPaper/paper.pdf
用户

Answers:


22

通常,这是一个非常相关且有趣的研究问题。“一种方法是运行现有的求解器...”,这甚至还能告诉我们什么?从经验上我们可以看到,对于特定的求解器或特定的算法/启发式方法而言,一个实例似乎很难,但是它真正说明了该实例的硬度吗?

一直追求的一种方法是识别实例的各种结构特性,从而产生有效的算法。这些属性确实优选是“容易”识别的。一个示例是使用各种图形宽度参数测量的基础约束图的拓扑。例如,已知的是,如果基础约束图的树宽由常数限制,则实例可在多项式时间内求解。

另一种方法集中于实例的隐藏结构的作用。一个示例是后门集,这意味着变量集,以便在实例化它们时,剩下的问题简化为易于处理的类。例如,Williams等人,2003 [1]表明,即使考虑到搜索后门变量的成本,只要后门集合足够小,仍然可以通过关注后门集合来获得总体计算优势。此外,Dilkina等人,2007 [2]指出,称为Satz-Rand的求解器非常擅长在一系列实验域中找到小的坚固后门。

最近,Ansotegui等人,2008 [3]提出使用树状空间复杂度作为基于DPLL的求解器的一种度量。他们证明了恒定有界空间也意味着存在多项式时间决策算法,其中空间是多项式的阶数(本文中的定理6)。此外,它们显示的空间小于循环剪切集的大小。实际上,在某些假设下,空间也小于后门的大小。

他们还将我认为您追求的形式化,即:

ψΓØñψΓ


[1]威廉姆斯,瑞安,卡拉·戈麦斯和巴特·塞尔曼。“典型案例复杂性的后门。” 国际人工智能联合会议。卷 2003年8月18日。

[2] Dilkina,Bistra,Carla Gomes和Ashish Sabharwal。“在后门检测的复杂性中进行权衡”。约束编程原理与实践(CP 2007),pp.256-270,2007。

[3]Ansótegui,Carlos,Maria Luisa Bonet,Jordi Levy和Felip Manya。“测量SAT实例的难度。” 在《第23届全国人工智能会议论文集(AAAI'08)》中,第222-228页,2008年。


ψΓ

@ArtemKaznatcheev我认为后门程序可能是唯一真正使用过的方法。运行求解器时,我们并不真正在乎公式的硬度。实例仍然必须解决。度量必须给我们带来计算上的优势,或者我们可以使用它来选择合适的启发式方法。除此之外,我认为硬度测量还处于实验阶段。
Juho 2012年

1

既然您了解了相变,请允许我提及我所知道的其他一些简单检查(这些检查可能包含在约束图分析中):

  • 一些早期的随机SAT生成器无意中创建了大多数简单的公式,因为它们使用“恒定密度”,这意味着所有子句长度的比例大致相等。这些通常很容易,因为2子句和单元可以极大地简化问题(正如人们期望的那样),而且长的子句不会增加太多分支,也不会更好地促进超分辨率。因此,似乎最好坚持使用定长子句并更改其他参数。
  • |X||¬X|X
  • v1个v2v3{v1个v2}{v2v3}{v1个v3}

[1] https://arxiv.org/pdf/1903.03592.pdf


0

除了Juho的出色答案之外,还有另一种方法:

Ercsey-Ravasz&Toroczkai,“ 通过模拟方法优化硬度作为瞬态混沌来满足约束条件”,《自然物理学》第7卷,第966–970页(2011年)。

这种方法是将SAT问题重写为一个动态系统,其中系统的任何吸引子都是SAT问题的解决方案。随着问题变得更加棘手,系统的吸引盆变得更加分形,因此可以通过检查系统收敛之前瞬变的混沌程度来衡量SAT实例的“难度”。

在实践中,这意味着从不同的初始位置启动一堆求解器,并在求解器到达吸引子之前检查其摆脱混沌瞬变的速率。

提出一个动态系统,其中“解决方案”是给定SAT问题的解决方案,这并不难,但是要确保解决方案都是吸引子而不是排斥者,要困难一点。他们的解决方案是引入能量变量(类似于Lagrange乘数)来表示违反约束的严重程度,并尝试使系统最小化系统的能量。

有趣的是,使用他们的动力学系统,您可以在模拟计算机上解决多项式时间中的SAT问题,这本身就是一个了不起的结果。有一个陷阱。它可能需要指数级的大电压才能代表能量变量,因此很遗憾,您无法在物理硬件上实现这一点。


1
“利用他们的动力学系统,您可以在模拟计算机上在多项式时间内解决SAT问题,这本身就是一个了不起的结果。” 我不同意这一点。如您所述:它需要指数精度。这实际上是一个标准技巧,可直接链接到NP的定义。如果您可以指数精确地进行测量,则可以尝试估算接受路径的数量(或以随机游走dyn sys的方式查看)并查看它是完全为零还是为零(当然,这需要进行指数精确的测量,与动态系统相同)。
Artem Kaznatcheev

感谢那。我对模拟计算的理论了解不多。
别名
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.