筆記來源:高級算法設計(孫曉明老師部分)
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儘可能的接近最優的最大值OPT,使其比值A/opt儘可能爲1。
2.1 條件期望去隨機化近似算法
先設計一個不太差的隨機算法,然後再去隨機化 :設計0-1變量Xi,將X1,…,Xn隨機賦值。,求出期望能滿足的子句個數E(Y)
Yi對應子句Ci,如果子句Ci爲真,則Yi=1
例如表達式
而每個子句期望或者說爲真的概率與子句中變量有關,變量個數越多,則對應的概率越高。
因此對於3SATR,,則對應的E(Y)/opt可以達到一個7/8的近似。
對於混合的SAT通過不同的權重都可以獲得一個比較高的E(Y)
接下來可以通過去隨機化獲得一個較好的近似算法
2.2 接下來考慮另外一種算法LP+rounding
思路轉化:
2.2.1 MAX-SAT轉化爲ILP。
MAX-SAT 轉化爲ILP,兩者是等價的,即整數線性規劃的解yILPopt是精確解,這裏沒有采用近似,但是不易求解,因此鬆弛爲線性規劃 ,線性規劃的解是近似的,且有yLPopt>yILPopt
將不同的變量用X1…,Xn表示,不同的子句對應一個變量yi{i=1,2,…,m}
如何將每一個子句用變量形式化表達?(1)代數化方法
若將y1表示成這樣的方式,約束條件不是線性規劃了。
只要析取表達式中變量只要有一個是1 就是1,當所有變量爲0 時,y爲零,因此與以下等價
這就是如何將MAX-SAT 轉化爲等價的整數線性規劃,
2.2.2 ILP轉化爲RLP。
將整數線性規劃鬆弛爲線性規劃
橢球法和內斂法可以多項式時間複雜度內求解Relaxiation LP
由於鬆弛後可行域變大因此yLPopt>yILPopt.我們希望yLPopt能否大於αyLPopt,這樣的話可以得到一個α近似(比值)
2.3 ·LP->LP+Rounding
用x1∗,…,xn∗,y1∗,…,yn∗,表示鬆弛後的LP的解yLP,然後利用Rounding (隨機舍入)方法由x1∗,…,xn∗,y1∗,…,yn∗,出發得到一個最終的近似解x1,…,xn,y1,…,yn,且有y≥?yILPopt
接下來求Rounding 後的解:設獨立的隨機變量Xi,表示子句Ci中的合取變量
目前已經求出了LP的解x1∗,…,xn∗由於其屬於0-1 之間,因此可以將其看作是Xi取不同值的概率值,那麼Xi最終確定下來的值作爲最後的解。具體來說,
將不同的子句用取值0-1 之間的隨機變量表示,即每一個子句的取值都有0-1
那麼Y=∑Yi即爲rounding 後的最終的近似解,以下這裏求出它的期望的界。
2.3.1 求期望的界
怎樣將其和y1∗聯繫起來呢,由均值不等式及約束條件
一般的對於有k個變量的Ci子句有下列式子成立
即我們將每一個yi與yi∗聯繫起來了
它是關於yi∗爲變量的函數,其中這裏的k是常數
可以令1−(1−kyi∗)k=f(yi∗)
yi∗f(yi∗)求導,當yi∗=1有極小值,並利用放縮求得
f(yi∗)≥(1−(1−k1)k)∗yi∗≥(1−e1)∗yi∗
之所以變成這樣的形式,是爲了求出先前提到的α
即做到0.63的近似,(LP是鬆弛後的結果,實際中比它大,因此這個界只會大於0.63)
在實際中當每個Ci出現的變量不一致時,實際中,對於每個Xi根據其出現次數作爲權重進行概率賦值,而不是1/2,比如X_i 的補出現的次數比X_i出現的多,則PXi=1<21
上面近似算法利用LP+ rounding (隨機舍入)求得一個不低於0.63的期望值,
因此可以通過條件期望去隨機化,
求得一個Y=f(x1,x2,…,xn)≥E(Y)≥0.63opt
這裏用到了條件期望去隨機化算法的原理,可以參考之前的介紹
主要思路:還是逐個固定不同的變量,然後放縮
0.63opt≤E(Y)=Pr(X1=1)E(Y∣X1=1)+Pr(X1=0)E(Y∣X1=0)=x1∗ϕ1,1+(1−x1∗)ϕ1,0≤max(ϕ1,1,ϕ1,0)<⋯<⋯<E(Y∣X1=x1,X2=x2,…,Xn=xn)=f(x1,x2,…,xn),
其中的E(Y∣X1=x1,X2=x2,…,Xi=xi,Xi+1,…,Xn)的下界求法用上面的Rounding,即類似於E(Y)下界的求解