高級算法設計分析-- 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 求解

希望作一個近似算法,求出的值AA儘可能的接近最優的最大值OPTOPT,使其比值A/optA/opt儘可能爲1。

2.1 條件期望去隨機化近似算法

先設計一個不太差的隨機算法,然後再去隨機化 :設計0-1變量XiX_i,將X1,,XnX_1,\dots,X_n隨機賦值。,求出期望能滿足的子句個數E(YE(Y)
在這裏插入圖片描述
YiCi,Cii=1Y_i對應子句C_i,如果子句C_i爲真,則Y_i=1
在這裏插入圖片描述
例如表達式
在這裏插入圖片描述
而每個子句期望或者說爲真的概率與子句中變量有關,變量個數越多,則對應的概率越高。
在這裏插入圖片描述
因此對於3SATR,,則對應的E(Y)/opt可以達到一個7/8的近似。
在這裏插入圖片描述
對於混合的SAT通過不同的權重都可以獲得一個比較高的E(Y)
接下來可以通過去隨機化獲得一個較好的近似算法

2.2 接下來考慮另外一種算法LP+rounding

思路轉化:
在這裏插入圖片描述

2.2.1 MAX-SAT轉化爲ILP。

MAX-SAT 轉化爲ILP,兩者是等價的,即整數線性規劃的解yILPopty_{ILP}^{opt}是精確解,這裏沒有采用近似,但是不易求解,因此鬆弛爲線性規劃 ,線性規劃的解是近似的,且有yLPopt>yILPopty_{LP}^{opt}>y_{ILP}^{opt}
在這裏插入圖片描述
將不同的變量用X1,XnX_1\dots,X_n表示,不同的子句對應一個變量yi{i=1,2,,m}y_i\{i=1,2,\dots,m\}
如何將每一個子句用變量形式化表達?(1)代數化方法
ILP的目標
若將y1y_1表示成這樣的方式,約束條件不是線性規劃了。
只要析取表達式中變量只要有一個是1 就是1,當所有變量爲0 時,y爲零,因此與以下等價
在這裏插入圖片描述
在這裏插入圖片描述
這就是如何將MAX-SAT 轉化爲等價的整數線性規劃,

2.2.2 ILP轉化爲RLP。

將整數線性規劃鬆弛爲線性規劃
在這裏插入圖片描述
橢球法和內斂法可以多項式時間複雜度內求解Relaxiation LP
由於鬆弛後可行域變大因此yLPopt>yILPopty_{LP}^{opt}>y_{ILP}^{opt}.我們希望yLPopty_{LP}^{opt}能否大於αyLPopt\alpha y_{LP}^{opt},這樣的話可以得到一個α\alpha近似(比值)
在這裏插入圖片描述

2.3 ·LP->LP+Rounding

x1,,xn,y1,,yn,x_1^*,\dots,x_n^*,y_1^*,\dots,y_n^*,表示鬆弛後的LP的解yLPy_{LP},然後利用Rounding (隨機舍入)方法由x1,,xn,y1,,yn,x_1^*,\dots,x_n^*,y_1^*,\dots,y_n^*,出發得到一個最終的近似解x1,,xn,y1,,ynx_1,\dots,x_n,y_1,\dots,y_n,且有y?yILPopty\ge?y_{ILP}{opt}

接下來求Rounding 後的解:設獨立的隨機變量XiX_i,表示子句CiC_i中的合取變量
目前已經求出了LP的解x1,,xnx_1^*,\dots,x_n^*由於其屬於0-1 之間,因此可以將其看作是XiX_i取不同值的概率值,那麼XiX_i最終確定下來的值作爲最後的解。具體來說,
在這裏插入圖片描述
將不同的子句用取值0-1 之間的隨機變量表示,即每一個子句的取值都有0-1

在這裏插入圖片描述
那麼Y=YiY=\sum Y_i即爲rounding 後的最終的近似解,以下這裏求出它的期望的界。

2.3.1 求期望的界在這裏插入圖片描述在這裏插入圖片描述

怎樣將其和y1y_1^*聯繫起來呢,由均值不等式及約束條件在這裏插入圖片描述
在這裏插入圖片描述
一般的對於有k個變量的CiC_i子句有下列式子成立
在這裏插入圖片描述
即我們將每一個yiy_iyiy_i^*聯繫起來了
在這裏插入圖片描述
它是關於yiy_i^*爲變量的函數,其中這裏的k是常數

可以令1(1yik)k=f(yi)1-(1-\frac{y_i^*}{k})^k=f(y_i^*)
f(yi)yi\frac{f(y_i^*)}{y_i*}求導,當yi=1y_i^*=1有極小值,並利用放縮求得
f(yi)(1(11k)k)yi(11e)yif(y_i^*)\ge(1-(1-\frac{1}{k})^k)*y_i^*\ge(1-\frac{1}{e})*y_i^*

之所以變成這樣的形式,是爲了求出先前提到的α\alpha
在這裏插入圖片描述
即做到0.63的近似,(LP是鬆弛後的結果,實際中比它大,因此這個界只會大於0.63)
在實際中當每個CiC_i出現的變量不一致時,實際中,對於每個XiX_i根據其出現次數作爲權重進行概率賦值,而不是1/2,比如X_i 的補出現的次數比X_i出現的多,則PXi=1<12P{X_i=1}<\frac{1}{2}

上面近似算法利用LP+ rounding (隨機舍入)求得一個不低於0.63的期望值,

因此可以通過條件期望去隨機化,
求得一個Y=f(x1,x2,,xn)E(Y)0.63optY=f(x_1,x_2,\dots,x_n)\ge E(Y)\ge0.63opt
這裏用到了條件期望去隨機化算法的原理,可以參考之前的介紹

主要思路:還是逐個固定不同的變量,然後放縮

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),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),
其中的E(YX1=x1,X2=x2,,Xi=xi,Xi+1,,Xn)Rounding,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)下界 的求解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章