日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二分法采用五五分平均复杂度最小(相比四六分或三七分等)的定量证明方法

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二分法采用五五分平均复杂度最小(相比四六分或三七分等)的定量证明方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二分法采用五五分平均復雜度最小(相比四六分或三七分等)的定量證明方法

??有一天晚上我深夜失眠,躺在床上輾轉反側,無法入睡。在床上滾來滾去,覺得十分無聊,不知怎么的想起了二分法。這是我們解決數據結構或算法問題中常用的一種divide and conquer的分治手段。但是二分法中的這個,說的是把一個問題分解成兩個子問題遞歸求解,并沒有說明兩個子問題要平均分。那么為什么通常大家都會進行平均的五五分配呢,應該是需要一個合適的理由的。
??于是我在黑暗中瞪著眼睛開始想,好像想出了一個比較嚴謹的證明方法,po出來和廣大網(噴)友(子)一起討論,看看是不是有什么不合適的地方需要修改。首先給出結論:二分法采用五五分的平均復雜度是最小的, 下面給出一個定量的證明。
??假設我們有一個規模為nnn的問題,根據二分的思想,將其分為αn\alpha nαn(1?α)n(1-\alpha)n(1?α)n兩個部分,其中0≤α≤10 \leq\alpha\leq10α1。用復雜度的期望來表征這個二分結果的平均復雜度,即:

f(n) ̄=αf(αn)+(1?α)f((1?α)n)=T(α),0≤α≤1\overline{f(n)} = \alpha f(\alpha n) + (1-\alpha)f((1-\alpha )n) = T(\alpha), 0\leq\alpha\leq1f(n)?=αf(αn)+(1?α)f((1?α)n)=T(α),0α1

即給定一個規模為nnn的問題,其平均復雜度可以表征成為一個關于α\alphaα的函數。對于這個函數,顯然有T(α)=T(1?α)T(\alpha) = T(1-\alpha)T(α)=T(1?α),即該函數是關于α=12\alpha=\frac{1}{2}α=21?對稱的。那么問題來了,這個函數為什么在α=12\alpha=\frac{1}{2}α=21?時取得全局最小值呢?

??這里為了容易理解我們首先討論另外一個更簡單的函數:t1(α)=αf(αn)t_1(\alpha) = \alpha f(\alpha n)t1?(α)=αf(αn),這里面需要注意一下的是這個nnn在這里是一個常數。問題的關鍵就在于這個t1(α)t_1(\alpha)t1?(α)凹凸性。有關于函數的凹凸性有很多等價的定義,這里需要注意一下,很多教材或者wiki上對凹函數和凸函數的定義都不同,有的管上彎的叫凹函數有的叫凸函數,其實具體叫什么并無所謂,po一張網上撈來的圖并以此為下文的凹凸函數定義。

對于t1(α)=αf(αn)t_1(\alpha) = \alpha f(\alpha n)t1?(α)=αf(αn),其中nnn為常數。顯然t2(α)=t1(1?α)=(1?α)f((1?α)n)t_2(\alpha)=t_1(1-\alpha) = (1-\alpha) f((1-\alpha) n)t2?(α)=t1?(1?α)=(1?α)f((1?α)n),即t1(α)t_1(\alpha)t1?(α)t1(α)t_1(\alpha)t1?(α)是關于α=12\alpha=\frac{1}{2}α=21?對稱的,即這兩個函數的凹凸性相同。T(α)=t1(α)+t2(α)T(\alpha) = t_1(\alpha)+t_2(\alpha)T(α)=t1?(α)+t2?(α),兩個凹函數的和仍然是凹函數,兩個凸函數的和仍然是凸函數,所以T(α)T(\alpha)T(α)的凹凸性也與t1(α)=αf(αn)t_1(\alpha) = \alpha f(\alpha n)t1?(α)=αf(αn)的凹凸性相同。

至此,我們得到了兩個非常重要的結論:
1. f(n) ̄=T(α)\overline{f(n)} = T(\alpha)f(n)?=T(α)是關于α=12\alpha=\frac{1}{2}α=21?對稱的。
2. f(n) ̄=T(α)\overline{f(n)} = T(\alpha)f(n)?=T(α)的凹凸性與t1(α)=αf(αn)t_1(\alpha) = \alpha f(\alpha n)t1?(α)=αf(αn)相同。
那么如果f(n) ̄=T(α)\overline{f(n)} = T(\alpha)f(n)?=T(α)分別是凸函數(1)、凹函數(3)、非凹非凸(常函數)(2),他們的圖像分別是什么樣呢?如下所示,再加上對稱性的條件,很容易得到(用凹凸函數的定義寫一下不等式就行了):在凸函數情況下,α=12\alpha=\frac{1}{2}α=21?取最大值;凹函數下α=12\alpha=\frac{1}{2}α=21?取最小值;非凹非凸函數隨意,任何值處的結果都相同。

??那么T(α)T(\alpha)T(α)或者說t1(α)=αf(αn)t_1(\alpha)= \alpha f(\alpha n)t1?(α)=αf(αn)在什么時候是凹函數,什么時候是凸函數呢?對于一個規模為nnn的問題,其復雜度只能是:常數、log(n)log(n)log(n)nm(m>0)n^m(m>0)nm(m>0),當:

  • 復雜度為常數時,即f(αn)=cf(\alpha n)=cf(αn)=ct1(α)=αf(αn)t_1(\alpha)= \alpha f(\alpha n)t1?(α)=αf(αn),則T(α)=t1(α)+t2(α)=c+c=2c=constantT(\alpha) = t_1(\alpha)+t_2(\alpha)=c+c=2c=constantT(α)=t1?(α)+t2?(α)=c+c=2c=constant,對應于上圖的2情況。
  • 復雜度為log(n)log(n)log(n)nm(m>0)n^m(m>0)nm(m>0)時,t1(α)=αf(αn)t_1(\alpha)= \alpha f(\alpha n)t1?(α)=αf(αn)為凹函數(求導很容易得到二階導數大于0),對應上圖3的情況,此時在α=12\alpha=\frac{1}{2}α=21?處取得最小期望復雜度。
  • 截至目前我還沒有碰到過復雜度隨問題規模單調遞減的問題,最起碼也得是個常數復雜度吧,所以基本可以認為這種情況在以實際問題為背景的情況下是不存在的。
  • 而我們實際遇到的問題中,絕大多數算法或數據結構問題都屬于以上的第二種種情況(畢竟復雜度和問題規模無關的問題我們幾乎不會單獨去討論),所以這種前提被默認滿足了,因此五五對分是合理的選擇。

    總結

    以上是生活随笔為你收集整理的二分法采用五五分平均复杂度最小(相比四六分或三七分等)的定量证明方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。