單純形法的平滑分析

我們採用這樣的形式來討論線性規劃:\(\max c^\top x\) subject to \(Ax\leq b\),其中\(x,c\in \R^n\)\(A \in \R^{m\times n},b\in \R^m\)。其中\(P=\{x\mid Ax\leq b\}\)稱爲可行域,是\(\R^n\)中的多面體。求解線性規劃問題的最常用算法就是單純形法,它指出我們從\(P\)的一個頂點\(x_0\)出發,每次沿着多面體\(P\)的棱轉移到一個使得\(c^\top x_0'>c^\top x_0\)的頂點\(x_0'\),直到當前頂點形成局部最優解(無法繼續轉移),此時得到的就是線性規劃的最優解。由此可見,單純形法的複雜度與\(P\)的頂點個數有關。儘管在二維時多邊形的頂點數等於邊數等於約束個數\(m\),但在高維時就不是這樣的了:\(n\)維空間中的單位立方體的頂點數達到\(2^n\),是關於\(n\)的指數規模的。可以構造這樣的線性規劃的例子,使得單純形法必須幾乎訪問\(P\)的全部頂點才能達到局部最優,因此單純形法在worst case下是指數複雜度的。Spielman and Teng於2004年提出了關於特定的一種單純形法的平滑分析,在對參數\(A,b,c\)的每一項都疊加上一個輕微擾動以後,期望意義下算法有多項式的複雜度。

投影點單純形法(The Shadow Vertex Simplex Method)

單純形法的關鍵在於轉移頂點的選取。當處於某個頂點時,如果存在多個更優的相鄰節點,本質上選取任意一個更優的相鄰節點都是可行的,但是不同的選取規則就會產生不同的單純性算法。這一選取規則稱爲Pivot Rule。下面我們引入Shadow Vertex Rule,並基於這種單純形法做平滑分析(這個pivot rule在實踐中並不常用,但是它在分析上更方便)。

在線性規劃問題\(\max c^\top x\) subject to \(Ax\leq b\)中,給定參數\(A,b\)就確定了多面體\(P\)。此時對於任意給定的\(c\),能使得\(c^\top x\)最大的那些可行的\(x\)就是\(P\)\(c\)的方向上投影最大的\(x\)。我們定義\(P[c]\)來表示這些點,稱爲\(P\)\(c\)下的一個最優面(Optimal Face):\(P[c]=\{x\mid x\in P,c^\top x=\sup\limits_{z\in P}c^\top z\}\)。假如我們把參數\(c\)換做\(d\),那麼我們在\(d\)的方向上做投影同樣能得到另一個集合\(P[d]\)。現在假如我們確定了\(c,d\),我們來考慮當我們在\(c,d\)確定的平面內由\(c\)\(d\)旋轉方向向量時,最優面會發生什麼樣的變化。這等價於,對於\(\forall \lambda\in [0,1]\),我們考察\(P[\lambda c+(1-\lambda)d]\)的變化。我們容易發現,如果\(P[c]=P[d]\),那麼這個集合是不會發生改變的,也即\(\forall \lambda\in [0,1],P[c]=P[d]=P[\lambda c+(1-\lambda)d]\)。如果\(c\neq d\),那麼我們會在旋轉過程中得到一列隨時間變化的最優面序列,稱爲\(P\)關於從\(c\)\(d\)的一條Shadow Path。\(P\)的最優面總數是有限的,因此旋轉過程中我們只會經過有限個不同的最優面。從幾何上我們容易想象(以二維爲例),造成最優面突變的\(\lambda\)對應的是\(P\)的頂點,而使得最優面相對靜止的對應的是\(P\)的棱。因此我們找出那些使得最優面突變的\(\lambda\),從小到大排列爲\(0=\lambda_0<\lambda_1<\cdots<\lambda_k<\lambda_{k+1}=1\),令\(e_i=P[(1-\lambda_i)c+\lambda_i d]\)\(v_i=P[(1-\lambda)c+\lambda d],\lambda \in (\lambda_i,\lambda_{i+1})\),那麼Shadow Path就可以記爲\(P(c,d)=(v_0,e_1,v_1,\cdots,e_k,v_k)\)。其中,\(v_i=e_i\cap e_{i+1}\)\(v_0=P[c][d],v_k=P[d][c],v_{i-1}=e_i[c]=e_i[-d],v_i=e_i[-c]=e_i[d]\) (這些性質在Lemma 14.3中陳述,嚴格來說是需要證明的,但從幾何上其實是顯然的:\(v_i\)是相鄰兩個最優面的交界點,起點是\(c\)的最優面上最大化\(d\)的部分,終點是\(d\)的最優面上最大化\(c\)的部分,\(v_{i-1}\)\(e_i\)上最大化\(c\)的部分,同時也是\(e_i\)上最小化\(d\)的部分,\(v_i\)同理)。如果\(e_i\)恰好對應着\(P\)的棱(這意味着\(v_i\)一定恰好對應\(P\)的頂點),我們就稱這一shadow path是nondegenerate的,我們下面只討論nondegenerate的情況。注意到,此時shadow path對應着一條有效的simplex path!

