UA SIE545 优化理论基础9 优先与分治策略1 文件的最优存储顺序
UA SIE545 優化理論基礎9 優先與分治策略1 文件的最優存儲順序
- 單磁帶存儲
- 相同查詢頻率
- 相同文件長度
- 查詢頻率與文件長度均不同
單磁帶存儲
相同查詢頻率
這一章介紹優先策略與分治策略,我們從一個簡單的例子開始介紹優先策略??紤]非常簡單的磁帶存儲問題:如果我們把nnn個文件存儲在磁帶上,那么這nnn個文件只能按存儲順序進行讀寫,假設Li,i=1,?,nL_i,i=1,\cdots,nLi?,i=1,?,n表示第iii個文件長度,假設查詢每個文件的概率相同,求最優的文件存儲順序。
假設σ\sigmaσ表示一個nnn階的排列,即σ∈Pn\sigma \in P_nσ∈Pn?。我們可以用排列來表示文件存儲的順序,即σ(1),?,σ(n)\sigma(1),\cdots,\sigma(n)σ(1),?,σ(n),其中σ(i)∈{1,?,n}\sigma(i) \in \{1,\cdots,n\}σ(i)∈{1,?,n}表示第iii個文件被存放在第σ(i)\sigma(i)σ(i)個位置,記j=σ(i)j=\sigma(i)j=σ(i),則第iii個文件前面還有j?1j-1j?1個文件,讀完第iii個文件需要的總長度為
∑k=1jLσ?1(k)\sum_{k=1}^{j}L_{\sigma^{-1}(k)}k=1∑j?Lσ?1(k)?
基于這個發現,我們可以計算給定一個排列,查詢一次文件平均需要讀的長度,并且以此定義尋找最優存儲順序的最優化問題:
min?σ∈Pn1n∑j=1n∑k=1jLσ?1(k)\min_{\sigma \in P_n} \frac{1}{n}\sum_{j=1}^{n}\sum_{k=1}^{j}L_{\sigma^{-1}(k)}σ∈Pn?min?n1?j=1∑n?k=1∑j?Lσ?1(k)?
因為查詢每個文件的概率相同,直覺上我們應該把小文件放前面,大文件放在后面,也就是σ\sigmaσ要滿足
Lσ?1(1)≤?≤Lσ?1(n)L_{\sigma^{-1}(1)} \le \cdots \le L_{\sigma^{-1}(n)}Lσ?1(1)?≤?≤Lσ?1(n)?
證明
注意到σ?1\sigma^{-1}σ?1也是一個nnn階排列,記τ=σ?1,τ∈Pn\tau = \sigma^{-1},\tau \in P_nτ=σ?1,τ∈Pn?。定義
S(τ)=∑j=1n∑k=1jLτ(k)=∑k=1n(n?k+1)Lτ(k)S(\tau)=\sum_{j=1}^{n}\sum_{k=1}^{j}L_{\tau(k)} = \sum_{k=1}^n(n-k+1)L_{\tau(k)}S(τ)=j=1∑n?k=1∑j?Lτ(k)?=k=1∑n?(n?k+1)Lτ(k)?
假設τ\tauτ使得字長滿足
Lτ(1)≤?≤Lτ(n)L_{\tau(1)} \le \cdots \le L_{\tau(n)}Lτ(1)?≤?≤Lτ(n)?
如果交換τi\tau_{i}τi?與τj\tau_{j}τj? (j>ij>ij>i),即定義τ′\tau'τ′滿足
τ′=(1?i?j?nτ(1)?τ(j)?τ(i)?τ(n))\tau' = \left( \begin{matrix} 1 & \cdots & i & \cdots & j & \cdots & n \\ \tau(1) & \cdots & \tau(j) & \cdots & \tau(i) & \cdots & \tau(n)\end{matrix} \right)τ′=(1τ(1)????iτ(j)????jτ(i)????nτ(n)?)
那么這會導致SSS增加
S(τ′)?S(τ)=[(n?i+1)Lτ(j)+(n?j+1)Lτ(i)]?[(n?i+1)Lτ(i)+(n?j+1)Lτ(j)]=(j?i)(Lτ(j)?Lτ(i))>0S(\tau')-S(\tau) = [(n-i+1)L_{\tau(j)}+(n-j+1)L_{\tau(i)}]\\ -[(n-i+1)L_{\tau(i)}+(n-j+1)L_{\tau(j)}] = (j-i)(L_{\tau(j)}-L_{\tau(i)})>0S(τ′)?S(τ)=[(n?i+1)Lτ(j)?+(n?j+1)Lτ(i)?]?[(n?i+1)Lτ(i)?+(n?j+1)Lτ(j)?]=(j?i)(Lτ(j)??Lτ(i)?)>0
因此
τ=arg?min?σ∈Pn1n∑j=1n∑k=1jLσ?1(k)\tau = \argmin_{\sigma \in P_n} \frac{1}{n}\sum_{j=1}^{n}\sum_{k=1}^{j}L_{\sigma^{-1}(k)}τ=σ∈Pn?argmin?n1?j=1∑n?k=1∑j?Lσ?1(k)?
證畢
相同文件長度
假設nnn個文件長度相同,但查詢頻率分別為f1,?,fnf_1,\cdots,f_nf1?,?,fn?,其中
f1+?+fn=1f_1+\cdots+f_n = 1f1?+?+fn?=1
則最優存儲順序為查詢頻率高的文件放在前面,查詢頻率低的文件放后面。
證明
同樣用nnn階排列表示存放順序,并且不失一般性,用1表示文件長度,則讀完第iii個文件需要的總長度為
∑k=1j1=j\sum_{k=1}^{j}1 = jk=1∑j?1=j
對應的頻率是fσ?1(j)f_{\sigma^{-1}(j)}fσ?1(j)?,因此這時的最優化問題變成了
min?σ∈Pn∑j=1njfσ?1(j)\min_{\sigma \in P_n} \sum_{j=1}^{n} jf_{\sigma^{-1}(j)}σ∈Pn?min?j=1∑n?jfσ?1(j)?
記τ=σ?1,τ∈Pn\tau = \sigma^{-1},\tau \in P_nτ=σ?1,τ∈Pn?。定義
S(τ)=∑j=1njfτ(j)S(\tau)=\sum_{j=1}^{n} jf_{\tau(j)}S(τ)=j=1∑n?jfτ(j)?
假設τ\tauτ使得查詢頻率滿足
fτ(1)≥?≥fτ(n)f_{\tau(1)} \ge \cdots \ge f_{\tau(n)}fτ(1)?≥?≥fτ(n)?
沿用上一個證明對τ′\tau'τ′的證明,計算
S(τ′)?S(τ)=[ifτ(j)+jfτ(i)]?[ifτ(i)+jfτ(j)]=(j?i)(fτ(i)?fτ(j))>0S(\tau')-S(\tau) = [if_{\tau(j)}+jf_{\tau(i)}] -[if_{\tau(i)}+jf_{\tau(j)}] \\= (j-i)(f_{\tau(i)}-f_{\tau(j)})>0S(τ′)?S(τ)=[ifτ(j)?+jfτ(i)?]?[ifτ(i)?+jfτ(j)?]=(j?i)(fτ(i)??fτ(j)?)>0
證畢
查詢頻率與文件長度均不同
假設nnn個文件長度不同,并且查詢頻率也不同,最優存儲順序為平均每字查詢頻率高的文件放在前面,平均每字查詢頻率低的文件放后面。
證明
證明方法與前文完全一樣。讀完第iii個文件需要的總長度為
∑k=1jLσ?1(k)\sum_{k=1}^{j}L_{\sigma^{-1}(k)}k=1∑j?Lσ?1(k)?
對應的頻率是fσ?1(j)f_{\sigma^{-1}(j)}fσ?1(j)?,因此最優化問題可以寫成
min?σ∈Pn∑j=1nfσ?1(j)∑k=1jLσ?1(k)\min_{\sigma \in P_n} \sum_{j=1}^{n}f_{\sigma^{-1}(j)}\sum_{k=1}^{j}L_{\sigma^{-1}(k)}σ∈Pn?min?j=1∑n?fσ?1(j)?k=1∑j?Lσ?1(k)?
記τ=σ?1,τ∈Pn\tau = \sigma^{-1},\tau \in P_nτ=σ?1,τ∈Pn?使之滿足
fτ(1)/Lτ(1)≥?≥fτ(n)/Lτ(n)f_{\tau(1)}/L_{\tau(1)} \ge \cdots \ge f_{\tau(n)}/L_{\tau(n)}fτ(1)?/Lτ(1)?≥?≥fτ(n)?/Lτ(n)?
用前兩個證明的思路,可以說明τ\tauτ是最優解。
證畢
根據上面的論述,在計算上,我們把最優存儲問題變成了排序問題,這就是優先策略的體現,因為我們是按照平均每字查詢頻率優先的原則對文件進行排序的。對于這一類找最優pecking order的問題,優化的目標是最大化gain或者最小化cost,在確定pecking order的時候,我們應該按每一次pecking的marginal gain最大、或者marginal cost最小的原則進行,這就是優先策略的思想。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的UA SIE545 优化理论基础9 优先与分治策略1 文件的最优存储顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UA MATH567 高维统计I 概率不
- 下一篇: UA MATH567 高维统计I 概率不