- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贪婪算法2
貪婪策略
貪婪策略(Greedy Method )常用來解決最佳化問題(Optimization
Problem )。貪婪法是最直接的解法,每次的決策都是朝向目前 “最好 ”
的方向前進,而且不回頭。舉例來說,某一個銀行出納櫃檯要服務 n 個
顧客,銀行的目標是希望顧客在櫃檯等待的平均時間要最少。解決之道
是每次都從尚未服務的顧客中,選擇需要服務時間最短的顧客來服務,
如此就可達到預期目標。像這樣每次都選擇最小服務時間的策略就是一
種貪婪策略。
現在以實例說明此演算法。假設有 5 個顧客 A ,B ,C ,D ,E 幾乎同時到
達銀行櫃檯,其所需服務時間如下表:
顧客 服務時
間
A 5
B 1
C 4
D 2
E 3
根據貪婪演算法,銀行櫃檯將依序服務 B ,D ,E ,C ,A 。顧客在櫃檯等
待的平均時間為[1 + (1 + 2) + (1 + 2 + 3) + (1 + 2 + 3 + 4) + (1
+ 2 + 3 + 4 + 5) ] / 5 = 7 。
再介紹一個可用貪婪策略解決的背包問題 (Knapsack Problem )。假設
有多個可分解的物件和一只限重 W 的背包,每件物件有其重量及其被選
取放入背包內的利益。請問要如何將物件放進背包內而使得獲得的利益
最大?解決的方法是每次在限重的情形下,選取尚未放入的物件中擁有
最大的利益與重量的比值之物件放入背包內。
設背包限重 100 ,有A ,B ,C ,D ,E 共五個物件,其資料如下表:
物件 重量 利益 利益/重量
A 10 20 2.0
B 20 30 1.5
C 30 66 2.2
D 40 40 1.0
E 50 60 1.2
因為物件 C 的利益/重量最高,所以將物件 C 放入背包內,此時背包的
重量為 30 。接著從物件A ,B ,D ,E 中挑出其利益/重量最高的物件 A
放入背包內,這時背包的重量為 30+10=40 。接下來,從物件B ,D ,E
中挑出其利益/重量最高的物件 B裝入背包內,之後背包的重量為
40+20=60 。再從剩下的物件D 和 E 中選出其利益/重量最高的物件 E 。由
於物件 E 整個放入背包內會超過重量 100﹐所以物件E 只能放入0.8 個。
放入以後得總重量為 60+50∗ 0.8=100 。最後得到的利益為66+20+30+60∗
0.8=164 。物件裝入背包的情形整理於下表﹕
物件 個數 累計利益 累計重量
C 1 66 30
A 1 86 40
B 1 116 60
E 0.8 164 100
接著介紹最小擴展樹(Minimum Spanning Tree)問題。圖 22.5是由頂
點(Vertex
文档评论(0)