如果我們把多面體\(P\)做這樣的關於\(c,d\)的投影:\(\forall x\in P,\pi_{c,d}=(c^\top x,d^\top x)\),此時我們得到了一個\(P\)\(\R^2\)上的投影\(\pi_{c,d}(P)\)。此時我們可以證明(Lemma 14.5),原先\(P\)上的shadow path和二維投影上的shadow path有這樣的一一對應關係:記\(e_c=(1,0),e_d=(0,1)\),則\([\pi_{c,d}(P)](e_c,e_d)=(\pi_{c,d}(v_0),\pi_{c,d}(e_1),\pi_{c,d}(v_1),\cdots,\)\(\pi_{c,d}(e_k),\pi_{c,d}(v_k))\)。也就是說,原先的shadow path在經過投影后恰好也是二維投影上關於兩個座標軸正方向的shadow path,而顯然這個二維的shadow path就是\(\pi_{c,d}(P)\)在右上方的凸包。在這條shadow path上斜率是單調遞增的,因此在\(\pi_{c,d}(P)\)上的pivot rule就是“沿着斜率最大方向轉移”。這樣我們就得到了在原先\(P\)上轉移的pivot rule:對於\(x_0\in P\),我們應當轉移到使得\(\dfrac{d^\top(x_1-x_0)}{c^\top (x_1-x_0)}\)最大的\(x_1\)。我們發現,這其實又是一個關於\(x_0\)的可行方向的一個線性規劃問題:設可行方向集合爲\(T_P(x_0)=\{w\in \R^n\mid \exists \varepsilon>0 \text{ s.t. }x+\varepsilon w\in P\}\),我們其實就是要最大化\(d^\top w\) subject to \(w\in T_P(x_0),c^\top w=1\)。在具體問題中,這個線性規劃有不同的形式,我們將在問題中具體討論。至此,我們已經能完整描述了投影點單純形法的執行過程:對於\(\max d^\top x\) subject to \(Ax\leq b\),我們選定一個\(c\),從起點\(x_0\)出發,求解\(d^\top w\) subject to \(w\in T_P(x_0),c^\top w=1\),沿\(w\)方向前進直到無法前進,重複此過程直到可行方向集合爲空。

最小費用最大流\(\newcommand{\E}{\mathbb{E}}\)\(\newcommand{\tight}{\text{tight}}\)

下面我們用一個網絡流的例子來對投影點單純形法做平滑分析。

對於給定的一個網絡,每條邊除了有一個容量限制以外還有一個單位流量的費用。我們要找到一個這個網絡上的最大流,這個最大流是所有最大流中費用最小的。其中一個流的費用定義爲每條邊上的流量乘以這條邊的單位費用之和。

