1. 用反证法证明“删数问题”的算法满足贪心选择性质
假设我们有一个“删数问题”的算法,其中的贪心策略是每次选择当前数组中最小的数进行删除,目的是使得最终剩下的数的和最小。
为了证明贪心策略满足贪心选择性质,我们将通过反证法进行证明。假设最优解中不包含贪心选择,即我们选择了一些数来删除,但其中没有选择当前最小的数。我们将尝试通过这种假设推导出矛盾。
假设最优解不包含贪心选择:
假设我们已经按照最优解的方式,删除了一些数,使得最终剩下的数的和是最小的。现在,假设我们在某个步骤没有选择最小的数,而是选择了一个比最小数大的数。我们接下来将通过这种假设来进行矛盾推导。
设定变量:
设我们在某一步选择了一个数 x,而不是当前最小的数 y,并且最终结果是最优的,满足删除后的数的和最小。
构造一个新的解:
如果我们将 x 替换成 y,那么剩下的数集合的和将变得更小,因为 y 是比 x 更小的数。
得出矛盾:
因为我们假设最优解中没有选择 y,而是选择了比 y 大的数 x,这意味着我们可以通过交换 x 和 y 来得到一个更优的解,即使得剩下的数的和变得更小。
这与我们假设最优解已经是最小的结果相矛盾。
因此,假设最优解不包含贪心选择的假设是错误的,最优解必然包含贪心选择。这就证明了“删数问题”算法满足贪心选择性质。
2. 结合本章的学习,总结对贪心法的体会和思考
贪心算法(Greedy Algorithm)是一种通过选择当前状态下最优的决策来期望获得全局最优解的方法。它的核心思想是通过局部最优的选择来达成全局最优。通过本章的学习,我对贪心算法有了一些更深的理解和体会。
贪心法的直观性和简单性:
贪心算法通常非常直观且易于实现。它通过简单的局部决策(比如选择最小或最大元素、选择最合适的操作)来推动问题的解决。这种方法往往使得算法结构简洁,时间复杂度较低。
局部最优和全局最优之间的关系:
贪心算法依赖于“局部最优”的选择,希望通过一系列局部最优的选择得到全局最优解。然而,贪心法并不总是能够得到全局最优解。能否使用贪心算法得到全局最优解,依赖于问题本身是否具备贪心选择性质和最优子结构。
贪心法适用于那些具有贪心选择性质(即局部最优解能够推导出全局最优解)和最优子结构(即问题的最优解可以由子问题的最优解组合而成)的场景。如果问题不具备这些特性,贪心算法可能无法提供正确的解决方案。
...全文