反证法
- 假定针对特定正整数所对应的数字字符串,存在一个最优解序列。在该序列的某一操作环节中,未遵循贪心算法。依据贪心算法,在当前步骤理应删除位置处的数字(满足存在使得),然而所假定的最优解在这一步并未删除,而是去除了其他某些数字,由此生成了一个数字序列。
- 基于所假定的最优解对应的操作序列,把按照贪心策略原本应当删除的数字重新添加上去,同时剔除在这一步假定最优解中删掉的那个数字,进而得到一个新的解所对应的数字序列。
- 从数字序列大小的判定准则出发,当依照贪心策略删掉时,鉴于存在,数字序列后续部分的数字相对排列次序维持不变,不过整体数值却减小了。举例来说,若原始数字序列是,当时,删掉得到,很明显它比保留而删掉其他位置数字所构建的等长序列要小,这是因为在数值比较过程中,靠前位置的数字越小则整个数值就越小。所以,新得到的数字序列所对应的数值必定小于所假定的最优解对应的数字序列的数值。
- 但起初我们设定为最优解,也就是不存在比它更小的解。然而如今通过构造得到了,其数值小于,这与是最优解的假定相互冲突。
对贪心法的体会和思考
贪心法以局部最优策略为核心,在解决问题时极为高效。它在资源分配、任务调度等多类场景有广泛应用,如活动安排问题,按结束时间最早选择活动,能快速确定最大兼容活动集合。
但贪心法的关键在于问题需具备贪心选择性质与最优子结构。像 0-1 背包问题就因不满足而不能直接用贪心法,而分数背包问题则可。这凸显了精准判断问题特性的重要性,一旦误判,可能导致结果偏差。
从思维角度,贪心法培养了一种从当下最优出发构建全局的逻辑,简化复杂问题求解过程。可它也存在局限,并非所有看似能局部最优求解的问题都适用。