黑白佩

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. 实践题目

程序存储问题

2. 问题描述

设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。

3. 算法描述(说明你的贪心策略,并且参考会场安排问题,利用反证法证明贪心选择和最优子结构性质)

贪心策略:优先选择程序长度最小的单位,

反证法证明贪心选择:假设存在一个最优解不包含程序长度最小的程序,则将最小的程序与最优解其中任意程序替换,仍可得出一个新的最优解,所以最优解包含长度最小的程序

最优子结构性质:假设所有的程序为集合N,集合A,集合B,集合X都是集合N的子集,集合A为集合N-集合X的贪心算法选择,集合B为集合N-集合X的某种选择,若最优解为集合C = 集合B + 最优选择(集合X)

但存在集合C‘ = 集合A + 最优选择(集合X) 因为集合A的个数因为贪心算法>=集合B的个数,所以C<=C’ 所以C‘的集合才是最优解,所以具有最优子结构

4. 算法时间及空间复杂度分析(要有分析过程)

只需要一次快排取从最小的开始遍历即可

O(nlogn)

5. 心得体会(对本次实践收获及疑惑进行总结)

通过证明更加理解了贪心算法,也掌握另一种新的算法,重点在于如何选择正确的贪心策略

posted on 2019-11-17 22:48  黑白佩  阅读(81)  评论(0编辑  收藏  举报