算法第四章作业

1.请说明作业三”程序存储问题“的贪心策略,并用反证法证明满足贪心选择性质,并给出时间复杂度分析

贪心策略:将长度序列从短到长排序,尽可能选择最短的。将数组排序(按照升序)后,从第一个所需最少的程序开始选择,直到内存不能再放得进下一个程序为止

证明:如果存在比贪心算法得到的最优解的更优解,那么会多一个程序在磁带上,从而矛盾,所以不存在更优解。给出一升序序列 { n1, n2, ..., nn } ,按照贪心算法,其最优解序列为 S1 = { n1, n2, ..., nk } ( k <= n) ,各元素和为sum1。
假设最优解序列不含一较小数 ni(ni <= nk),则必有一个(或以上)大于 nk 的数 nx 存在最优解之中,此时最优解序列为 S2 = { n1, n2, ..., nx } ( x > k && x != i ) ,则序列元素和为 sum2 > sum1,此时 ni 必能与 S2 中一较大数替换使得 sum2 变小,从而使其可能能容纳下更多的元素,所以替换后的最优解序列 |S2`| >= |S2| ,与最优解矛盾,假设不成立,即最优解序列一定是原序列的连续升序子序列,满足贪心选择性质。

时间复杂度:O(nlogn)

2.你对贪心算法的理解

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

 

posted @ 2022-11-21 23:14  彭羚欣  阅读(24)  评论(0)    收藏  举报