434
社区成员
发帖
与我相关
我的任务
分享一、请用反证法证明“删数问题”的算法满足贪心选择性质(即设最优解不包含贪心选择,则可以通过转换找出一个更小的数,推出矛盾)
问题:给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最小的删数方案。如果数字最前面有0不输出。
设数字A由a1a2......an组成。
贪心选择:从左至右,若ai>ai+1,将ai删去,得到新的A',a1...ai+1...an。重复这个操作,直到删除了k个数。
证明:设使用贪心选择删去的第一个数为ai。假设不使用贪心选择,设最优解选择后的数为B,a1...ai...an,那么B<A'。但是很显然,因为ai>ai+1,用ai+1替换ai,能够得到一个更小的数,这是矛盾的,所以最优解使用了贪心选择,该问题有贪心选择性质,得出证明。
二、结合本章的学习,总结你对贪心法的体会和思考。
学习贪心算法后,我明白了解决问题的时候可能并不需要复杂地考虑全局结构,而只需找到局部最优解然后不断推进。