最小費用最大流問題可以表述爲線性規劃問題。對於有向圖\(G(V,E)\)有源點和匯點\(s,t\in V\)。邊的容量用向量表示爲\(u\in \R_+^E\)。邊的費用(方便起見我們假設費用只能取0或1)用向量表示爲\(c\in (0,1)^E\)。流量\(f\in \R_+^E\)必須滿足\(\sum\limits_{ij\in E}f_{ij}=\sum\limits_{ji\in E}f_{ji},\forall i\in V\setminus \{s,t\}\)(每個節點的流入等於流出),同時\(0\leq f_{ij}\leq u_{ij},\forall ij \in E\)(流量不能超過容量)。於是流的費用寫作\(c^\top f\)。我們要在以上限制條件下找到所有使得\(\sum\limits_{si\in E}f_{si}\)(流量)取到最大值的\(f\)中使得\(c^\top f\)最小的那個。

把目標函數\(\sum\limits_{si\in E}f_{si}\)寫作\(d^\top f\)(此時\(d\)在與源點相連的邊上取1,其餘取0)。設可行域爲\(P\),那麼最大流的集合是最優面\(P[d]\)。我們想讓\(P[d]\)中的流的費用盡量小,就是要最小化\(c^\top f\),所以最小費用最大流的集合寫作\(P[d][-c]\)。那麼我們只需考慮shadow path \(P(-c,d)\),根據Lemma 14.3,它的起點是\(P[-c][d]\),終點是\(P[d][-c]\)。而\(P[-c]\)是在不考慮流量的情況下最小化費用,因此只有唯一的零流滿足要求,也即\(P[-c]=\{0\}\),因此\(P[-c][d]=\{0\}\)。因此我們直接從\(0\)出發,選定方向向量\(-c,d\)做投影執行shadow vertex simplex就能求出最小費用最大流了。

可以證明(Lemma 14.11),在以上執行shadow vertex simplex的過程中,尋找最大的斜率恰好對應到網絡流中是在殘量網絡中選取關於費用的最短路。這就是經典的連續最短路算法(The Successive Shortest Path Algorithm, SSP),從0流量出發,每次選擇費用的最短路做增廣,就能求得最小費用最大流。進一步,在shadow path上,\(e_i\)\(c,d\)平面上的斜率恰好等於\(v_{i-1}\)殘量網絡下\(s\)\(t\)的費用最短路,同時等於在\(v_i\)殘量網絡下\(t\)\(s\)的費用最短路的相反數。方便起見,用記號表示如下\(p_{s,t}(v_{i-1})=s_{c,d}(e_i)=-p_{t,s}(v_i)\)

SSP算法的正確性證明如下:我們證明每次增廣以後我們得到的都是當前流量下的最小費用流。歸納法,流量爲0時費用爲0,已經是最小費用流了。假設當前流量爲\(w\),我們已經得到了當前流量下的最小費用流\(f_w\)。此時我們求出一條費用之和最小的增廣路,做增廣\(w+\delta\),我們證明\(f_{w+\delta}\)一定是最小費用流。假如不是這樣,那麼設最小費用流爲\(f'_{w+\delta}\)。考慮\(f'_{w+\delta}-f_w\),它也是一條增廣路,並且它的費用比我們求出的最短路還短,這意味着它經過了殘量網絡上一定關於費用的負環。也即我們的算法在得到\(f_w\)時,殘量網絡上還存在一條含負環的增廣路,這與\(f_w\)是最小費用流矛盾,因爲我們完全可以填滿負環上的殘量(不改變流量大小)使得總費用更小。

人們證明了SSP算法在worst-case下有指數的複雜度,現在我們對SSP做平滑分析,證明我們對邊的費用做輕微擾動之後,SSP的複雜度在期望意義下是多項式級別的。我們給邊的費用疊加一個滿足正態分佈\(\mathcal{N}(0,\sigma^2)\)的隨機變量,這樣擾動後每條邊的費用在\([0,1]\)後形成一個概率分佈(要求擾動以後邊的費用依然落在\([0,1]\)內)。正態分佈的一大好處在於其概率密度是有上界的,因此我們證明下面這個更廣泛意義下的結論:設每條邊的費用\(c_e\)是在\((0,1)\)上以概率密度\(f\)取值的獨立的隨機變量,其概率密度函數\(f\)滿足\(\forall x\in (0,1),\)\(0<f(x)\leq\phi\),其中\(\phi\)是參數且\(\phi\geq 1\),那麼SSP的迭代次數有上界\(O(mn\phi)\)\(n=|V|,m=|E|\))。

