青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

雁過無痕

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::

《編程之美》讀書筆記031.4 買書問題

 

問題:

    在節(jié)假日的時候,書店一般都會做促銷活動。由于《哈利波特》系列相當(dāng)暢銷,店長決定通過促銷活動來回饋讀者。在銷售的《哈利波特》平裝本系列中,一共有五卷,用編號0, 1, 2, 3, 4來表示。假設(shè)每一卷單獨銷售均需要8歐元。如果讀者一次購買不同的兩卷,就可以扣除5%的費用,三卷則更多。假設(shè)具體折扣的情況如下:

本數(shù)

折扣

2

5%

3

10%

4

20%

5

25%

 

在一份訂單中,根據(jù)購買的卷數(shù)以及本書,就會出現(xiàn)可以應(yīng)用不同折扣規(guī)則的情況。但是,一本書只會應(yīng)用一個折扣規(guī)則。比如,讀者一共買了兩本卷一,一本卷二。那么,可以享受到5%的折扣。另外一本卷一則不能享受折扣。如果有多種折扣,希望能夠計算出的總額盡可能的低。

要求根據(jù)這樣的需求,設(shè)計出算法,能夠計算出讀者所購買一批書的最低價格。

 

書中給出的解法:

如果要買的書為(Y1, Y2, Y3, Y4, Y5)(其中Y1>=Y2>=Y3>=Y4>=Y5),貪心策略建議我們買Y5本五卷的,Y4-Y5本四卷,Y3-Y4本三卷,Y2-Y3本兩卷和Y1-Y2本一卷。由于貪心策略的反例,我們把K本五卷和K本三卷重新組合成K本四卷(K = min{Y5, Y3-Y4})。結(jié)果就是我們買Y5-K本五卷的,Y4-Y5本四卷,Y3-Y4-K本三卷,Y2-Y3本兩卷和Y1-Y2本一卷(K = min{Y5, Y3-Y4})。比如我們要買3本第一卷,2本第二卷,6本第三卷,1本第四卷和7本第五卷,像前面所說的,我們要買的書可以用(7, 6, 3, 2, 1)表示。新的經(jīng)過調(diào)整的貪心策略告訴我們應(yīng)該買三本四卷,三本兩卷和一本一卷。

 

 ㈠ 簡單說明

假設(shè)共有m種書進(jìn)行打折,總共要買n本。先將原來的折扣,轉(zhuǎn)換成相對折扣(=最大折扣-原折扣)。若用F(n)表示買n本書時能得到最小相對折扣值(顯然F(m)=0),則原折扣和(=n*最大折扣-F(n))必然最大。

若不考慮書的具體種類(即買書時對書的具體種類沒要求),若采用貪心算法——每次盡可能的買m本,就要證明F(n)=F(n-m),或者找出F(n)=F(n-m)成立的條件。從后面的分析可知,當(dāng)n大于某個數(shù)時,恒有F(n)=F(n-m)

若考慮書的具體種類,比如5本時的狀態(tài)(a1, a2, a3, a4, a5)(遞減排列)??梢宰C明,最優(yōu)解的買書次數(shù)必然是a1次。其它的買書解法,都可以從解法(a55卷,a4-a54卷,a1-a21卷),通過幾個 i+j => (i-1)+(j+1) (5 >= i > j+1, j>=1) 調(diào)整得到(覺得這個從圖中看很直觀,但不好證明)。通過判斷i+j => (i-1)+(j+1)對相對折扣值的影響,就可以判斷書上的解法是否一定成立。

 

 不考慮書的具體種類

先考慮簡單情況:對所買的書的具體種類沒有要求。假設(shè)有m種書,共要買n本書,每次買的書的種類越多,每本書的折扣也越大。即m種時,折扣最大,用這個最大值減去每個折扣可得到相對折扣。要使總折扣最大,只要總相對折扣最小。用F(n)表示總相對折扣的最小值(顯然:F(1)>F(2)>… >F(m-1)>F(m)=0,若定義F(0)=0,則F(m)=F(0))。顯然F(k*m)=0,由于F(m-1)是第二小的, F(k*m-1)=F(m-1) k為自然數(shù))。

