删数问题反证法证明

反证法证明

  1. 假设
    假设存在一个最优解,它不包含贪心选择。即存在某个步骤,贪心策略选择的数字不是最优解中删除的数字。

  2. 定义
    设原始数字为 N,贪心策略选择的数字为 d(即从左到右第一个较大的数字),而最优解选择的数字为 d′(d′=d)。

  3. 构造
    假设在最优解中,删除 d′ 后得到的数字为 N′。根据最优解的假设,N′ 是比任何通过贪心策略得到的数字都要小的数字。

  4. 转换
    现在,我们考虑在 N′ 的基础上,不删除 d′,而是删除贪心策略选择的 d。设这样得到的数字为 N′′。

  5. 比较
    由于 d 是从左到右第一个较大的数字,删除 d 后得到的 N′′ 应该比删除 d′ 后得到的 N′ 更小(或至少相等)。即 N′′≤N′。

  6. 推出矛盾
    如果 N′′<N′,那么 N′′ 就是一个比最优解 N′ 更小的数字,这与最优解的定义矛盾。
    如果 N′′=N′,那么贪心策略也是最优解的一种,这与我们的假设(最优解不包含贪心选择)矛盾。

  7. 结论
    由于无论哪种情况都会推出矛盾,所以我们的假设(存在一个最优解,它不包含贪心选择)是错误的。因此,贪心选择性质在“删数问题”中是成立的。

贪心算法是一种常用的算法思想,它通常用于求解最优化问题。贪心算法的基本思想是:每一步都选择当前状态下最优的解,最终得到全局最优解。但是,贪心算法并不是所有问题都适用,有些问题需要进行证明才能确定贪心算法的正确性。 其中,反证法是一种常用的证明方法。反证法的基本思想是:假设所要证明的命题不成立,然后推导出一个矛盾的结论,从而证明原命题成立。 在贪心算法中,反证法通常用于证明贪心选择性质和最优子结构性质。具体来说,假设贪心算法得到的解不是最优解,然后推导出一个矛盾的结论,从而证明贪心算法得到的解是最优解。 举个例子,假设有一个背包问题,要求在背包容量为C的情况下,选择一些物品放入背包中,使得背包中物品的总价值最大。每个物品有两个属性:重量w和价值v。贪心算法可以选择每次选择单位重量价值最大的物品放入背包中。我们可以使用反证法证明这个贪心算法的正确性: 假设贪心算法得到的解不是最优解,即存在一种更优的解。我们假设这个更优的解选择了物品i和物品j,但是贪心算法没有选择物品j,而是选择了物品k。那么我们可以得到以下两个不等式: v[i]/w[i] > v[j]/w[j] (物品i的单位重量价值大于物品j的单位重量价值) v[i]/w[i] < v[k]/w[k] (物品i的单位重量价值小于物品k的单位重量价值) 将这两个不等式相乘,得到: v[i]*v[k] > v[j]*w[i] 由于v[i]、v[j]、w[i]、w[j]都是正,所以上式成立。但是,我们知道贪心算法选择物品i和物品k的总价值一定大于选择物品i和物品j的总价值,因为: v[i]*w[k] + v[k]*w[i] > v[i]*w[j] + v[j]*w[i] 这与上式矛盾,因此假设不成立,贪心算法得到的解是最优解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值