独特的


16

这个问题可能在主题之间和主题外的边界上,但是我在这里看到过类似的问题,因此我将提出这个问题。


我正在实现一个独特的k -SAT求解器,其输入是一个k -CNF公式,该公式最多具有1令人满意的赋值。为了测试其实际行为,我需要一组这样的公式。我在网上搜索了它们,却一无所获(而另一方面,找到普通的k -CNF公式套件非常容易)。

在哪里可以找到唯一的k -SAT实例?

另外,我也很满足于知道生成唯一可满足的实例的任何过程。我知道的唯一方法是植入SAT实例生成的名称:您随机生成n变量的赋值,然后仅生成与该赋值相符的子句。由于以下原因,这种方法对我而言并不令人满意:

  • 所获得的公式可能进一步具有不希望的令人满意的分配。
  • 为确保所需的赋值唯一满足该公式,您应引入所有可能与该公式相符的子句。这将产生带有过多子句的公式,这可能很容易求解,因此不能代表求解器的最坏情况。对于我来说,尚不清楚如何在保持子句数量合理的同时有效地强制唯一性。

如何生成具有合理数量的子句的可唯一满足的公式?通过合理的我从最大平均远。2k(nk)


给定一个具有变量和子句的SAT公式如果子句的数量在和则公式是唯一可满足的或不可满足的。 ..我也已经计算出k-SAT的方程式。如果我找到了,将通知您。n m 3 n - 2 n 3 n - 2 n - 2 n - 1 FFnm3n2n3n2n2n1F
Tayfun Pay 2013年

如果您有足够的时间(并且实例足够小),则可以在相变时生成实例,并使用SAT解算器对其进行测试。如果公式无解,则将其丢弃。如果它有解决方案X,则添加一个坚持该解决方案不是X的子句,然后再次运行求解器。这是基本的,但是很慢。
安德鲁·金

Answers:


7

给定您知道可以满足的SAT实例,这是一种生成唯一 -SAT实例的方法。考虑式由下式给出φ ψ X kφψ(x)

φ(x)h(x)=y,

其中是散列函数映射的分配到位值(对于一些小的值)和是随机位值。如果具有约令人满意的分配,则(启发式)我们假定将具有一个完全令人满意的分配(具有恒定的概率)。我们可以使用SAT求解器测试这种情况(即,测试是否可满足;如果满足,并且是一个令人满意的赋值,则测试是否可满足)。如果X ķ ķ ý ķ φ 2 ķ ψ ψ X 0 ψ X X X 0 ķ ķ ķ = 1 2 ... Ñ Ñ Xhxkkykφ2kψψx0ψ(x)xx0k未知,您可以使用二进制搜索或仅通过迭代每个候选值(其中是中布尔变量的数量)来找到。kk=1,2,,nnx

您可以自由选择哈希函数。您可能希望使其尽可能简单。一种极其简单的构造是让从挑选出比特的随机子集。稍微更复杂的结构是让的第i位是两个随机选择的比特的来自XOR(选择一个单独的一对用于每个比特位置的,独立地)。保持简单将使相对简单。ķ X ħ X X ħ ψhkxih(x)xihψ

有时会使用/建议使用这种转换,作为估算公式的满意分配数量的方案的一部分。我已根据您的特殊需求对其进行了调整。φ

您可以在Internet上找到许多SAT实例的测试平台,并且可以对所有这些实例进行此转换,以获得唯一的 -SAT实例的集合。k


另一种可能性是根据密码生成唯一的 -SAT实例。例如,假设是一种加密的单向排列。令为的随机选择元素,并令。然后,由给出的公式是唯一的 -SAT实例。作为另一个示例,随机选择两个大质数,并令。然后由给出的公式˚F { 0 1 } Ñ{ 0 1 } Ñ X { 0 1 } Ñ Ý = ˚F X φ X ˚F X = Ý ķ p q Ñ = p q φ X ÿ X ŷ = ñ X >kf:{0,1}n{0,1}nx{0,1}ny=f(x)φ(x)f(x)=ykp,qn=pqφ(x,y)xy=nx>1y>1xy(在位字符串和整数之间具有明显的对应关系)是一个唯一的 -SAT实例。但是,这些构造似乎不是基准化或优化求解器的有用方法。它们都有特殊的结构,没有理由相信这种结构代表了现实世界中的问题。特别是,众所周知,从密码问题中提取的SAT实例非常困难,比从许多其他SAT求解器的实际应用中提取的SAT实例要困难得多,因此它们并不是基准化求解器的良好基础。k


通常,此答案中提到的所有技术都具有以下缺点:它们会生成具有特定结构的唯一 -SAT实例,因此它们可能不是您想要的-至少,您可能不想依赖完全基于以这种方式生成的公式。更好的方法是识别“唯一 -SAT”的应用程序(您认为谁将使用您的求解器,并且出于什么目的?),然后尝试从这些应用程序域中获取一些实际示例。ķkk

有关相关主题,另请参见生成有趣的组合优化问题


密码段的第一部分是错误的,因为(如果存在单向函数,则)中存在非单射的单向函数。

谢谢@RickyDemer!我的意思是单向排列,但这不是我写的。固定。
2013年

