434
社区成员
发帖
与我相关
我的任务
分享1.请说明作业三”程序存储问题“的贪心策略,并用反证法证明满足贪心选择性质,并给出时间复杂度分析
7-2 程序存储问题
设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。
贪心策略
因为题目的目的是放尽可能多的程序到磁带上,所以优先放短的程序可以节省空间。故需要先将n个程序进行升序排序,然后判断磁带的剩余长度是否大于当前的程序长度。如果大于,就将程序存储进去,如果小于,就结束程序。
反例
如果存在比贪心算法得到的最优解的更优解,那么会多一个程序在磁带上。已知当前未放入磁带的最短长度都比剩余空间要长,所以不存在更优解。故当前情况最优。
时间复杂度C(nlogn)排序时间
对贪心算法的理解
贪心算法通常是局部最优的解法,每次都会选择当前情况下的最优解。然而有时局部的最优解不等同于全局的最优解。贪心算法会先将数据按照一定的标准进行排序,然后进行遍历,当到达终止情况时结束遍历就可以得到最终解每做一次选择,就把原问题简化成规模更小的子问题。