434
社区成员
发帖
与我相关
我的任务
分享一、程序存储问题
1. 贪心策略
要尽可能多地将程序放入磁带,按照程序长度从小到大排列,优先选取较短的程序放入磁带。
2. 证明
设P={1, 2, ...,n}所有程序的集合且按长度从小到大的顺序排列,设A是最优解,且A中最先放入磁带的是程序k。若k = 1,则最优解包含程序1,即A是一个以贪心选择开始的最优解。若k>1(最优解不包含程序1),令B=A–{k}∪{1},因为程序 1 的长度小于程序 k 的长度,且 A中的程序个数与B相同,故B也是一个最优解,而B包含程序1,故总存在以贪心选择开始的最优存储方案。
3. 时间复杂度
排序的时间复杂度为O(nlogn),搜索程序的时间复杂度为O(n),故总的时间复杂度为O(nlogn)。
二、对贪心算法的理解
所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。
贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。