6

您可能会考虑用于生成Sudoku拼图的算法-大概可以推广到因为Sudoku拼图通常具有唯一的解决方案。另一方面,通常也可以保证数独谜题具有至少一个解决方案。但是找到该解决方案仍然可能是您求解器的一个很好的基准。n×n

您可以将Sudoku生成器与SAT简化一起使用,或者可以考虑如何应用Sudoku生成中使用的技术来更直接地生成Unique SAT实例。对于前者,显然您的SAT实例将具有某种结构,但是我不清楚它的结构是否比例如植入解决方案或使用见证隔离技术更大或更小。可能取决于您的需求和求解器。

我在这里知道的一个参考是:Sudoku Puzzles Generation:从Easy到Evil


4

我认为一个好的测试用例是生成具有约束的随机唯一可满足的3XOR实例(植入的实例),然后将其转换为3SAT实例。Θ(n)


2

在控制解决方案数量的同时创建“可能很硬”的SAT实例的最佳方法之一是整数分解实例/以二进制编码的电路。该代码不是很复杂,它主要使用EE加法电路,并且不会导致“大型” SAT实例。解的数量等于因子的数量(包括因子的“排列”)。因此素数生成正好两个解决方案,。可以通过进一步的“比较”约束来保证单个解决方案,该约束将因素限制<(1,p),(p,1)a<ba1bp

同样,使用这种方法,相对容易找到具有大约多少因素/解决方案的数字。在“平滑”的数量,更多的因素。

多年来,许多研究人员都创建了这种分解SAT代码(例如,用于DIMACS竞赛/ arcihve,该代码过去存储了一些分解实例),但不幸的是,似乎没有公开可用的版本。另请参见下面的第1个链接,以获取有关显然是为研究生课程编写/实现代码的引用。

另一个经验/迭代方法可能对一些有用的,以创造更多的“非结构化”的实例:创建随机SAT实例转变点附近(其中方程具有概率“可解和不可解”之间的50%的区域),和然后解方程。如果无法解决,请丢弃并重新启动。如果它是可解的,添加限制解“不”条款是所找到的解决方案,从而获得ë Ñ + 1,并重新解决。如有必要,请重复。当方程ë Ñ + 1不再可解,所述È Ñ必须有一个单一/独特的解决方案。enen+1en+1en


我在前面的回答中提到了分解方法,但是我也解释了为什么它可能不是理想的测试平台:“但是,这些构造似乎不是基准化或优化求解器的有用方法。它们都具有特殊的结构,并且没有理由相信这种结构可以代表真实世界的问题,尤其是从密码学问题得出的SAT实例非常困难,比从许多其他SAT求解器的实际应用中得出的SAT实例要难得多,因此它们并不是基准化您的求解器的很好基础。”
DW 2013年

因此,上述观点是不同的观点,如果要使用非常困难的实例(显然是任何求解器的自然测试用例),那么分解确实是一种有前途的方法。严重怀疑您是否会找到任何与您的观点相仿的发表的观点。重复一遍,从多年前开始,认真的研究人员就将分解实例放入DIMACS挑战档案中。无论如何,您的相反意见甚至没有真正以自洽的方式表达。密码术确实确实是最重要的/应用的现实世界问题,甚至比用于SAT实例的许多抽象/抽象/学术问题
更是如此

2

您可以轻松地直接生成具有合理大小| F | < n + 2 k)的唯一SAT公式。(|F|<n+2k)

为唯一模型-假设m仅包含“ 0”(如有需要,请稍后重命名变量)。 让˚F一个ķ -SAT式满足仅由 -的最大尺寸˚F是通过满足子句的总数2 ķ - 1 Ñmm
FkmFm(2k1)(nk)

,消除了一个“1”之间究竟分配所有车型条款X1X2...Xķ¬X1X2...XķX1¬X2...Xķ...X1X2...¬Xķ(k1)x1,x2xk
(¬x1,x2xk)(x1,¬x2xk)(x1,x2¬xk)

能消除所有模型子句指定正好两个“1”之间的X1X2...Xķ¬X1¬X2X3...Xķ¬X1X2¬X3...Xķ...X1X2...¬Xķ-1¬(k2)x1,x2xk
(¬x1,¬x2,x3xk)(¬x1,x2,¬x3xk)(x1,x2¬xk1¬xk)

继续努力直到取得唯一子句消除了在x1x2xk中为每个变量分配“ 1”的所有模型。(kk)x1,x2xk

唯一尚未消除的模型将所有分配为“ 0”。由于是一个模型,则采取任何组ñ - ķ能够消除分配“1”的所有模型子句X ķ < Ñ 0至任何ķ - 1层之间的变量X 1X 2 ... X ķ,例如:¬ X ķ + 1x1,x2xkmnkxi(k<in)0k1x1,x2xk
(¬xk+1,x1,xk1)(¬xn,x1xk1)

然后|F|=i=1k(ki)+nk=2k1+nk

要获取更多子句,请添加任何包含至少一个否定变量的子句。要获得无法满足的公式,只需添加带有负变量的子句。k


您的回答中有一个问题:我们有n个变量,这意味着而不是k
Elaqqad
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.