434
社区成员
发帖
与我相关
我的任务
分享一、反证法:
假设最优解不包含贪心选择:我们假设在最优解 S 中,贪心选择 C(即当前可以选择的最大数字)并未被包含。我们称 C 为 x,它是数组中某个位置的数。
定义新解:由于 C(即 x)没有被包含在 S 中,那么在 S 中一定存在另一个数字 y 作为替代,且 y 是从 S 中选择的一个数字(注意:由于不允许选择相邻的数字,y 必然和 x 不是相邻的)。
比较和:因为 C 是当前选择的最大数字,那么显然有 x > y。为了构造一个新的解,我们将 S 中的 y 移除,并将 x 加入。
构造新的解:设 S' 是新构造的解,S' = S - {y} + {x}。由于 x > y,所以我们有:
sum(S′)=sum(S)−y+x>sum(S)
这说明 S' 的和大于 S 的和。
推出矛盾:根据我们的假设,S 是最优解,但现在我们得到了一个更大的和的解 S',这与我们对于 S 为最优解的假设矛盾。
因此,假设不成立,即最优解 S 必须包含贪心选择 C,“删数问题”的贪心算法是有效的,且满足贪心选择性质。
二、对贪心法的体会与思考:
贪心法是一种高效的算法设计思想,通过在每一步做出局部最优选择来构建全局最优解,适用于具有贪心选择性质和最优子结构的问题。然而,并非所有问题都适合贪心算法,因此在应用时需谨慎分析问题性质。贪心法实现通常简单,时间复杂度低,但要求合理选择相应的数据结构。此外,反证法是证明贪心选择性质的重要工具,帮助验证算法的正确性。总体而言,贪心法是一种强大而实用的优化策略,适用于解决许多经典问题。