- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
贪婪演算法
第四章 貪婪演算法 解答程序 4.1最小生成樹 圖4.3一個權重圖三個子圖 4.1.1 Prim演算法 演算法4.1 Prim演算法 分析演算法4.1所有情況的時間複雜度(prim演算法) 輔助定理4.1 4.1.2 Kruskal演算法 演算法4.2 Kruskal演算法 分析演算法4.2 最差情況的時間複雜度(Kruskal演算法) 輔助定理4.2 4.1.3 Prim演算法與 Kruskal演算法之比較 4.1.4結論 4.2 解單一起點最短路徑問題 之Dijkstra演算法 演算法4.3 Dijkstra演算法 4.3 排程 4.3.1 最小化總系統耗費時間 定理4.3 4.3.2依照截止期限來進行工作排程 輔助定理4.3 演算法4.4 依照截止期限來進行工作排程 分析演算法4.4最差情況的時間複雜度(依照截止期限來進行工作排程) 定理4.4 4.4霍夫曼編碼 4.4.1前置碼 4.4.2霍夫曼演算法 優先權佇列(priority queue) 輔助定理4.4 定理4.5 4.5貪婪演算法與Dynamic Programming之比較: 背包(Knapsack)問題 4.5.1用貪婪演算法來處理0-1背包問題 4.5.2用貪婪演算法來處理 Fractional背包問題 4.5.3用Dynamic Programming演算法來解0-1背包問題 系統耗費時間:等待時間+服務時間 唯一能夠最小化總系統耗費時間的排程方式,其排程順序畢竟為根據每項工作之服務時間大小,以非遞減的方式排定 證明 可行序列(feasible sequence):在某個序列中的所有工作全都在截止期限前開始進行 可行集合(feasible set):在某個工作集合中至少存在一個可行序列 最佳序列:有最多總利潤的可行序列 令S為所有工作組成的集合,則S為可行集合若且唯若將S中的工作依照截止期限大小的非遞減順序排列所得到之序列為可行序列 證明 設S為可行集合,則在S中必存在至少一個可行序列。在此序列中,假設工作x被排定在工作y之前執行,而工作y的截止期限比工作x早。如果將兩者在序列中的排定位置交換,則因為工作y必須更早開始進行,故其仍符合截止期限前起始的條件;又工作x的截止日期晚於工作y,故重新排列後工作其工作x分配到的執行其時間區間仍不會與工作Y衝突,以及仍符合截止期限前起始的條件。故可得知新的序列仍是可行的。 基本運算:在排列工作順序需用到比較運算,在設k=J加上第I個工作時,仍需用到比較運算,而在檢驗k是否可行時亦同。 輸入大小:工作數目n 證明:此證明是利用數學歸納法工作的數目n進行推導 歸納基底:若只有一項工作時,本定理成立 歸納假設:在所有工作中的首n項得到的工作集合對於首n項工作來說為最佳的 歸納步驟:在所有工作中的首n+1項得到的工作集合對於首n+1項工作來說為最佳的 為一種可變動長度二進位碼 最佳的二進位前置碼所對應的是一個完整二元樹。亦即每一個非葉片的節點均會有兩分枝。 * * 4.1最小生成樹 4.1.1 Prim演算法 4.1.2 Kruskal演算法 4.1.3 Prim演算法與Kruskal演算法之比較 4.1.4結論 4.2解單一起點最短路徑問題之Dijkstra演算法 4.3排程 4.3.1最小化總系統耗費時間 4.3.2依照截止期限來進行工作排程 4.4霍夫曼編碼 4.4.1前置碼 4.4.2霍夫曼演算法 4.5貪婪演算法與Dynamic Programming之比較:背包(Knapsack)問題 4.5.1用貪婪演算法來處理0-1背包問題 4.5.2用貪婪演算法來處理Fractional背包 問題 4.5.3用Dynamic Programming演算法來 解0-1背包問題 4.5.4用修正的Dynamic Programming演 算法來解0-1背包問題 選擇程序 中根據某些滿足局部最佳化條件的貪婪原則來挑選下一個要加入解集合的項目 可行性檢查 中檢驗新的解集合是否為最後之完整解 解答檢查 中檢驗由新的解集合是否符合此問題的結果 無向圖(undirected graph)是指該圖的邊線不具方向性,在圖中以沒有箭頭的實線來表示;其中邊線是指介於兩個頂點之間的線。 路徑(path)唯一連串頂點所組成的序列。 連通(connected)指在無向圖中兩兩頂點間都存在一條路徑。 簡單循環(simple c
文档评论(0)