可以采用的貪心算法:每次盡可能的買m本書。若該貪心算法能找到最優(yōu)解,則有:F(i)=F(i-m) (i>=m)。

 

性質(zhì)1:若對任意自然數(shù)i[ k, m+k-1] (自然數(shù)k>=m), F(i)=F(i-m)均成立,

則對任意 i >= kF(i)=F(i-m) 恒成立。

(證:由已知,當(dāng)i [ k, m+k-1] 時,命題F(i)=F(i-m)成立。

假設(shè)i=n (n>=m+k-1)時命題成立,則對任意i [ k, n],F(i)=F(i-m)。

當(dāng)i=n+1時,根據(jù)F(n)的定義及一次可買的書的卷數(shù)j1 <= j <= m)可得:

F(n+1)= min{ F(j)+F(n+1-j)}  (1 <= j <= m,  k<= n+1-m <= n+1-j <= n)

      =min{ F(j) + F(n+1-m-j)}

      =F(n+1-m)

i=n+1時命題仍成立。

因而,對任意 i >= k,F(i)=F(i-m)均成立。)

 

若要判斷貪心算法(“每次盡可能買m本”)是否得到全局最優(yōu)解,只要判斷本數(shù)為m2*m-1時是否都符合貪心算法,而m本和2*m-1本都是一定符合的,實際上只要判斷本數(shù)為m+12*m-2時是否都得到全局最優(yōu)解。

 

若設(shè)某次買的卷數(shù)為i1<=i<=m),則剩余n-i,根據(jù)F(n-i)是否等于F(n-i-m),可將關(guān)于i的集合,分成兩部分j、k,其中 F(n-j)=F(n-m-j),而F(n-k)!=F(n-m-k),顯然:

F(n-m)=min{F(i)+F(n-m-i)} <= min{F(j)+F(n-m-j)}

 

F(n)= min{ F(j)+F(n-j),F(k)+F(n-k)}

    = min{ F(j) + F(n-m-j), F(k) + F(n-k)}

   >= min{ F(n-m), F(k) + F(n-k)}

上式若能取等號,則必滿足下列條件之一:

min{F(k)+F(n-k)} <= F(n-m)

② 集合j中存在某個值tF(n-t)=F(n-m-t),1<=t<=m),滿足F(n-m)=F(t)+F(n-m-t)

F(n-m)=F(n-2*m),即t=m,F(n)= min{ F(n-m), F(k) + F(n-k)}

 

對書上的折扣方案:

 

1

2

3

4

5

相對折扣

25%

20%

15%

5%

0

總相對折扣

25%

40%

45%

20%

0

 

F(6)=F(5)+F(1)=F(1) (按書上P32的分析得到“拆分成4+2折扣最大”的結(jié)論是錯的。)

F(7)=F(5)+F(2)=F(2)

F(8)=F(4)+F(4) < F(3) + F(5)  

F(9)=F(4) 

F(10)=F(5)

F(11)=min( F(6), F(3)+F(8) )=F(6)

F(12)=min( F(7), F(4)+F(8) )=F(7)

F(13)=min( F(8), F(5)+F(8) )=F(8)  (因為F(8)=F(5)+F(8),故可取等號)

購買本數(shù)為913時,都滿足F(i)=F(i-5) (9<=i<=13),故i>=9時,均有 F(i)=F(i-5)。由于只有本數(shù)為8這一個例外,因而若采用貪心算法,能判斷出是否將F(8)F(3)計算,從而對結(jié)果進(jìn)行調(diào)整,保證結(jié)果正確。

 

性質(zhì)2: 存在整數(shù)k>=m,對任意整數(shù) n >k, F(n)=F(n-m)恒成立。

證:

設(shè)買n-m本的最優(yōu)解中,共有ai次每次買了i本書,則ai必定小于m,否則,ai次買i本,可以優(yōu)化為i次買m本和ai-m次買i本。另外,必有ai <= i,否則,設(shè)j=ai > i,則j次每次買i本書,可以優(yōu)化為i次每次買j本書。由于ai存在上界,可以假設(shè)ti*ai(1<=i<=m-1)所有可能的乘積和中最大的,即t=max{sum(i*ai)}

    對整數(shù)n>t,如果F(n) != F(n-m) 則需要對F(n-m)的最優(yōu)解:a1, a2, … am-1, am, 進(jìn)行調(diào)整。對購買n本,能進(jìn)行的調(diào)整只能是將am調(diào)整為0,將多出的(m+1)*am分散到其它的購買次數(shù),否則的話,買n-m本書時也可以采用類似的調(diào)整,會得到更優(yōu)解。根據(jù)t的定義可知調(diào)整后書的總數(shù)n滿足:n <= t,這與假設(shè)n>t矛盾。