我們只需對於SSP對應的shadow path \(P(-c,d)=(v_0,e_1,v_1,\cdots,e_k,v_k)\),記\(P_E(-c,d)=(e_1,e_2,\cdots,e_k)\)\(P_V(-c,d)=(v_0,v_1,\cdots,v_k)\),證明\(\E[|P_E(-c,d)|]\leq O(mn\phi)\)

對於流\(f\),我們用\(\tight_P(f)\)表示\(E\)中所有流量爲0的邊的集合(包括反向邊在內,也即反向邊的流量等於容量的邊)。那麼我們注意到對於shadow path \(P(-c,d)=(v_0,e_1,\cdots,e_k,v_k)\)\(\forall i\in [k]\)滿足:存在\(a\in E\)使得\(a\in \tight_P(v_{i-1})\)\(a\not\in \tight_P(e_i)\),也即每一次找到的新的增廣路都一定包含一條流量爲0的邊(如果沒有這樣的邊就說明上一次增廣沒有把流量加滿,矛盾)。這樣的邊至少有\(k\)條,因此\(k\leq \sum\limits_{a\in E}\mathbb{1}[\exists i\in [t]\text{ s.t. } a\in \tight_P(v_{i-1})\and a\not\in \tight_P(e_i)]\),右式可以進一步放大爲\(\sum\limits_{a\in E}\sum\limits_{i=1}^{k}\mathbb{1}[a\in \tight_P(v_{i-1})\and a\not\in \tight_P(e_i)]\),而\(|P_E(-c,d)|=k\),於是我們得到不等式\(|P_E(-c,d)|\leq\)\(\sum\limits_{a\in E}\sum\limits_{i=1}^{k} \mathbb{1}[a\in \tight_P(v_{i-1})\and a\not\in \tight_P(e_i)]\)

\(\forall \text{ fixed } a\in E\),如果\(a\in \tight_P(v_{i-1})\and a\not\in \tight_P(e_i)\),根據Lemma 14.11有\(p_{s,t}(v_{i-1})=s(e_i)\),其中\(p_{s,t}(v_{i-1})\)用到了\(a\)這條邊,我們用上標\(a+\)來表示,於是\(p_{s,t}^{a+}(v_{i-1})=s(e_i)\)。同時,\(-p_{t,s}(v_{i-1})=s(e_{i-1})\)。在上凸包中斜率是單調遞增的,因此\(-p_{t,s}(v_{i-1})=s(e_{i-1})\leq s(e_i)=p_{s,t}^{a+}(v_{i-1})\)。如果在最短路中禁用一條邊,最短路一定會變大,我們用上標\(a-\)表示禁止流過邊\(a\)(強制流量爲0),那麼不等式放縮爲\(-p_{t,s}^{a-}(v_{i-1})\leq p_{s,t}^{a+}(v_{i-1})\leq p_{s,t}^{a-}(v_{i-1})\)。假如定義禁用\(a\)邊的可行域\(P_a=\{f\in P\mid a\in \tight_P(f)\}\),那麼既然\(v_{i-1}\in P(-c,d)\)這一path中,一定也有\(v_{i-1}\in P_a(-c,d)\)(因爲前\(i\)\(a\)的存在與否完全不會造成影響)。記\(P_a(-c,d)=\{v_0^a,e_1^a,v_1^a,\cdots,e_{k_a}^{a},v_{k_a}^{a}\}\),那麼推出\(-p_{t,s}^{a-}(v_{i-1}^a)\leq p_{s,t}^{a+}(v_{i-1}^a)\leq p_{s,t}^{a-}(v_{i-1}^a)\)。綜上,\(\sum\limits_{i=1}^{k} \mathbb{1}[a\in \tight_P(v_{i-1})\and a\not\in \tight_P(e_i)]\leq\sum\limits_{i=1}^{k_a}\mathbb{1}[-p_{t,s}^{a-}(v_{i-1}^a)\leq p_{s,t}^{a+}(v_{i-1}^a)\leq p_{s,t}^{a-}(v_{i-1}^a)]\)

