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最小的原则进行,这就是优先策略的思想。

UA SIE545 优化理论基础9 优先与分治策略1 文件的最优存储顺序相关推荐

  1. UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法

    UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法 DFS方法基础 邮票问题 这部分的主要目标是建立求解整数规划的方法,早期解决整数规划需要穷举,后来人们把搜索技术应用到整数规划中,极大 ...

  2. UA SIE545 优化理论基础1 例题1 常见的凸集

    UA SIE545 优化理论基础1 例题1 常见的凸集 一些例题 在优化理论中,我们主要讨论下面几种凸集: 超平面:{x:pTx=β}\{x:p^Tx=\beta\}{x:pTx=β} 半空间:{x: ...

  3. UA SIE545 优化理论基础 用Farkas定理证明Farkas类的结论

    UA SIE545 优化理论基础 用Farkas定理证明Farkas类的结论 Farkas定理 AAA是一个m×nm\times nm×n的矩阵,下面两个系统有且仅有一个有解: I:Ax≤0,cTx& ...

  4. UA SIE545 优化理论基础 函数凸性的一些有趣的判断方法

    UA SIE545 优化理论基础 函数凸性的一些有趣的判断方法 Convex function f:S→Rf:S \to \mathbb{R}f:S→R where SSS is a nonempty ...

  5. UA SIE545 优化理论基础 例题 对偶函数的凸性与次梯度计算

    UA SIE545 优化理论基础 例题 对偶函数的凸性与次梯度计算 例 考虑对偶函数 θ(u1,u2)=min⁡x12+x22≤4x1(2−u1)+x2(3−u2)\theta(u_1,u_2) = ...

  6. UA SIE545 优化理论基础2 凸函数 概念 理论 总结

    UA SIE545 优化理论基础2 凸函数 概念 理论 总结 凸函数的概念与简单性质 Convex function f:S→Rf:S \to \mathbb{R}f:S→R where SSS is ...

  7. UA SIE545 优化理论基础3 Fritz-John与Kuhn-Tucker理论总结 带等式约束与不等式约束的极值问题

    UA SIE545 优化理论基础3 Fritz-John与Kuhn-Tucker理论总结 带等式约束与不等式约束的极值问题 对于函数f:X→Yf:X \to Yf:X→Y,我们希望XXX是一个凸的度量 ...

  8. UA SIE545 优化理论基础4 对偶理论简介6 求解对偶问题的梯度算法

    UA SIE545 优化理论基础4 对偶理论简介6 求解对偶问题的梯度算法 这一讲我们介绍求解对偶问题的另一个算法--梯度算法(gradient method). 假设原问题为 min⁡x∈Xf(x) ...

  9. UA SIE545 优化理论基础4 对偶理论简介4 求解对偶问题的割平面算法

    UA SIE545 优化理论基础4 对偶理论简介4 求解对偶问题的割平面算法 这一讲我们介绍一个求解对偶问题的算法--割平面算法(cutting plane algorithm). 假设原问题为 mi ...

最新文章

  1. c语言实验报告管理系统,C语言实验报告-学生信息资管理系统.doc
  2. 1_itemtele
  3. Intel Realsense D435 如何设置曝光参数(exposure)
  4. 机器人学习--ROS/AMCL实现初始化粒子撒满整张地图和分步收敛
  5. CentosMySQL5.6安装方法
  6. NOIP2017提高组比赛总结
  7. JavaScript- 正则表达式匹配汉字
  8. python代码异常对照表格_Python表格py错误(pandas错误?)
  9. 电脑dns_win10系统dns错误如何解决「系统天地」
  10. 肯耐珂萨助力世界500强零售企业在线春招:单次面试3000人
  11. Win 10 或可以运行安卓APP
  12. 单片机的最新发展动态_【计算机论文】单片机在节能、语言交流和智能监控上的应用...
  13. 俯瞰大雾弥漫下的鄱阳湖二桥
  14. rose-scanning reading
  15. 方法Method(Java)
  16. hosts文件修改,文件类型修改
  17. java开发随记之 Invalidate Caches / Restart
  18. appium : 查看Android手机自带浏览器内核版本(webview版本)
  19. 《近匠》 | 探索一站式智能硬件开发的最佳解决方案
  20. 生鲜配送系统源码功能介绍

热门文章

  1. 【Python学习系列二十七】pearson相关系数计算
  2. 日志分析平台ELK部署初学
  3. FRAMEBUFFER 显示原理及RGB显示
  4. 动态导航与动态路由绑定
  5. MobaXterm工具连接Linux服务器入门使用手册,国产化泰山服务器连接工具使用演示
  6. C语言实现牛顿迭代法
  7. vue cli 项目在打包时候报错解决方法
  8. IAR 不能使用go to 的解决方法
  9. CTFshow php特性 web100
  10. OpenGL坐标系转化之投影坐标系