動態規劃

1、問題提出

  • 最近面試的過程中發現對基礎算法的考察挺多的,準備複習下;
  • 翻看些博客與書籍,發現介紹的過於書面化不易理解;
  • 因此,將自己的理解寫通俗一些,幫助他人與自己學習。

2、動態規劃原理

從揹包問題說起

一家商場搞活動,商家爲顧客發放能夠承重35磅的揹包,顧客在商場內選擇商品裝入揹包。假設商品有:

音響  3000美元  30磅

筆記本電腦  2000美元  20磅

吉他  1500美元  15磅

如何使得揹包所含物品總價值最高?

此時若採用貪心算法則將音響裝入揹包,此時揹包剩餘空間爲35-30=5磅,無法裝入其餘商品,揹包價值爲3000美元。

明顯,此時貪心算法並非最優解。因爲,將筆記本電腦與吉他裝入揹包,此時揹包承重正好爲35磅,且價值爲3500美元。

因此,貪心算法常用來求解近似最優解(局部最優解),並非全局最優解。其特點是思想簡單、求解速度快。

如何尋找全局最優解?

窮舉法!那是不可能的,首先太耗時間且易出錯,試想3件商品有8種選擇方案,4件商品有16中選擇方案,n件商品有2^{n}中選擇方案,因此,窮舉法不現實。

動態規劃,能夠很好地得出最優解。

動態規劃先解決子問題,再逐步解決大問題。對於揹包問題,先解決子揹包問題,再逐步解決原來的問題。

爲方便舉例子說明動態規劃的思想,假設:

揹包可裝4磅東西

吉他  1500美元  1磅

音響  3000美元  4磅

筆記本電腦  2000美元 3磅

可將動態規劃算法視作對網格的填充,揹包問題的網格如下:

                                                             

在對每個單元格放入商品時,需要判斷揹包的價值是否會增大。

首先,吉他行,重1磅價值1500美元,每一列都能夠放下,得到下圖價值列表:

                                                            

其次,音響行,此時可供選擇的商品包含該行與其上方的各行,即可選商品有吉他、音響。由於音響的重量爲4磅,則揹包容量至少需要4磅,因此容量爲1、2、3的揹包內商品不發生變化,商品仍爲1500美元的吉他。在揹包容量爲4時,因爲已經包含吉他商品佔有1磅容量,剩餘3磅不夠存放音響,因此比較吉他與音響的價值,將價值較低的吉他取出,將價值偏高的音響放入其中。更新揹包的價值列表,得到下圖:

                                                        

筆記本電腦行,筆記本電腦重量爲3磅,價值2000美元,因此容量爲1、2的揹包內商品不發生變化。在揹包容量爲3磅時,已經含有重量1磅的吉他,無法放下重量3磅的筆記本電腦,因此將價值較低的吉他取出,將價值較高的筆記本電腦放入,得到下圖:

                                                             

對於容量爲4磅的揹包,因爲容量爲1的揹包最大價值爲1500美元,容量爲3磅的揹包最大價值爲2000美元,且商品未重複,因此容量爲4磅的揹包價值最大爲3500美元,得到下圖:

                                                           

此時,揹包的最大價值爲3500美元。

若此時新增價值爲2000美元,重量爲1磅的商品手機呢?

即下圖中的最優解:

                                                                      

此時,1磅商品可放入1、2、3、4磅容量的揹包,比較商品的價值。1磅手機的價值高於1磅吉他價值,因此1磅容量揹包最大價值爲2000美元。容量爲2磅的揹包中含有1磅的吉他,可再放入1磅商品,因此2磅容量的揹包最大價值爲1500+2000=3500美元。得到下圖:

                                                                            

容量爲3磅的揹包此時已經含有重3磅價值2000美元的筆記本電腦,低於2磅容量揹包的最大價值,因此將筆記本電腦替換爲吉他、手機。得到下圖:

                                                                            

對於最後一個單元格,當前最大價值爲3500美元,選擇手機則剩餘3磅容量,3磅容量的最大值且不含有手機則爲2000美元的筆記本,因此,4磅容量的最優解爲2000+2000=4000美元。即選擇筆記本電腦與手機,得到最終圖如下:

                                                                                 

商場又新增價值爲1000美元重量爲1磅的MP3,此時的最優解爲?

                                                                                  

結論爲:

                                                                                 

4500美元1磅手機2000美元、1磅吉他1500美元、1磅MP3 1000美元,共2000+1500+1000=4500美元。

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