《演算法導論》筆記 第16章 16 1 活動選擇問題

2021-06-21 20:20:46 字數 842 閱讀 1282

n個活動組成的集合s=,每個活動ai有個開始時間si和結束時間fi,且0<=si如果區間[si,fi)和[sj,fj)互不重疊,稱活動ai和aj是相容的。

活動選擇問題的最優子結構:

sij=∪akj

整個問題的最優解也是s_的乙個解。

乙個遞迴解:

將動態規劃解轉為貪心解:

對於任意非空子問題sij,設am是sij中具有最早結束時間的活動:fm=min

那麼,1) 活動am在sij的某最大相容活動子集中被使用。

2) 子問題sim為空,所以選擇am將使子問題smj為唯一可能非空的子問題。

遞迴貪心演算法

迭代貪心演算法

a = 

i = 1

for (int m=2;m<=n;m++)

i = m}}

16.1-1 給出活動選擇問題的動態規劃演算法。比較其執行時間與貪心演算法的執行時間。貪心時間o(n),dp時間o(n^2)。

16.1-2 假設不再總是選擇第乙個結束的活動,而選擇最後乙個開始、且與之前選入活動相容的活動。說明如何成為貪心演算法,並證明能得到最優解。

16.1-3 假設要對很多個教室對一組活動進行排程。我們希望使用盡可能少的教室來排程所有的活動。請給出乙個有效的貪心演算法,來確定哪乙個活動應使用哪乙個教室。

16.1-4 並不是所有貪心都正確- -。

演算法導論 16 1 活動選擇(貪心演算法)

最優化問題的演算法往往都包含一系列的步驟,每個步驟都要做出最優化的選擇 相對全域性來說也是最優的 貪心演算法所做的選擇看起來是當前最佳的,相對於區域性來講是最佳的,相對於全域性來講並不是最佳的 貪心演算法希望通過區域性的最優解得到乙個全域性最優解 注意 貪心演算法有時候你能夠產生全域性最優解,有時候...

演算法導論 第16章 貪心演算法

結論貪心演算法,顧名思義,貪心就完事了。對於這種抽象的演算法,我的一貫想法是通過例項將其具體化。下面給出乙個例子,好好感受 上題的解如下 鈔票支付問題 動態規劃法也可解 對於此問題需要注意的是,貪心法可能得出最優也可能無法得出全域性最優,這取決於硬幣的種類 include include using...

《演算法導論》筆記 第2章

本章出現了全書第乙個演算法 插入排序。插入排序並不是最直觀的排序演算法,拿它做第乙個講解應該有其他的理由。通過插入排序的講解,偽 約定 迴圈不變式 演算法分析等最基礎的知識被帶了出來。此後又講了第二個演算法 合併排序,並引出了演算法設計中的兩種常見型別 增量法 incremental 和分治法 di...