因而,對任意整數(shù) n> max{sum(i*ai)} (1<=i<=m-1) 總有:F(n)=F(n-m)。即,對任意的買書折扣方案(不考慮所買書的具體種類數(shù)),可以通過常數(shù)次計算,得到最優(yōu)解。

 

當(dāng)m=5ai能取的最大值:

a1 1(但取1時,其它的ai都要取0

a2 2(但如果a3不為0, 2+3 => 5

a3 2  ( 3+3+3 => 4+5)

a4 4

因此 t=0*1+0*2+2*3+4*4=22 即對:對任意整數(shù)n>22 都有 F(n)=F(n-5)

又由于F(5*k)=0,F(5*k-1)=F(k-1)一定成立,因而對任何一種5卷的買書折扣方案,只要計算所買書總數(shù)分別為678、1112、13、1617、18、2122時的11個買法

 

㈢ 考慮書的具體種類:

根據(jù)各卷要買的數(shù)目,按大小降序排列,記為:(a1, a2, … am) (a1 >= a2 >= … >= am)。

并記書的種類編號為(d1, d2, … dm)。再記折扣方案為(b1, b2, … bm)bi為一次買i本的折扣,b1 > b2 > … > bm)。

如果最優(yōu)解購買次數(shù)大于a1,則必有一次買的書沒有d1,假設(shè)這次買了di,共有k次沒買d1但卻買了di,則對a1次每次都買了d1,買了a1d1的同時,最多只能買(ai-k)di,由ai <= a1,可知這a1次購買時必有k次沒有購買di,這k次購買時,每次可多買一本di,相對折扣和更低。也就是說,不在a1次購買d1的書都可分?jǐn)偟竭@a1次購買中,最終得到的相對折扣更少,這與已經(jīng)是最優(yōu)解矛盾,因而購買次數(shù)不大于a1。又由于要買a1d1,每次不能買相同種類的,至少要買a1次,因而最優(yōu)解購買次數(shù)為a1,即每次都要買一本d1。

 

若買法Tam次買m卷,am-1-am次買m-1卷,… a1-a2次買1卷,不是最優(yōu)解,則與最優(yōu)解相比較,必存在某本書由一次買i本,轉(zhuǎn)移到一次買j(m >= i > j >= 1參考下面的直觀圖),轉(zhuǎn)移的結(jié)果,組合i+j更改為(i-1)+(j+1),相對折扣改變了:bi-1 + bj+1 – (bi + bj) ,顯然i=j+1時相對折扣沒有改變,因而,i>j+1。最優(yōu)解可由買法T,經(jīng)過多次這種調(diào)整得到。若對所有的bi-1 + bj+1 – (bi + bj) m >= i > j+1, j>=1)均大等于0,則說明買法T已經(jīng)是最優(yōu)解,因為對買法T的每一次調(diào)整都不會使相對折扣和減小。

 

(a1, a2, a3, a4, a5),可以用下面的圖形表示,5個長方形,各自的寬度表示要買的數(shù)目??v方向的總高度就是每次要買的書的數(shù)目。對任意一種買法,如果將i次每次買了j卷,畫一個寬為i,高為j的長方形,將以j=5,4,3,2,1順序畫的5個長方形合并,可得到該買法對應(yīng)的狀態(tài)圖。對買法Ta5次買5卷,a4-a5次買4卷,… a1-a2次買1卷,將所畫的5個長方形合并后再根據(jù)高度劃分界線,也可得到下面的圖形,也就是說買法T對應(yīng)的是初始狀態(tài)。取出較高層i的一部分補到較低層k(要求補完后,從上到下每層的寬度仍是遞增的,這相當(dāng)于進(jìn)行調(diào)整i+(k-1)=>(i-1)+k),通過多次這樣的操作,可以得到其它的任意一種買法。比如,第5層的的a5挖出一部分,補到第4或第3或第2層(由于只能買a1次,第一層的長度a1不能改變)。從圖中可以看出,如果t=a5 – ( (a1-a2)+ (a1-a3) + (a1-a4) )>0則第5層長度至少為t,也就是說至少要買t5卷,再加上每次必須買1d1卷,在需要用動態(tài)規(guī)劃求解時,只須用到4個變量即可,可減少計算量。




