算法第四章上机实验报告

题目名称

4-1 程序存储问题 

问题描述

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

算法描述

采用贪心算法,本题贪心策略是比较找到最小的磁带长度,先进行由小到大排序,再进行程序存放磁带,当放到不能放时跳出循环,此时的循环个数就是能够存放的最大值。

算法时间复杂度分析

排序的时间复杂度:O(n)= nlogn

寻找长度选择的时间复杂度:O(n)= n

对贪心算法的理解

在对问题求解时,贪心算法总是作出当前看来最好的选择,不从整体最优上加以考虑,它所做的仅是某种意义上的局部最优解。

在运用贪心算法的时候,我们也要按照步骤出发思考

(1)建立数学模型;
(2)把求解问题分成若干个子问题;
(3)对每一个子问题求解,得到子问题的局部最优解;
(4)把子问题的局部最优解合成原先解问题的一个解;

心得体会

贪心选择是采用从上向下,迭代的方法做出选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择的性质,我们必须证明每一步所作的贪心选择最终能得到问题的最优解。通常可以首先证明问题的一个整体最优解,是从贪心选择开始的,而且作了贪心选择后,原问题简化为一个规模更小的类似子问题。然后,用数学归纳法证明,通过每一步贪心选择,最终可得到问题的一个整体最优解。

posted @ 2021-11-11 16:06  赶鹭  阅读(36)  评论(0编辑  收藏  举报