題目:磁帶的最優儲存:假定有
n個程式需存放在長度為
l的磁帶上,每乙個程式
i有長度l(
i),1<=i<=n,l(1)+l(2)+....+l(n)<=l.
假定無論什麼時候,檢索該帶上的某個程式時,帶的位置都處於始端。因此,若程式按
i=i(1),i(2)...i(n)
存放時,則檢索時間
i(j)的時間
t(j)
為l[i
(1)]+l[i
(2)]+...+l[i(j)],
如果各程式的檢索機會相等,則期望檢索時間為
[t(1)+t(2)+...+t(n)]/n.
試給出乙個貪心演算法,找出
n個程式的一種排列,證明當他們按此順序存放時,能使期望檢索時間最少。
演算法思想:
最短時間設想:
(貪心策略)
因為程式長度和檢索該程式的時間成正比,輸入個程式後,先按程式長度由小到大序,即程式短的放前面。則由題意的檢索方法可知該方法檢索時間最短。
演算法過程:
1、輸入n和
l[1]
、l[2] 、…、
l[n] 。
2、將l陣列從小到大排序。 3
、計算出各個程式的從頭查詢的檢索時間
t[i] 4
、計算出最優儲存的平均檢索時間st
演算法證明:
假設排序後的理想最優序列為:a1、
a2、…、an
則對於檢索的平均排程時間為:
st=(0+a1+(a1+a2)+(a1+a2+a3)+...+(a1+a2+…+an-1)) / n
=((n-1)a1+(n-2)a2+...+an-1) / n
利用反正法思想
假設存在乙個序列b1、
b2、…、
bn的平均排程時間小於上面的貪心策略時間,則至少存在
a1,a2,...,aj,...,ai,...an,
使得aj>ai,
且j>i 。
那麼(n-i)aj+(n-j)ai>(n-i)ai+(n-j)aj,
與最優解矛盾,故貪心解為最優解。
磁碟最優儲存問題 貪心演算法
設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是li,1 i n。這n 個程式的讀取概率分別是p1,p2,pn,且pi p2 pn 1。如果將這n 個程式按 i1,i2,in 的次序存放,則讀取程式ir 所需的時間tr c pi1 li2 pi2 li2 pir lir 這n 個程...
磁碟最優儲存問題 貪心演算法
設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是li,1 i n。這n 個程式的讀取概率分別是p1,p2,pn,且pi p2 pn 1。如果將這n 個程式按 i1,i2,in 的次序存放,則讀取程式ir 所需的時間tr c pi1 li2 pi2 li2 pir lir 這n 個程...
貪心演算法 最優裝載
貪心演算法思想 不從整體最優上加以考慮,它所做出的選擇只是在某種意義上的區域性最優選擇,當然希望貪心演算法得到的最終結果也是整體最優的 貪心演算法性質 指所求問題的整體最優解可以通過一系列區域性最優的選擇,即貪心選擇來達到 1 問題描述 有一批貨櫃要裝上一艘載重量為 tatol 的輪船,其中貨櫃 i...