算法第四章上机实践报告
算法第四章上机实践报告
1.实践题目
程序存储问题
2.问题描述
n个程序都有长度,一个磁带长度为L,要求装入最多的程序。
3.算法描述(说明你的贪心策略,并且参考会场安排问题,利用反证法证明贪心选择和最优子结构性质)
(1) 贪心策略:依次把长度最小的程序装入磁带,直到不能装入为止,装入数即为能装入磁带的最大程序数。
(2) 反证法证明:如果磁带能装入一个程序,那么长度最小的程序一定能装进磁带,因为如果长度最小的程序不能装入磁带,那么更大的程序必不能装入磁带,这就导致磁带不能装入程序,这与假设矛盾。这就证明如果磁带能装入至少一个程序,长度最短的程序是一定能装入磁带的,这证明最优子结构一定包含最短程序。把最小的程序装入磁带后,磁带剩余空间最长,就有可能装入更多的程序。因为如果装入的程序不是最短程序,那么磁带剩余空间一定会小于磁带装入最短程序后的剩余空间,也不可能比装入最小程序后能装下的程序数量更多。这就证明贪心选择是正确的。
4.算法时间及空间复杂度分析(要有分析过程)
两个基本步骤排序和装入过程,排序时间复杂度是O(nlogn),装入过程是O(n),所以综合是O(nlogN);
全程就用了一个大小为n的一维数组,所以空间复杂度是O(n)。
5.心得体会(对本次实践收获及疑惑进行总结)
贪心选择不依赖将来的选择,只在当前做最优选择,贪心算法不一定能得到最优解,但在许多特定问题上能求得最优解,即使不能求得最优解,也能得到最优解的近似解。
做贪心选择之前可以最好能证明一下贪心策略是正确的。
posted on 2019-11-16 22:16 Shenhaowen 阅读(123) 评论(0) 编辑 收藏 举报