434
社区成员
发帖
与我相关
我的任务
分享1.请说明作业三”程序存储问题“的贪心策略,并用反证法证明满足贪心选择性质,并给出时间复杂度分析
1.1贪心策略:此题想要求固定长度磁带上能存放的最多程序个数。其贪心策略体现在把程序存放在磁带上的长度按升排序,然后从最小长度的磁带开始依次进行选择,最终得到最优解。
1.2反证法证明:
磁带长度为L,有n个程序,其长度按降序排序为{a1,a2,a3,a4…an}
设用贪心策略每次取最小长度的程序得到的最优解为A:m个,分别是{a1,a2,a3..am} (m <= n)
假设贪心策略得到的最优解A并不是题目的最优解,真正的最优解是A1
第一种情况:A1:{a1,a2,a4,a3…am} 与用贪心策略得到的最优解相同,则说法矛盾
第二中情况:A1:{a1,a2,a3,am+1} 小于用贪心策略得到的最优解,则说法矛盾
综上所述,此题满足贪心选择性质。
1.3 时间复杂度分析
使用库函数sort进行p排序,一个for循环进行贪心选择,则时间复杂度为o(n)
2.你对贪心算法的理解
贪心算法通过一系列局部最优解得到整个问题的最优解,和动态规划一样,都将整个问题简化成规模更小的子问题。但与动态规划不同的是每个子问题的解是局部最优解,也就是仅在当前状态下做出最好选择,可以依赖以往所做过的选择,但不依赖将来所做的选择,也不依赖子问题的解,因此也不用像动态规划一样将子问题的解记录下来。对于解决一个问题选择使用贪心算法首先要确定其是否具有贪心选择性质和最优子结构性质。然后最重要的是要确保其贪心策略是否正确,需要用不同情况去检验贪心策略。贪心算法并不能总奏效,但对于某些问题使用贪心算法能够极大程度提高解题效率。