1 条题解
-
0
自动搬运
来自洛谷,原作者为

heidoudou
**搬运于
2025-08-24 21:20:51,当前版本为作者最后更新于2018-08-10 23:41:24,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
贪心算法并不难,难的是证明。 --- 杨科洛夫斯基(heidoudou)
贪心算法:先对数组从小到大排序,用
i = 1, j = n指针指向首尾元素; 如果 ,则将 单独作为一组,指针j--;如果 , 则将 和 分为一组, 指针i--, j--。 如此重复直到 “取完” 所有元素。贪心算法证明: 对于
a[i...j]问题,如果存在最优解 ,但是 和 的分组不符合上述贪心选择过程。会有以下几种情况:- 如果 , 也不可能与其他任何 , 一组。 只能单独一组。这是符合贪心选择性质的。
- 如果 , 在最优解中, 并不与 一组,
- 单独一组,这时候如果最优解的 仍然孤单, 那么将他俩合为一组,最优解的分组数减一,居然优于最优解,矛盾。
- 单独一组, 与另一个 一组,这时候,将 从 身边拆开,再与 一组,所得分组数不变,新的解 , 和 一组是符合贪心选择性质的,贪心选择可以得到最优解。
- 与 一组, 单独一组,交换 和 , 不难看出
- 与 一组, 与 一组,交换 与 之后, , , ,
至此,我们证明了问题的某个最优解可以通过上述贪心选择过程得到。
下面证明 贪心选择加子问题的最优解 为全局最优解。
设有
a[i...j]问题(记为 )的贪心解为 , 经过贪心选择之后 子问题 的最优解为 。 如果贪心选择加子问题 的最优解 不是 的最优解。 假设存在一个最优解 , 可以通过上面的证明过程,改变解的结构,使之变成一个贪心选择和相同子问题 的解 。 因为 ,并且二者贪心选择所产生的分组数是相同的,所以 , 这与 是最优解矛盾。所以贪心选择加子问题的最优解 为全局最优解。证毕。
写的啰嗦了一点, 但是读懂这些证明以及为什么这样证明对理解贪心算法大有裨益。
光知道贪心,贪心为什么可以得到最优解,你证明过么?
- 1
信息
- ID
- 96
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者