Implement WalkSAT algorithm that solve the CNF Boolean formula

介绍WalkSAT算法原理及其在解决布尔可满足性问题中的应用,并通过N皇后问题实例展示如何利用WalkSAT算法和CNF(合取范式)表示进行求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Goal

 

Implement WalkSAT algorithm that solve the CNF Boolean formula.

Implement Encoder that generate CNF notation for N-Queen for given

Using both module to solve N-Queen problem.

 

First, What's CNF(Conjunctive Normal Form)?

Conjunctive normal form : conjunction of clauses, where clause is a disjunction of literal.

Eg.

 

WalkSAT Algorithm

 

To slove Boolean satisfiability problems.

For given conjunctive normal form, it finds variable assignments that satisfies all clauses.

Algorithms

- Set random value to every literal

- Until every clause satisfies(maximum 10,000 times)

  a. Pick a random unsatisfied clause

  b.Select a variable from that clasue

      -50%: Flip the variable that makes best result

      -50%: Flip random variable

 

来点中文了解一下背景知识

什么是布尔可满足性问题

"

这是一个计算科学里的理论问题。让我试试看能不能用通俗的语言把它说清楚。计算机里的位变量都是布尔变量,只取值0或1。两个布尔变量之间的运算只有“与”“或”“非”,表示为“∧”“∨”“¬”。你能猜到 1∧0=0,1∨0=1,¬1=0。现在我有一个包含许多变量的表达式,例如:x∨y∧¬z,我问:这个表达式能等于1吗?如果能,x,y,z分别等于什 么,表达式就等于1,就说这个表达式被满足了。这就是布尔可满足性(简称SAT)问题。但是,你要允许变量个数可以任意,表达式可以任意长。这个问题是一 个计算复杂性很高的问题,已经证明它基本上是一个多项式复杂性算法不可解决的问题。这句话,我无法用通俗的语言来说明。但是没有关系,你只要知道这问题没 有一般的简单算法来彻底解决。本文要说的是:这个问题有实际意义,而且最近在算法上有进展和应用。

"

 

布尔可满足性问题有什么用呢?

"

布尔可满足性问题的扩张就是优化问题。如果变量的取值不只有0和1,目标函数的取值也不只是0和1,而是取最大或最小,而约束条件可以表示为若干个表达式。我们的问题是寻找变量的一组值,在满足约束条件下,目标函数取值最大或最小。这不就是优化问题吗?
 布尔可满足性问题有许多应用,许多问题都可以归结为SAT。特别是在集成电路的设计与测试中,到处都是。例如,看两个逻辑函数f1,f2是否等价,只要判断(f1∧¬f2)∨(¬f1∧f2)是否永远不可满足。

"

 

WalkSat 是用于求解布尔可满足性问题(boolean satisfiability problems)
的局部搜索算法。
算法需要将问题表示为/或转化为合取规范形式(conjunctive normal form)。
算法的基本框架为:
(1)为合取式中的每个变量赋以一个随机值;
(2)如果该赋值满足所有的子句(clauses),则算法结束,并返回该赋值;
(3)否则,选择某个变量并重新对其赋值,然后重复上述过程。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值