今天我们来学习一下动态规划,以为这个概念比较抽象,所以我们将结合具体的案例进行讲解,废话不多说,我们开始吧! 😃
动态规划的概念:
多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故有“动态”的含义,称这种解决多阶段决策最优化问题的方法为动态规划方法
背包问题的案例讲解:
背包问题:你是一个小偷,你有一个可以装下4磅物品的袋子,现在有音响,笔记本电脑和吉他可以偷,怎样偷才可以偷最大价值的物品?
第一种方法:尝试各种商品的组合,找出价值最高的组合
1.吉他 1500 2.音响 3000 3.笔记本电脑 2000 4.吉他+笔记本电脑 3500
最后找到价值最大的组合是笔记本电脑+吉他,这样虽然可行,但是速度太慢了,运行时间为O(2的n次方)
第二种方法:动态规划
动态规划的工作原理就是先解决子问题,然后再逐步解决大问题每个动态规划都先从一个网格开始,以下是这个问题的网格,网格的各行为商品,各列为不同容量(1~4磅)的背包,每个列都需要,我们会在其中计算背包的价值
在每个单元格中,我们都得选择偷不偷该行的物品,每个单元格都要让背包中的商品的价值最大,填充每个单元格,直到填满就会找到最终的答案