我得到了以下问题: 给定 n 个文件,长度为 z1,...zn 和用法 u1,....un 其中所有 u1,...un 的总和等于 1. 0 < u_i < 1
他们希望进行排序,使从存储中获取文件所需的时间最少。例如,如果 z1 = 12, l2 = 3 and u1 = 0,9 and u2 = 0,1 其中文件 1 被首先获取,访问的大概时间是 12* 0,8 + 15* 0,1
我的任务:证明这个(贪心)算法是最优的。
我的问题:我对这个问题的回答是否正确或者我应该改进什么?
我的答案:
假设算法不是最优的,则必须存在一个更有效的顺序。为此,必须提到两个因素。用法和长度。使用的文件越多,访问时间就越短。为此,文件的长度必须尽可能短。如果公式 z1/u1 是按降序排序的。最后放置使用率高的文件。因此,访问时间是在 * 使用之前由所有长度决定的,这意味着更频繁的文件将被缓慢访问。这与效率是矛盾的。假设公式 z_i / u_i 效率不高。除以 u_i 的结果是,如果使用更多,则项会更小。这意味着可以更快地访问更常用的术语,因此 u_i < 1 且 > 0。如果与该除法不同,使用率较高的术语将不会被首选,这将与效率相矛盾。也因为 z_i 在分数的顶部,较低的长度将是首选。与此不同的是,这意味着长度较长的术语也应该是首选。首先考虑更长的期限与效率相矛盾。因此,所有其他采用另一种排序的替代方案都可能相互矛盾,可以证明该术语是最优且正确的。