算法设计与分析第四章作业

CLbaby. 2024-11-24 20:57:40

1.  请用反证法证明“删数问题”的算法满足贪心选择性质(即设最优解不包含贪心选择,则可以通过转换找出一个更小的数,推出矛盾)

贪心选择在扫描数字的过程中,找到比当前数字更大的数并优先删除,这样可以确保留下的数字尽量小。

假设删数问题的最优解不包含贪心选择,即某一步选择了一个不是由贪心算法选出来的数字,而实际贪心选择留下的数字会更小。在这种情况下,将非贪心选择换成贪心选择,剩余的数字必然更小,与假设最优解矛盾。因此,删数问题的贪心选择性质成立。

比如 int n = 4321; 我们需要删除一位数字,得到的值最小。在贪心选择下,会删去4,剩下的数字是321;假设最优解是不删除4,即最优解不包含贪心选择,比如删除3,得到数字421.显然421>321,与假设矛盾。因此“删数问题”算法满足贪心选择性质。

2. 结合本章的学习,总结你对贪心法的体会和思考

用贪心算法的时候需要考虑问题有没有具备贪心选择性质,比如背包问题符合,而01背包不符合,否则可能得出错误结果。因此在使用之前需要对问题分析,看看问题符不符合贪心选择性质和最优子结构。

贪心算法得到的解是每一步最优解的累积,符合人的直觉,比如货币找零。但是有时候需要结合动态规划或者回溯来验证结果,比如dijkstra算法。

 

 

...全文
59 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

434

社区成员

发帖
与我相关
我的任务
社区描述
广东外语外贸大学信息科学与技术学院
算法 高校
社区管理员
  • brisksea
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