• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            xiaoguozi's Blog
            Pay it forword - 我并不覺(jué)的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過(guò)程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛(ài)傳出去,很困難,也無(wú)法預(yù)料,人們需要更細(xì)心的觀(guān)察別人,要隨時(shí)注意才能保護(hù)別人,因?yàn)樗麄兾幢刂雷约阂裁础ぁぁぁぁ?/span>
            對(duì)于0-1分?jǐn)?shù)規(guī)劃的Dinkelbach算法的分析



                                 武鋼三中 吳豪[譯]

            摘要:
            0-1分?jǐn)?shù)規(guī)劃問(wèn)題是指求出解集{xi|xi=0或1}使目標(biāo)(c1x1+c2x2++cnxn) /(d1x1+d2x2++dnxn)=cx/dx達(dá)到最大。對(duì)于分?jǐn)?shù)規(guī)劃問(wèn)題,Dinkelbach提出了一個(gè)算法,它通過(guò)解決一個(gè)子問(wèn)題Q(L)來(lái)得到原文題的解。這里Q是一個(gè)線(xiàn)性的最小化目標(biāo)函數(shù)cx-Ldx,且滿(mǎn)足x等于0或1。在本文中,我們證明了Dinkelbach算法在最壞情況下可以在O(log(nM))的時(shí)間內(nèi)解決子問(wèn)題,這里M=max{max|ci|,max|di|,1}。
            10-1分?jǐn)?shù)規(guī)劃問(wèn)題



            要使兩個(gè)線(xiàn)性函數(shù)的比值最大或最小的問(wèn)題,我們稱(chēng)作分?jǐn)?shù)規(guī)劃問(wèn)題或雙曲線(xiàn)問(wèn)題。分?jǐn)?shù)規(guī)劃問(wèn)題在許多領(lǐng)域都可以找到[
            22]。它在經(jīng)濟(jì)學(xué)中的應(yīng)用有些常見(jiàn)的例子,如尋找最優(yōu)收入比率或者在效益約束下的最佳物資調(diào)配問(wèn)題。另外,系統(tǒng)效率也常常用比率來(lái)衡量,如收益/時(shí)間、利潤(rùn)/風(fēng)險(xiǎn)和消費(fèi)/時(shí)間。有大量的文章對(duì)這類(lèi)問(wèn)題做了分析[3,512,20,24]。


            有幾類(lèi)分?jǐn)?shù)規(guī)劃問(wèn)題已被廣泛地研究。如0
            -1分?jǐn)?shù)規(guī)劃問(wèn)題[1],它包含最優(yōu)比率生成樹(shù)問(wèn)題[4],最優(yōu)比率環(huán)問(wèn)題[8,619],分?jǐn)?shù)背包問(wèn)題[15],以及分?jǐn)?shù)剪枝問(wèn)題[10]。在本文中,我們研究0-1分?jǐn)?shù)規(guī)劃問(wèn)題,它的描述如下:


            令c
            =(c1,c2,…,cn)和d=(d1,d2,…,dn)為n維整數(shù)向量,那么一個(gè)0-1分?jǐn)?shù)規(guī)劃問(wèn)題用公式描述如下:

            FP: 最小化
            (c1x1
            +…cnxn)/(d1x1…dnxn)=cx/dx
                                   xi∈{
            0,1}
            這里x表示列向量(x1,x2,…,xn)T .
            0-1值向量的子集Ω稱(chēng)作可行域,而x則是Ω的一個(gè)元素,我們稱(chēng)x為可行解。貫穿全文,我們假定對(duì)于任意可行解x,dx都是正數(shù)。這里我們記C=max{max|ci|,1},D=max{max|di|,1}。那么,顯然問(wèn)題的最優(yōu)解在區(qū)間[-nC,nC]內(nèi)。
            對(duì)于分?jǐn)?shù)規(guī)劃問(wèn)題,有許多算法都能利用下面的線(xiàn)性目標(biāo)函數(shù)解決問(wèn)題。

            Q(L): 最小化 cx
            -Ldx

            xi∈{
            0,1}
            記z(L)為Q(L)的最值。令x
            *為分?jǐn)?shù)規(guī)劃的最優(yōu)解,并且令L*=(cx*)/(dx*)(注:分?jǐn)?shù)規(guī)劃的最值)。那么下面就容易知道了:

            z(L) 
            > 0
            當(dāng)且僅當(dāng)
            L
            <L*

            z(L) 
            = 0
            當(dāng)且僅當(dāng)
            L
            =L*

            z(L) 
            < 0
            當(dāng)且僅當(dāng)
            L
            >L*
            此外,Q(L
            *)的最優(yōu)解也能使分?jǐn)?shù)規(guī)劃最優(yōu)化[7,16,17]。因此,解決分?jǐn)?shù)規(guī)劃問(wèn)題在本質(zhì)上等同于尋找L=L*使z(L)=0。出于這個(gè)目的,關(guān)于L的函數(shù)z(L)具有很多不錯(cuò)的性質(zhì):分段線(xiàn)性,凹函數(shù),嚴(yán)格遞減,z(-nC)<0,且z(nC)>0。根據(jù)上面的性質(zhì),顯然當(dāng)我們確定參量L,我們可以檢驗(yàn)最值L*是否大于小于或等于當(dāng)前的L。
            有一些方法能夠產(chǎn)生一系列收斂于L
            *的參量。其中一種借助于二分搜索[17,21,13]。在兩個(gè)不同的可行解的目標(biāo)值不相同的情況下,他們的差距將大于等于1/(nD)^2。這暗示我們,當(dāng)我們采用二分搜索時(shí),最優(yōu)值L*可以通過(guò)解決子問(wèn)題Q(L)在最多O(log(2nC/(1/nD)^2))<=O(log(nCD))的時(shí)間內(nèi)得到。
            在1979年,Megiddo[
            18]提出了一個(gè)巧妙的方法來(lái)系統(tǒng)地產(chǎn)生參量序列。他證明了如果子問(wèn)題Q(L)能夠通過(guò)O(p(n))的比較和O(q(n))的累加被解決,那么分?jǐn)?shù)規(guī)劃問(wèn)題就能用O(p(n)+q(n))的時(shí)間被解決。
            另一種方法理論上類(lèi)似于牛頓迭代法,他被Isbell、Marlow[
            14]和Dinkelbach[7]提出(也被稱(chēng)作Dinkelbach算法)。這個(gè)算法在[17,21,11]中被討論(也可能是其他文獻(xiàn))。下一節(jié)將對(duì)它進(jìn)行正式的論述。Schaible[21]證明了對(duì)于非線(xiàn)性分?jǐn)?shù)規(guī)劃問(wèn)題,二分搜索的方法的收斂速度僅僅是線(xiàn)性的,而Dinkelbach的收斂速度卻是超線(xiàn)性的。另外,據(jù)說(shuō)Dinkelbach算法在實(shí)際應(yīng)用中強(qiáng)力而有效(參見(jiàn)[13,23]的例子)。然而,Dinkelbach算法對(duì)于0-1分?jǐn)?shù)規(guī)劃問(wèn)題的最壞時(shí)間復(fù)雜度卻沒(méi)有被證明。在本文中,我們證明了,Dinkelbach算法最多會(huì)在O(log(nCD))的時(shí)間內(nèi)解決子問(wèn)題。注意它的時(shí)間復(fù)雜度與普通的二分搜索相同。我們的結(jié)論暗示了,如果對(duì)于子問(wèn)題Q(L)存在多項(xiàng)式算法,Dinkelbach算法也能夠在多項(xiàng)式時(shí)間內(nèi)解決分?jǐn)?shù)規(guī)劃問(wèn)題。另外,即使子問(wèn)題Q(L)是NP-完全或NP-難的,對(duì)于特殊的分?jǐn)?shù)規(guī)劃我們也能夠在多項(xiàng)式時(shí)間內(nèi)出解。

            2.Dinkelbach算法的論述
            它本質(zhì)上是觀(guān)察直線(xiàn)



            z
            =cx’-Ldx’
            于函數(shù)z(L)在L
            =L’處相切,這里x’是子問(wèn)題Q(L’)的最優(yōu)解。因此,-dx’是z(L)在L’處的斜率。而且很容易看出上面的直線(xiàn)與L軸相交與L=cx’/dx’.
            現(xiàn)在我們來(lái)描述Dinkelbach對(duì)于分?jǐn)?shù)規(guī)劃的算法。Dinkelbach算法產(chǎn)生了收斂于L
            *的參量序列,如圖1中細(xì)線(xiàn)所示的方式。

            Dinkelbach算法:
            步驟1:設(shè)L
            =L1,使 L*<=L1<=nC
            步驟2:解決子問(wèn)題Q(L)并得到最優(yōu)解x
            步驟3:如果z(L)
            =0,那么輸出x并終止。否則,設(shè)L=cx/dx跳到步驟2

            為了初始化L1,將用到nC,因此充分挖掘拓展問(wèn)題的結(jié)構(gòu)將能做出更好的選擇。

            3.Dinkelbach算法的分析
            在這一節(jié)中,我們假定Dinkelbach算法終止于第k次。我們可以得到一個(gè)參量序列(L1,L2…Lk)和一個(gè)0
            -1值的向量(x1,x2…xk).z(L)的凸度暗示了下面的不等式:


            dx1
            >dx2>>dxk-1>=dxk>0

            cx1
            +nCdx1>cx2+nCdx2>>cxk-1+nCdxk-1>=cxk+nCxk>=0

            由于函數(shù)z(L)是嚴(yán)格遞減的,也很容易發(fā)現(xiàn)

            z(L1)
            <z(L2)<<z(Lk) = 0 并且 L1>L2>>Lk

            引理1 
            如果0
            >=z(Lr)>-1/nD (2<=r<=k) 那么 z(Lr)=0
            證明   由于Lr
            =cxr-1/dxr-1

            z(Lr)
            =cxr- Lr dxr=cxr-(cxr-1dxr)/(dxr-1)=(cxrdxr-1 – cxr-1dxr)/(dxr-1)
            假定z(Lr)
            <0,那么(cxrdxr-1 – cxr-1dxr)<=-1。
            因此不等式0
            <dxr-1<=nD暗示了z(Lr)<=-1/nD。它是矛盾的!
            上面的引理來(lái)源于權(quán)向量c和d的完整性。這個(gè)引理暗示了如果z(Lr)
            >=-1/nD那么z(Lr)=0,因此該算法會(huì)中止于第r次。

            引理2 如果0
            <=cxr+nCdxr<1,那么z(cxr/dxr)=0
            證明   由于cxr
            +nCdxr是整數(shù),如果0<=cxr+nCdxr<1,那么cxr+nCdxr=0并且cxr/dxr=-nC。由于最值L*>=-nC, xr是分?jǐn)?shù)規(guī)劃的最優(yōu)解并且L*=cxr/dxr=-nC。那么顯然有z(cxr/dxr)=z(L*)=0

            上面的引理證明了如果cxr
            +nCdxr < 1,那么算法就在r或者r+1次終止。
            現(xiàn)在給出主要引理:

            引理3
            如果1
            <=r<=k-1那么|z(Lr+1)|<=(1/2)|z(Lr)|或cxr+1+nCdxr+1 <=(1/2)(cxr+nCdxr)將滿(mǎn)足。

            證明 如果Lr
            +nC<=0 那么Lr=L*=-nC 并且它暗示著z(Lr)b=(1/2)z(Lr+1)=0  



            現(xiàn)在假定Lr
            +nC>0。就出現(xiàn)了兩種情況:



             情況(i) 首先我們來(lái)考慮z(Lr
            +1)( Lr+nC)<=z(Lr)/2*(Lr+1+nC)。這個(gè)情形如圖2所示。在這個(gè)圖中,直線(xiàn)z=cxr-Ldxr被記作lr。這里我們將用到圖2的符號(hào)。令M為線(xiàn)段PR的中點(diǎn)。那么點(diǎn)M的坐標(biāo)為( Lr+1 , z(Lr)( Lr+1+nC)/2/ Lr+nC )。因此條件z(Lr+1)( Lr+nC)<=z(Lr)*( Lr+1+nC)/2暗示著點(diǎn)Q=( Lr+1,z(Lr+1))在線(xiàn)段MR上。在這個(gè)條件下,我們證明不等式cxr+1+nC dxr+1<=(1/2)( cxr+nC, dxr)成立。這意味著直線(xiàn)lr+1與線(xiàn)段MR相交,lr+1也與線(xiàn)段M’R’相交,這里M’是線(xiàn)段P’R’的中點(diǎn)?,F(xiàn)在我們證明這個(gè)不等式:



                (Lr
            -Lr+1)( cxr+1+nC dxr+1)




            =( cxr+1-Lr+1 dxr+1) (Lr+nC)- ( cxr+1-Lr dxr+1) (Lr+1+nC)




            =z(Lr+1) (Lr+nC) - ( cxr+1-Lr dxr+1) (Lr+1+nC)




            <= z(Lr) (Lr+1+nC)/2- ( cxr-Lr dxr) (Lr+1+nC)




            =-(1/2) ( cxr-Lr dxr) (Lr+1+nC)=-(1/2)( cxr/ dxr - Lr) dxr( cxr/ dxr+nC)




            =-(1/2)( Lr+1-Lr) ( cxr+nC dxr)=(1/2) (Lr-Lr+1) ( cxr+nC dxr)



            由于Lr
            >Lr+1,那么不等式cxr+1+nC dxr+1<= (1/2) ( cxr+nC dxr)已經(jīng)被證明。



            情況(ii) 接著,考慮z(Lr
            +1)( Lr+nC)>z(Lr)/2*(Lr+1+nC)



            |z(Lr+1)|=- z(Lr+1)< - z(Lr)(nC+ Lr+1)/2/(nC+ Lr)



            =|z(Lr)|(1-(Lr- Lr+1)/ (nC+Lr))/2<=1/2 * |z(Lr)|




            注意無(wú)論
            |z(L)|還是cx+nCdx在過(guò)程中都是不增長(zhǎng)的。



            在第一次,
            |z(L)|的值小于等于2n^2*CD。通過(guò)引理1,顯然如果存在O(log(2n^2CD/(1/nD)))<=O(log(nCD))次,他們每個(gè)都能至少將z(L)減少50%那么,然后就能得到最優(yōu)解。同樣,引理2暗示了將cx+nCdx減少50%的次數(shù)O (log(2n^2CD))<=O(log(nCD))是最壞情況。引理3證明了每次將|z(L)|或cx+nCdx減少50%。因此,重復(fù)總次數(shù)的界限是O(log(nCD))。






            定理4 Dinkelbanch算法最壞情況的運(yùn)行次數(shù)是O(log(nCD))
            <=O(log(nM)),這里M=max{C,D}。



              



            上面的定理證明了Dinkelbanch算法最壞運(yùn)行次數(shù)是O(log(nCD))。它暗示了,如果對(duì)于Q(L)存在強(qiáng)多項(xiàng)式算法,Dinkelbach算法就能在多項(xiàng)式時(shí)間內(nèi)解決分?jǐn)?shù)規(guī)劃問(wèn)題。然而,當(dāng)我們用多項(xiàng)式算法解決了子問(wèn)題后,我們需要估計(jì)目標(biāo)函數(shù)Q(L)的系數(shù)的輸入規(guī)模。在下一節(jié),我們將通過(guò)分析最優(yōu)比率生成樹(shù)和分?jǐn)?shù)調(diào)配問(wèn)題來(lái)討論這一點(diǎn)。






            4.討論



            Chandrasekaran[
            4]提出了最優(yōu)比率生成樹(shù)的算法,它是基于二分搜索的。Dinkelbach算法可以在O(T(v,e)log(vCD))的時(shí)間解決該問(wèn)題,這里v是點(diǎn)的個(gè)數(shù),e是邊的個(gè)數(shù),并且用T(v,e)表示計(jì)算普通最小生成樹(shù)的強(qiáng)多項(xiàng)式算法。很容易將Chandrasekaran的算法延伸到一般帶有分?jǐn)?shù)目標(biāo)函數(shù)的矩陣胚規(guī)劃問(wèn)題。在這種情況下,在這種情形下,函數(shù)z(L)的斷點(diǎn)數(shù)最大為n(n-1)/2(參見(jiàn)[4])因此,當(dāng)可行域Ω是矩陣胚基礎(chǔ)特征向量的集合。Dinkelbach算法就會(huì)在O(min{n^2,log(nCD)})后終止。



            對(duì)于調(diào)配問(wèn)題,已經(jīng)研制了許多算法。大概最有名的算法就是Hungarian方法,并且它在最壞情況下的復(fù)雜度是O(v(v log v
            +e)) [9]。使用Hungarian方法,Dinkelbach算法可以用O(v(v log v+e)log(vCD))的時(shí)間解決分?jǐn)?shù)調(diào)配問(wèn)題。在[19]中,Orlin和Ahuja提出了一個(gè)O(sqrt(v)e*log(vW))的算法來(lái)解決調(diào)配問(wèn)題而且據(jù)說(shuō)他們的算法因?yàn)閺?qiáng)多項(xiàng)式算法而具有競(jìng)爭(zhēng)性(參見(jiàn)[2]也可)。在他們的算法中,它假定邊權(quán)為整數(shù),并且W代表邊權(quán)的最大絕對(duì)值。為了將這個(gè)算法與Dinkelbach算法相結(jié)合,我們需要將在運(yùn)行第r次解決的的子問(wèn)題Q(L)用下面式子代替




            (dxr
            -1) cx-( cxr-1) dx



            這里xr
            -1表示代表運(yùn)行第i次得到的最優(yōu)解。因此,在每次運(yùn)行中,Dinkelbach算法解決邊權(quán)絕對(duì)值小于等于2v^2CD的調(diào)配問(wèn)題。它暗示了Dinkelbach算法對(duì)于調(diào)配問(wèn)題的最壞情況下的時(shí)間復(fù)雜度為




            O(sqrt(v)e(log(2v
            ^3CD))(log(eCD)))<=O(sqrt(v)e(log(vCD))^2)



            我們說(shuō),如果一個(gè)具有線(xiàn)性目標(biāo)函數(shù)的0
            -1整數(shù)規(guī)劃問(wèn)題存在多項(xiàng)式算法,我們可以利用上述目標(biāo)函數(shù)在多項(xiàng)式時(shí)間內(nèi)解決它的0-1分?jǐn)?shù)規(guī)劃問(wèn)題。

            posted on 2008-08-05 14:58 小果子 閱讀(1838) 評(píng)論(3)  編輯 收藏 引用

            FeedBack:
            # re: 01分?jǐn)?shù)規(guī)劃問(wèn)題
            2010-03-10 21:17 | ipip2005
            正在學(xué)習(xí)中,但是不喜歡看有著一堆引理又鏈表似地應(yīng)用的講稿  回復(fù)  更多評(píng)論
              
            # 求原稿的下載地址
            2010-05-21 09:17 | ipip2005
            求下載地址或者發(fā)我
            supersingerman@126.com
            LZ謝謝了,感激不盡  回復(fù)  更多評(píng)論
              
            # re: 01分?jǐn)?shù)規(guī)劃問(wèn)題
            2010-06-30 20:52 | 小果子
            @ipip2005
            忘了在哪。。有空我排版弄下~ = =  回復(fù)  更多評(píng)論
              

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久亚洲国产中v天仙www| 思思久久好好热精品国产| 国产精品99久久久久久猫咪| 四虎国产精品免费久久久| 内射无码专区久久亚洲| 亚洲AV无码久久精品蜜桃| 国产午夜免费高清久久影院 | 亚洲国产精品无码久久青草| 久久精品国产男包| 久久福利青草精品资源站免费| 91精品久久久久久无码| 亚洲国产成人久久一区久久 | 97久久精品无码一区二区| 久久久噜噜噜久久中文字幕色伊伊| 国产色综合久久无码有码| 国产精品va久久久久久久| 国色天香久久久久久久小说| 国内精品伊人久久久久AV影院| 亚洲人成无码网站久久99热国产| A级毛片无码久久精品免费| a级毛片无码兔费真人久久| 亚洲综合精品香蕉久久网97| 久久亚洲国产午夜精品理论片 | 欧美性猛交xxxx免费看久久久| 精品久久久久香蕉网| 国产精品久久久久AV福利动漫| 人妻久久久一区二区三区| 久久永久免费人妻精品下载| 久久99精品国产自在现线小黄鸭 | 久久97久久97精品免视看秋霞| 99久久婷婷免费国产综合精品| 99久久无色码中文字幕人妻| 久久亚洲精品国产精品婷婷| 久久中文字幕人妻丝袜| 久久午夜无码鲁丝片秋霞 | 狠狠色丁香久久婷婷综合_中 | 久久久久久国产精品无码下载| 久久国产香蕉视频| 性做久久久久久免费观看| 精品久久久无码人妻中文字幕豆芽| 国产精品久久久99|