南开大学软件学院2021年秋季学期研究生算法课程(复习)贪心分治之贪心

贪心

二分查找

二分答案

二分不一定要在有序序列上进行,亦可是单调函数

砍木头

将n根长度不同木头砍成至少m段,要求砍完后每段木头的长度相等。问砍完后每段木头最长有多长?

  • 暴力搜索解优化问题?貌似没什么突破口
  • 优化转为判定问题?判断一个长度是否组成至少m段,很好判断,并且长度最小为1最大为木头最大长度L_{\max}
  • 暴力枚举长度吗?不必,随着每段长度增加,段数减少,变成找满足条件的最大值,故二分每段长度O(n \log L_{\max})

二分答案 

将一个复杂的优化问题转化成一个可行性判定问题,本质是枚举答案判定可行,不过可行性存在单调性,可二分

若价值函数不再是单调的,而是上凸函数,能否快速找到最大值?

三分搜索(爬山法)

求一维上凸函数f(x)\left [ l,r \right ]的最大值

  • (l,r)区间的三等分点x_lx_r
    • x_l=l+\frac{1}{3}(r-l)
    • x_r=r-\frac{1}{3}(r-l)
  • f(x_l)<f(x_r):l^{'}=x_l,r^{'}=r
  • f(x_l)>f(x_r):l^{'}=l,r^{'}=x_r

黄金分割比法(0.618搜索)

一维搜索(线搜索)

  • 黄金分割比法 无需求导,只需要函数值
  • 割线法 需要一阶导数,快速收敛
  • 牛顿法 需要二阶导数,更快收敛

最速下降法 沿梯度方向线搜索

贪心算法小结

  • 难点:不计算所有子问题解的情况下,判断最优解在哪个子问题
  • 特点:时间复杂度通常非常低,但正确性最难保障
  • 思维特点:
    • 子问题规模成倍缩小,且最优解可不算即知在哪个子问题
    • 优化问题向判定问题转换​​​​​​​是关键技巧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值