書上的折扣方案:

 

1

2

3

4

5

相對折扣

25%

20%

15%

5%

0

總相對折扣

25%

40%

45%

20%

0

 

所有的 i+j => (i-1)+(j+1) (5 >= i > j+1, j>=1)

調(diào)整前組合

 

調(diào)整后組合

相對折扣改變值

5+3

 

 

=>

4+4

-5%

5+2

4+3

25%

5+1

4+2

35%

4+2

3+3

30%

4+1

3+2

40%

3+1

2+2

10%

 

如果上述的所有相對折扣改變值都是非負(fù)值,那么買法T就是最優(yōu)解。但是表格中有一個例外,5+3 => 4+4  這個調(diào)整使相對折扣值是減小了。由于任何其它調(diào)整的相對折扣改變值都大于5%,且都是使相對折扣值增大,因而不存在經(jīng)過其它調(diào)整后再經(jīng)過5+3 => 4+4調(diào)整仍能使相對折扣值減小。由于使相對折扣值變小的調(diào)整只有一個,經(jīng)過這樣的調(diào)整,肯定得到最優(yōu)解,因而的書上的解法二在該例子上是正確的。

 

posted on 2010-08-15 23:48 flyinghearts 閱讀(1016) 評論(0)  編輯 收藏 引用 所屬分類: 算法編程之美
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲一区二区三区高清| 久久蜜桃资源一区二区老牛 | 一区二区三区精品视频| 亚洲国产精品久久久久秋霞影院| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产在线高清精品| 亚洲人屁股眼子交8| 国产精品99久久久久久久久久久久 | 久久久99久久精品女同性| 久久久久久网址| 欧美国产精品中文字幕| 99天天综合性| 久久成人免费电影| 欧美精品在线网站| 国产亚洲免费的视频看| 日韩天堂在线观看| 欧美影院在线播放| 亚洲国内欧美| 亚洲制服av| 欧美二区在线观看| 国产三级欧美三级| 99热在这里有精品免费| 久久久国产精品亚洲一区| 午夜综合激情| 女主播福利一区| 国产精品萝li| 亚洲黑丝在线| 欧美淫片网站| 一区二区三区欧美日韩| 农夫在线精品视频免费观看| 国产日韩在线播放| 亚洲婷婷在线| 亚洲国产高清在线| 久久噜噜噜精品国产亚洲综合| 欧美午夜宅男影院在线观看| 亚洲国产精品国自产拍av秋霞| 久久riav二区三区| 日韩亚洲成人av在线| 美女尤物久久精品| 国产伊人精品| 久久精品亚洲国产奇米99| 一区二区国产精品| 欧美另类视频| 亚洲日韩欧美视频一区| 免费中文日韩| 久久久蜜桃精品 | 亚洲免费精品| 女人香蕉久久**毛片精品| 午夜精品久久久久99热蜜桃导演| 欧美日韩国产专区| 中日韩美女免费视频网站在线观看| 亚洲高清成人| 欧美成人69av| 亚洲毛片一区| 亚洲精品免费电影| 欧美日韩国产va另类| 亚洲精品国产视频| 亚洲国产一区二区三区青草影视| 免费试看一区| 99xxxx成人网| 99精品视频一区| 国产精品成人一区二区| 欧美一区二区三区另类| 欧美在线观看一区| 好吊色欧美一区二区三区四区| 久久夜色精品国产欧美乱极品| 久久久久久久一区二区| 亚洲国产天堂网精品网站| 欧美激情1区| 欧美人与禽猛交乱配| 亚洲一区二区三区精品在线| 亚洲一区综合| 亚洲国产精品成人综合| 亚洲精品美女| 国产精品免费网站| 久久久人成影片一区二区三区观看| 久久精品国产91精品亚洲| 亚洲国产日韩欧美在线99| 亚洲精品视频一区| 国产精品色婷婷久久58| 久久亚洲不卡| 欧美日韩精品二区| 久久国产精品72免费观看| 欧美有码在线观看视频| 久久亚裔精品欧美| 欧美极品一区| 性欧美18~19sex高清播放| 久久久91精品国产| 一区二区av在线| 亚洲先锋成人| 亚洲国产专区校园欧美| 99这里有精品| 在线观看国产日韩| 一区二区三区欧美亚洲| 在线观看精品| 亚洲尤物在线| 亚洲精选91| 久久精品国产成人| 亚洲一区二区三区乱码aⅴ| 久久久久五月天| 亚洲男女自偷自拍| 欧美丰满高潮xxxx喷水动漫| 久久国产综合精品| 欧美日韩精品久久久| 久久综合综合久久综合| 国产精品毛片va一区二区三区| 欧美激情一区二区三区蜜桃视频| 国产女主播在线一区二区| 日韩一级不卡| 亚洲日本欧美日韩高观看| 久久精品免费电影| 欧美在线视频一区二区三区| 欧美午夜不卡在线观看免费| 亚洲欧洲精品一区二区三区不卡 | 欧美日韩精品一区视频| 狼人天天伊人久久| 国产日产欧美精品| 在线视频精品一区| 宅男在线国产精品| 欧美激情视频一区二区三区不卡| 欧美成人免费全部观看天天性色| 国产综合久久久久久鬼色| 午夜精品免费视频| 欧美伊人影院| 国产一区二区三区在线观看免费 | 欧美一区二区三区在线播放| 欧美特黄视频| 99国产一区| 亚洲天堂av在线免费| 欧美日韩p片| 亚洲三级国产| 一本一本久久a久久精品综合妖精| 免费亚洲网站| 亚洲精品九九| 国产精品99久久99久久久二8 | 国产欧美韩国高清| 亚洲一区二区在线免费观看视频| 亚洲伊人第一页| 国产精品三级久久久久久电影| 亚洲一区二区三区高清不卡| 免费观看成人鲁鲁鲁鲁鲁视频| 午夜精品亚洲| 国产伦精品一区二区三区四区免费| 亚洲午夜伦理| 久久激五月天综合精品| 激情另类综合| 免费日韩av电影| 99pao成人国产永久免费视频| 亚洲自啪免费| 国产一区二区三区高清| 久久综合九九| 亚洲激情亚洲| 午夜视频久久久| 一区二区在线看| 欧美精品在线视频| 亚洲尤物影院| 免费在线日韩av| 亚洲一区二区少妇| 国产手机视频一区二区| 久久网站热最新地址| 亚洲区欧美区| 欧美一区二区三区视频在线 | 亚洲免费一级电影| 国产午夜精品一区二区三区欧美 | 欧美日本不卡| 欧美一区二区三区免费看| 欧美成熟视频| 亚洲欧美日韩精品一区二区| 一区二区三区在线观看欧美| 欧美精品在线观看播放| 欧美在线免费| 一区二区高清视频| 你懂的国产精品| 亚洲欧美色婷婷| 亚洲三级观看| 国产香蕉97碰碰久久人人| 牛牛国产精品| 久久aⅴ国产紧身牛仔裤| 欧美激情在线观看| 亚洲欧美日韩区| 亚洲欧洲精品一区| 国产亚洲激情视频在线| 欧美日本亚洲韩国国产| 久久精品主播| 亚洲性视频网址| 亚洲精品免费一区二区三区| 麻豆成人综合网| 亚洲女同在线| 亚洲卡通欧美制服中文| 狠狠色香婷婷久久亚洲精品| 欧美日韩一区二区视频在线观看| 久久精品视频免费观看| 亚洲欧美成人综合| 亚洲精品之草原avav久久| 久久久精品国产一区二区三区| 亚洲一区二区三区777| 日韩小视频在线观看| 久久久久国产精品午夜一区| 国产精品99久久久久久久久久久久| 欧美激情视频一区二区三区在线播放 |