磁盘文件最优存储,复杂度为O(n^2)。
这是Ian的第一篇博客,希望大家喜欢,我会努力把自己的理解融入到我要讲的东西中,有什么不足欢迎指教。
题目是从书上来的,不是原创。
问题描述:
设磁盘上有 n 个文件 f1, f2, …, fn,每个文件占用磁盘上的 1 个磁
道。这 n 个文件的检索概率分别是 p1, p2, …, pn,且 p1+p2+…+ pn=1。
磁头从当前磁道移到被检信息磁道所需的时间可用这 2 个磁道之间
的径向距离来度量。如果文件 fi 存放在第 i 道上,1≤i≤n,则检索这
n 个文件的期望时间是对于所有的 i < j, time += pi*pj*d(i,j)。其中d(i,j)
是第 i 道与第 j 道之间的径向距离|i-j|。
磁盘文件的最优存储问题要求确定这 n 个文件在磁盘上的存储
位置, 使期望检索时间达到最小。
算法设计:
很多同学都认为设计算法要从原理进行分析,我认为这是好的,但不一定最有效,我认为最有效的方式是先从全局把握,看一下经验能带给我们什么,然后再从算法设计的流程一步一步的下去。正如这个问题,易知本题的贪心选择性质为,使概率值大的两个文件尽可能的挨在一起。即先让文件按概率大小排序,概率最大的应该放中间,第二大和第三大的分别放在最大的左右两边,第四大的放在第二大左边,第五大的放在第三大的右边,依次下去就行。