拋開首尾兩項,並調整下標,有\(\sum\limits_{i=1}^{k_a}\mathbb{1}[-p_{t,s}^{a-}(v_{i-1}^a)\leq p_{s,t}^{a+}(v_{i-1}^a)\leq p_{s,t}^{a-}(v_{i-1}^a)]=2+\sum\limits_{i=1}^{k_a-1}\mathbb{1}[-p_{t,s}^{a-}(v_{i}^a)\leq p_{s,t}^{a+}(v_{i}^a)\leq p_{s,t}^{a-}(v_{i}^a)]\)。邊\(a\)的費用記爲\(c_a\),我們把上式對\(c_a\)取期望\(\E_{c_a}\left[\sum\limits_{i=1}^{k_a-1}\mathbb{1}[-p_{t,s}^{a-}(v_{i}^a)\leq p_{s,t}^{a+}(v_{i}^a)\leq p_{s,t}^{a-}(v_{i}^a)]\right]=\sum\limits_{i=1}^{k_a-1}\Pr_{c_a}\left[-p_{t,s}^{a-}(v_{i}^a)\leq p_{s,t}^{a+}(v_{i}^a)\leq p_{s,t}^{a-}(v_{i}^a)\right]\)。設\(a=pq\),則\(p_{s,t}^{a+}(v_i^a)=p_{s,p}(v_i^a)+p_{q,t}(v_i^a)+c_a\),那麼\(\Pr_{c_a}\left[-p_{t,s}^{a-}(v_{i}^a)\leq p_{s,t}^{a+}(v_{i}^a)\leq p_{s,t}^{a-}(v_{i}^a)\right]=\Pr_{c_a}[p_{s,p}(v_i^a)+p_{q,t}(v_i^a)+c_a\in [-p_{t,s}^{a-}(v_{i}^a),p_{s,t}^{a-}(v_{i}^a)]]\),顯然\(p_{s,p}(v_i^a)+p_{q,t}(v_i^a)\)不包含任何與\(c_a\)有關的信息,因此可以看作常數移到右側的區間內,得到\(\Pr_{c_a}[c_a\in [-p_{t,s}^{a-}(v_{i}^a)-p_{s,p}(v_i^a)-p_{q,t}(v_i^a),p_{s,t}^{a-}(v_{i}^a)-p_{s,p}(v_i^a)-p_{q,t}(v_i^a)]]\)

\(=\displaystyle\int_{-p_{t,s}^{a-}(v_{i}^a)-p_{s,p}(v_i^a)-p_{q,t}(v_i^a)}^{p_{s,t}^{a-}(v_{i}^a)-p_{s,p}(v_i^a)-p_{q,t}(v_i^a)}f(x)\text{ d}x\leq \phi\cdot (p_{s,t}^{a-}(v_i^a)-(-p_{t,s}^{a-}(v_i^a)))\)。而由於頂點數爲\(n\),任何最短路長度都不能超過\(n-1\),因此\(\leq (n-1)\phi\)

綜上,\(\E[|P_E(-c,d)|]\leq \sum\limits_{a\in E}\sum\limits_{i=1}^{k} \mathbb{1}[a\in \tight_P(v_{i-1})\and a\not\in \tight_P(e_i)]\)\(\leq \sum\limits_{a\in E}\left(2+\sum\limits_{i=1}^{k_a-1}\mathbb{1}[-p_{t,s}^{a-}(v_{i}^a)\leq p_{s,t}^{a+}(v_{i}^a)\leq p_{s,t}^{a-}(v_{i}^a)]\right)\leq 2m(2+(n-1)\phi)\)\(=4m+2m(n-1)\phi=O(mn\phi)\)

直觀上我們發現,如果SSP迭代了很多很多輪,那麼每兩輪之間最短路長度其實差別是非常小的。在大多數情況下,這是不會發生的。這正是我們做平滑分析的基本觀點。

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