《编程之美》读书笔记15: 4.5 磁带文件存放优化
《编程之美》读书笔记15: 4.5 磁带文件存放优化
对一个已经是最优解的排列,记第i个文件的长度为Bi,被访问概率为Ai。如果交换第i个和第i+1个文件,则平均长度一定不会变小,交换后,访问原第i个文件时,要多访问一个原第i+1文件,长度增加了Ai*Bi+1,而访问原第i+1个文件时,要少访问一个原第i个文件,长度减少了Ai+1*Bi,而访问这两个文件之前和之后的文件,长度没有改变,故有:
Ai*Bi+1 - Ai+1*Bi >=0 即Ai/Bi >= Ai+1/Bi+1,
由于i可以任意取,因而A0/B0 >= A1/B1 >= A2/B2 >= … >= An-1/Bn-1。也就是说,最优解一定满足P[i]/L[i] 按降序排列,而根据P[i]/L[i]值通过降序排列只能得到唯一确定的排列(只考虑P[i]/L[i]值大小,如果两个文件的P[i]/L[i]值相同,它们位置可以互换而不影响),这个排列必然是最优解。因而,原问题等同于“将P[i]/L[i] 降序排列”。
类似题:
“将一个给定的自然数数组,连接起来得到一个数,求这个数的最大值或最小值”。
作者: flyinghearts
出处: http://www.cnblogs.com/flyinghearts/
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。