算法3B----动态规划

算法3B

  • 分而治之,彼此有关联时,不太适用
  • 动态规划一定程度上可以解决彼此关联的子任务

fibonacci recursion

  • 斐波拉契数列
  • 任何一项都是前两项的和
  • 0 1 1 2 3 5 8 13
  • 输出到43项左右的时候,打印的速度变得很慢,并且越来越慢
  • 可以把递归过程中生成的实例画出来
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uJjm0hbk-1601321277522)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200929015212038.png)]
  • 会发现里面有很多的重复,尤其是递归基(绿色)种最底层的,重复的就更多了
  • O(fib(n)) = O(fai^n)
    • fai = 0.618
    • fai^5 约等于 10
    • fai^36 约等于 2^25
    • 10^3 约等于 2^10
    • 10^9 约等于 2^30 约等于 fai^43次方 (程序执行1秒钟的计算量)

fibonacci:memoization

  • 消除递归的算法
  • 记忆化
  • 尤其是递归的底层,是指数爆炸式增长的,通过记录,只需要去查询一下
  • 递归的简单形式
    • 递归基 if(n<1) return trivial(n)
    • 递归关系式 return fib(n-x)+fib(n-y)
  • 改进:在计算前判断一下结果是否有,没有的话才调用递归计算
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkXFTdIb-1601321277525)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200929020249250.png)]
    • 临时值保存在栈中,黄色部分不再向下递归
    • 灰色部分甚至都没有创建,

power:a^98765

  • a(9X104 + 8x10^3 + 7X10^2 + 6X10 + 5)

  • 基底

    • 10^4 10^3 10^2 10^1

SPU:shortest path upward

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kCVPdeRV-1601321277526)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200929021402771.png)]

  • 选择一个柜台依次结账出去

  • 每个柜台消耗的时间不一样

    • 选择的柜台只能有三个
    • 上,左上,右上
  • 最优的路可能有多条

  • d:delay w:wait,

  • k(i)

    • k-1(i-1)
    • k-1(i)
    • k-1(i+1)
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eKrddlZN-1601321277529)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200928203211532.png)]

  • d只走出这个柜台的时间

  • k代表第几层

  • w代表柜台收银员消耗的时间,自己消耗的时间

  • 致命的问题:会有大量的重复

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WARFRElB-1601321277531)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200928203556191.png)]
    • 每个重复3次
  • 每当把k行算完,利用数学归纳法,就可以算k+1行

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QNrpkI0i-1601321277532)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200928204205437.png)]
  • 计算流程

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCyegqCu-1601321277533)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200929022746195.png)]

LMP:Longest Manhattan Path

  • 不能绕路,每个点可以获得红包,求能捡到的红包总数

  • 只能向右或者向下

  • 倒过来思考,从终点,向左,向上行走

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SAMxoT2r-1601321277534)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200929023116723.png)]

LCS:Longest common subsequence

  • 同时是两个序列的子序列,称为公共子序列
  • 最长公共子序列可能不唯一

LCS:decrease and conquer

  • 如果末尾有相同字段,可以去掉这个字段,再去比较新的序列,也就是decrease and conquer

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vADIhTq5-1601321277535)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200929024248885.png)]

  • 如果最后的字符不等,可以将序列分成两个子任务执行

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H8tOOIVN-1601321277536)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200929024342319.png)]

LCS:DP

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XMJGR1IS-1601321277537)(C:\Users\liusiping\AppData\Roaming\Typora\typora-user-images\image-20200929025822952.png)]

背包问题

  • 选择价值越高、重量越轻的物品
  • 物品重量不要超过背包限制,同时价值最大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值