高级算法设计分析-- Max-SAT(随机算法>近似算法)

笔记来源:高级算法设计(孙晓明老师部分)
https://en.wikipedia.org/wiki/Maximum_satisfiability_problem#Weighted_MAX-SAT
随机算法在近似算法中的应用
本节问题可能利用条件期望去随机化,将随机化算法转化为近似算法,也可以利用LP+rounding+ 条件期望去随机化

1. MAX-SAT定义

在这里插入图片描述
在这里插入图片描述
SAT,NP问题是否存在一系列变量的取值为真或假使得给定句子为真,SAT不身是不可判定的问题。

MAX-SAT,输入是一系列析取表达式,存在n个变量,m个子句,每一个子句合取表达式在这里插入图片描述
输出是最大化可以取真的子句的数量,n个变量可以为真,也可以为负。
在这里插入图片描述

2. MAX-SAT 求解

希望作一个近似算法,求出的值 A A A尽可能的接近最优的最大值 O P T OPT OPT,使其比值 A / o p t A/opt A/opt尽可能为1。

2.1 条件期望去随机化近似算法

先设计一个不太差的随机算法,然后再去随机化 :设计0-1变量 X i X_i Xi,将 X 1 , … , X n X_1,\dots,X_n X1,,Xn随机赋值。,求出期望能满足的子句个数 E ( Y ) E(Y) E(Y
在这里插入图片描述
Y i 对 应 子 句 C i , 如 果 子 句 C i 为 真 , 则 Y i = 1 Y_i对应子句C_i,如果子句C_i为真,则Y_i=1 YiCi,Cii=1
在这里插入图片描述
例如表达式
在这里插入图片描述
而每个子句期望或者说为真的概率与子句中变量有关,变量个数越多,则对应的概率越高。
在这里插入图片描述
因此对于3SATR,,则对应的E(Y)/opt可以达到一个7/8的近似。
在这里插入图片描述
对于混合的SAT通过不同的权重都可以获得一个比较高的E(Y)
接下来可以通过去随机化获得一个较好的近似算法

2.2 接下来考虑另外一种算法LP+rounding

思路转化:
在这里插入图片描述

2.2.1 MAX-SAT转化为ILP。

MAX-SAT 转化为ILP,两者是等价的,即整数线性规划的解 y I L P o p t y_{ILP}^{opt} yILPopt是精确解,这里没有采用近似,但是不易求解,因此松弛为线性规划 ,线性规划的解是近似的,且有 y L P o p t > y I L P o p t y_{LP}^{opt}>y_{ILP}^{opt} yLPopt>yILPopt
在这里插入图片描述
将不同的变量用 X 1 … , X n X_1\dots,X_n X1,Xn表示,不同的子句对应一个变量 y i { i = 1 , 2 , … , m } y_i\{i=1,2,\dots,m\} yi{i=1,2,,m}
如何将每一个子句用变量形式化表达?(1)代数化方法
ILP的目标
若将 y 1 y_1 y1表示成这样的方式,约束条件不是线性规划了。
只要析取表达式中变量只要有一个是1 就是1,当所有变量为0 时,y为零,因此与以下等价
在这里插入图片描述
在这里插入图片描述
这就是如何将MAX-SAT 转化为等价的整数线性规划,

2.2.2 ILP转化为RLP。

将整数线性规划松弛为线性规划
在这里插入图片描述
椭球法和内敛法可以多项式时间复杂度内求解Relaxiation LP
由于松弛后可行域变大因此 y L P o p t > y I L P o p t y_{LP}^{opt}>y_{ILP}^{opt} yLPopt>yILPopt.我们希望 y L P o p t y_{LP}^{opt} yLPopt能否大于 α y L P o p t \alpha y_{LP}^{opt} αyLPopt,这样的话可以得到一个 α \alpha α近似(比值)
在这里插入图片描述

2.3 ·LP->LP+Rounding

x 1 ∗ , … , x n ∗ , y 1 ∗ , … , y n ∗ , x_1^*,\dots,x_n^*,y_1^*,\dots,y_n^*, x1,,xn,y1,,yn,表示松弛后的LP的解 y L P y_{LP} yLP,然后利用Rounding (随机舍入)方法由 x 1 ∗ , … , x n ∗ , y 1 ∗ , … , y n ∗ , x_1^*,\dots,x_n^*,y_1^*,\dots,y_n^*, x1,,xn,y1,,yn,出发得到一个最终的近似解 x 1 , … , x n , y 1 , … , y n x_1,\dots,x_n,y_1,\dots,y_n x1,,xn,y1,,yn,且有 y ≥ ? y I L P o p t y\ge?y_{ILP}{opt} y?yILPopt

接下来求Rounding 后的解:设独立的随机变量 X i X_i Xi,表示子句 C i C_i Ci中的合取变量
目前已经求出了LP的解 x 1 ∗ , … , x n ∗ x_1^*,\dots,x_n^* x1,,xn由于其属于0-1 之间,因此可以将其看作是 X i X_i Xi取不同值的概率值,那么 X i X_i Xi最终确定下来的值作为最后的解。具体来说,
在这里插入图片描述
将不同的子句用取值0-1 之间的随机变量表示,即每一个子句的取值都有0-1

在这里插入图片描述
那么 Y = ∑ Y i Y=\sum Y_i Y=Yi即为rounding 后的最终的近似解,以下这里求出它的期望的界。

2.3.1 求期望的界在这里插入图片描述在这里插入图片描述

怎样将其和 y 1 ∗ y_1^* y1联系起来呢,由均值不等式及约束条件在这里插入图片描述
在这里插入图片描述
一般的对于有k个变量的 C i C_i Ci子句有下列式子成立
在这里插入图片描述
即我们将每一个 y i y_i yi y i ∗ y_i^* yi联系起来了
在这里插入图片描述
它是关于 y i ∗ y_i^* yi为变量的函数,其中这里的k是常数

可以令 1 − ( 1 − y i ∗ k ) k = f ( y i ∗ ) 1-(1-\frac{y_i^*}{k})^k=f(y_i^*) 1(1kyi)k=f(yi)
f ( y i ∗ ) y i ∗ \frac{f(y_i^*)}{y_i*} yif(yi)求导,当 y i ∗ = 1 y_i^*=1 yi=1有极小值,并利用放缩求得
f ( y i ∗ ) ≥ ( 1 − ( 1 − 1 k ) k ) ∗ y i ∗ ≥ ( 1 − 1 e ) ∗ y i ∗ f(y_i^*)\ge(1-(1-\frac{1}{k})^k)*y_i^*\ge(1-\frac{1}{e})*y_i^* f(yi)(1(1k1)k)yi(1e1)yi

之所以变成这样的形式,是为了求出先前提到的 α \alpha α
在这里插入图片描述
即做到0.63的近似,(LP是松弛后的结果,实际中比它大,因此这个界只会大于0.63)
在实际中当每个 C i C_i Ci出现的变量不一致时,实际中,对于每个 X i X_i Xi根据其出现次数作为权重进行概率赋值,而不是1/2,比如X_i 的补出现的次数比X_i出现的多,则 P X i = 1 < 1 2 P{X_i=1}<\frac{1}{2} PXi=1<21

上面近似算法利用LP+ rounding (随机舍入)求得一个不低于0.63的期望值,

因此可以通过条件期望去随机化,
求得一个 Y = f ( x 1 , x 2 , … , x n ) ≥ E ( Y ) ≥ 0.63 o p t Y=f(x_1,x_2,\dots,x_n)\ge E(Y)\ge0.63opt Y=f(x1,x2,,xn)E(Y)0.63opt
这里用到了条件期望去随机化算法的原理,可以参考之前的介绍

主要思路:还是逐个固定不同的变量,然后放缩

0.63 o p t ≤ E ( Y ) = P r ( X 1 = 1 ) E ( Y ∣ X 1 = 1 ) + P r ( X 1 = 0 ) E ( Y ∣ X 1 = 0 ) = x 1 ∗ ϕ 1 , 1 + ( 1 − x 1 ∗ ) ϕ 1 , 0 ≤ max ⁡ ( ϕ 1 , 1 , ϕ 1 , 0 ) < ⋯ < ⋯ < E ( Y ∣ X 1 = x 1 , X 2 = x 2 , … , X n = x n ) = f ( x 1 , x 2 , … , x n ) , 0.63opt \leq E(Y)=Pr(X_1=1)E(Y|X_1=1)+Pr(X_1=0)E(Y|X_1=0)=x_1^*\phi_{1,1}+(1-x_1^*)\phi_{1,0} \le \max(\phi_{1,1},\phi_{1,0})<\dots<\dots<E(Y|X_1=x_1,X_2=x_2,\dots,X_n=x_n)=f(x_1,x_2,\dots,x_n), 0.63optE(Y)=Pr(X1=1)E(YX1=1)+Pr(X1=0)E(YX1=0)=x1ϕ1,1+(1x1)ϕ1,0max(ϕ1,1,ϕ1,0)<<<E(YX1=x1,X2=x2,,Xn=xn)=f(x1,x2,,xn),
其中的 E ( Y ∣ X 1 = x 1 , X 2 = x 2 , … , X i = x i , X i + 1 , … , X n ) 的 下 界 求 法 用 上 面 的 R o u n d i n g , 即 类 似 于 E ( Y ) 下 界 的 求 解 E(Y|X_1=x_1,X_2=x_2,\dots,X_i=x_i,X_{i+1},\dots,X_{n})的下界求法用上面的Rounding ,即类似于E(Y)下界 的求解 E(YX1=x1,X2=x2,,Xi=xi,Xi+1,,Xn)Rounding,E(Y)

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
国科大的算法设计分析相关1-5章复习题 第一章样例: 1.讲义习题一: 第1(执行步改为关键操作数)、第2、3、6、7题 习题一 1答:执行步4pmn+3pm+2m+1;关键操作2n*m*p 2方法一答:2n-2次 方法二答:2n-2次 3 1)证明:任给c,n>c,则10n2>cn 。不存在c使10n22c时,logn>c,从而n2logn>=cn2,同上。 6 答:logn,n2/3,20n,4n2,3n,n! 7 答:1)6+n 2) 3)任意n 2.讲义习题二:第5题。 答:c、e是割点。每点的DFN、L值:A1,1、B2,1、C3,1、D4,4、E5,1、F6,5、G7,5。最大连通分支CD、EFG、ABCE。 3.考虑下述选择排序算法: 输入:n个不等的整数的数组A[1..n] 输出:按递增次序排序的A For i:=1 to n-1 For j:=i+1 to n If A[j]<A[i] then A[i] A[j] 问:(1)最坏情况下做多少次比较运算?答1+2+..+n-1=n(n-1)/2 (2)最坏情况下做多少次交换运算?在什么输入时发生? n(n-1)/2,每次比较都交换,交换次数n(n-1)/2。 4.考虑下面的每对函数f(n)和g(n) ,比较他们的阶。 (1) f(n)=(n2-n)/2, g(n)=6n (2)f(n)=n+2 , g(n)=n2 (3)f(n)=n+nlogn, g(n)=n (4)f(n)=log(n!), g(n)= 答:(1)g(n)=O(f(n)) (2)f(n)=O(g(n) (3)f(n)=O(g(n) (4)f(n)=O(g(n) 5.在表中填入true或false . 答案: f(n) g(n) f(n)=O(g(n) f(n)=(g(n)) f(n)=(g(n)) 1 2n3+3n 100n2+2n+100 F T F 2 50n+logn 10n+loglogn T T T 3 50nlogn 10nloglogn F T F 4 logn Log2n T F F 5 n! 5n F T F 6.用迭代法求解下列递推方程: (1) (2) ,n=2k 答:(1)T(n)=T(n-1)+n-1=T(n-2)+n-2+n-1 =…=T(1)+1+2+…+n-1=n(n-1)/2=O(n2) (2)T(n)=2T(n/2)+n-1=2(2T(n/4)+n/2-1)+n-1 =4T(n/4)+n-2+n-1=4(2T(n/23)+n/4-1)+n-2+n-1 =23T(n/23)+n-4+n-2+n-1
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值