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

“删数问题”是指给定一个数字串,通过删除其中的一些数字(保持剩余数字的相对顺序不变),得到一个新的数字,使得这个新的数字尽可能小。证明贪心选择性质需要使用反证法

题目设定与贪心策略

设原始数字串为 S=s1,s2,…,snS = s_1, s_2, \dots, s_nS=s1​,s2​,…,sn​,需要删去 kkk 个数字,剩下的数字构成的数尽可能小。贪心策略是:从左到右扫描数字,尽可能优先删除当前导致数值最大的数字

目标

证明上述贪心策略满足贪心选择性质,即:假设最优解不包含贪心选择,则可以通过替换最优解的一部分,使其包含贪心选择,并且得到的数不比最优解大(即更优或等价)。


证明

1. 假设

设贪心算法选择删除了一个数字 sis_isi​,得到部分结果数字串 SgreedyS_{greedy}Sgreedy​,而存在一个最优解 SoptimalS_{optimal}Soptimal​,SoptimalS_{optimal}Soptimal​ 没有删除 sis_isi​。我们需要证明 SoptimalS_{optimal}Soptimal​ 不可能比 SgreedyS_{greedy}Sgreedy​ 更优。

2. 转换

根据贪心策略,sis_isi​ 是删除序列中第一个(从左到右)比后续数字更大的数,或者是数字串中当前局部最大值。例如:

  • 如果 si>si+1s_i > s_{i+1}si​>si+1​,贪心选择删除 sis_isi​。
  • 若 SoptimalS_{optimal}Soptimal​ 没有删除 sis_isi​,则在 SoptimalS_{optimal}Soptimal​ 中,sis_isi​ 必须保留,而后续某处(如 sjs_jsj​)会删除一个不同的数字。

用 Soptimal′S_{optimal}'Soptimal′​ 表示通过替换删除 sis_isi​ 而构造的新的最优解。需要证明 Soptimal′S_{optimal}'Soptimal′​ 不会比 SoptimalS_{optimal}Soptimal​ 更差。

3. 观察

由于 si>si+1s_i > s_{i+1}si​>si+1​,删除 sis_isi​ 会使剩余数字串更小(即更优)。而 SoptimalS_{optimal}Soptimal​ 保留了 sis_isi​,则删除后续数字(如 sjs_jsj​)可能导致前缀数值更大:

  • SgreedyS_{greedy}Sgreedy​ 的前缀较小,因为删掉了 sis_isi​。
  • SoptimalS_{optimal}Soptimal​ 的前缀较大,导致整体数值不可能小于 SgreedyS_{greedy}Sgreedy​。
4. 矛盾

因此,如果 SoptimalS_{optimal}Soptimal​ 不包含贪心选择,则一定存在一种调整方案(删除 sis_isi​,而不是后续的某个数字),使得新的结果 Soptimal′S_{optimal}'Soptimal′​ 至少与 SoptimalS_{optimal}Soptimal​ 等价(或更优)。

这与假设 SoptimalS_{optimal}Soptimal​ 比 SgreedyS_{greedy}Sgreedy​ 更优矛盾。


结论

通过反证法证明,删除当前导致数值最大的数字(即贪心选择)必然是最优解的一部分。因此,“删数问题”满足贪心选择性质。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值