本节讲解关于动态编程的相关内容:
一,以斐波那契数列为例:
1.递归算法:
复杂度为2^n,指数级的复杂度。中间有重复调用fib(n-2)的过程,所以存在重叠子问题。
2.动态编程:
此处引入一个概念:memorization,第一次计算出中间值就存储至字典中,待需要用到的时候查询使用。
此种算法复杂度大大降低。
二.以0-1背包问题为例:
穷举法,基于深度优先,左边优先的决策树的算法,复杂度为2^n,指数级:
2.动态编程:加入memo。
本节讲解关于动态编程的相关内容:
一,以斐波那契数列为例:
1.递归算法:
复杂度为2^n,指数级的复杂度。中间有重复调用fib(n-2)的过程,所以存在重叠子问题。
2.动态编程:
此处引入一个概念:memorization,第一次计算出中间值就存储至字典中,待需要用到的时候查询使用。
此种算法复杂度大大降低。
二.以0-1背包问题为例:
穷举法,基于深度优先,左边优先的决策树的算法,复杂度为2^n,指数级:
2.动态编程:加入memo。