序言
贪心算法是 \(\text{OI}\) 界中一门高深又基础的算法,一般用于求解最优性问题。
贪心变化多端,时易时难,例如:易的 删数问题 ,难的 树上的数 。
博主因为学业繁忙,只能抽出时间写,经常会咕咕咕,写的不好的请见谅。
参考文献:李煜东《算法竞赛进阶指南》。
\(~\)
贪心是个啥?
贪心贪心,当然是贪心啦。
贪心是一种在每一次做决策的时候,总是采取当前意义下最优策略的算法。
换句话说,每次做出选择,我们总是会选择当前看来最优秀的选择。
这是一种 局部最优性 推导至 整体最优性 的算法。
\(~\)
关于正确性?
大胆猜想,细心证明。
贪心的正确性常常不能得到保障,许多 \(\texttt{OIer}\) 会把一些 \(\text{dp}\) 的问题误认为贪心可以解决,从而丢分。
所以在考场上不能贸然贪心,贪心往往都是在 自己已经证明 或者 验了很多数据 的情况下使用的。
常见的贪心的证明手段有:
\(1.\) 反证法
" 假设结论不成立,会推出一些问题与事实相矛盾,从而反证明结论是正确的 "
例题:gugugu
\(2.\) 数学归纳法
" 先证明结论在最小单元下正确,再假设结论在一般情况下是正确的,在此基础上去证明结论在一般情况下进一步正确,从而归纳证明结论是正确的 "
例题:gugugu
\(3.\) 微扰
" 在任意局面下,通过某些优先级条件,判断是否能交换两个相邻的元素,使得整体结果更优,再用冒泡排序的一些性质推出使得答案最优的结论 "
例题:gugugu
\(4.\) 范围缩放
" 在局部最优策略下,证明按最优解扩展局部范围都不会导致整体结果变差 "
例题:gugugu
\(5.\) 决策包容性
" 证明在做出局部最优解的情况下,当前状态的可扩展集合包含了做出其他所有可能策略的所有可扩展集合 "
例题:gugugu
以上五种是最常见的贪心证明方法,需要了然于胸。
博主会抽出一些好题来讲,深入理解证明方法的精髓所在。
\(~\)
好题选讲
(先咕着 ......
\(~\)
结语
贪心算法博大精深,博主希望可以帮助到大家了解贪心算法,但还是希望读者有能力的情况下可以做到举一反三。
\[
\texttt{Thanks} \ \texttt{for} \ \texttt{watching}
\]
原文地址:https://www.cnblogs.com/cjtcalc/p/12283171.html