貪心演算法的證明題

2021-10-05 17:43:09 字數 1348 閱讀 6001

貪心演算法的證明一般是比動態規劃要複雜。

原因是貪心演算法的證明有兩個,乙個是最優子結構,另外乙個是貪心選擇性質。

貪心選擇性質:可以通過區域性最優選擇來構造全域性最優解

證明:一般考慮某個子問題的最優解,然後考慮用乙個貪心選擇替換其中某個選擇,修改此解,匯出更小子問題。

最優子結構同動態規劃,而且其實一般也不是特別需要證明,關鍵還是在證明問題具有貪心選擇性質,下面是嘗試證明。

貪心選擇性質的證明:假設乙個子問題是si,其乙個最優解為ai,(考慮乙個子問題的最優解),我們選擇子問題中最高結束的活動am(貪心選擇),假設ai中最早結束的活動我ae,如果ae=am,顯然am在ai中,如果ae>am,如果用am代替ae所得ai』也還是最優解(代替),所以該子問題最優解可以表示為am+si』最優解(拆分)。

大概證明步驟如下:子問題最優解,貪心選擇,代替,拆分。

最優子結構的證明:假設aij是活動i到j(不含j)的最優解,若aij中包含ak,則可以將其劃分為aik+ak+akj,反證法證明aik、akj都是最優解即可。

貪心選擇性質的證明:不妨假設p1/w1>=p2/w2>=…>=pn/wn

則按照貪心選擇的最優解是x(x1,x2,…xn),如果全為1,顯然是最優解,如果不全為則假設在j處最先不為,可知前面全為1,後面全為0,xj在兩者之間。

又假設y(…)為理想最優解,設兩者的序號最小在k處有xk!=yk,顯然xk>yk(k>j,超重,k=j,要麼y是x,要麼後面還有得證,k

注意最後得到的樹一定是一棵滿二叉樹。

貪心選擇性質的證明:

這裡的證明用構造法,用x,y代替a,b位置。

反證法

(注,這裡兩個引理的1證明特別是第二個我不太熟悉,日後再補充吧)

貪心演算法證明的回憶

關於貪心選擇證明的理解,突然有點想不通了。拿最簡單的活動安排問題,我在想貪心選擇先找f1,然後剩下的2 n逐個找能與之前相容的活動,按照f 不遞減序排列。如果存在乙個最優解,第乙個活動是k,那麼 k後面的活動自然與 f1 相容,但是k前面的呢,可能就會與s1 f1 不相容了,記得當年演算法書證明這個...

高數證明題思路

基本思路 利用逆向思維,構造輔助函式 即從結論出發尋找思路 tips 可以用原函式法找輔助函式 有時可以對導數用中值定理。若結論為不等式,就要注意適當放大或縮小的技巧。當要證明某個函式的導數的某一點處其導數值為常數或0時,應用羅爾定理可以求證。證明含乙個中值的等式或根的存在,多用羅爾定理 可以用原函...

一道證明題

最近看 劍指offer第二版 有這麼一道面試題 題目 給你一根長度為n的繩子,請把繩子剪成m段 m和n都是整數,n 1並且m 1 每段繩子的長度記為k 0 k 1 k m 請問k 0 k 1 k m 可能的最大乘積是多少?例如,當繩子的長度為8時,我們把它剪成長度分別為2,3,3的三段,此時得到的最...