漫画:动态规划相关内容

动态规划(Dynamic Programming),分阶段求解决策问题的数学思想。应用于编程、管理学、经济学、生物学等。【大事化小,小事化了】

【爬10层台阶案例】
最优子结构 F(10)=F(9)+F(8);
边界 F(1)=1、F(2)=2;
状态转移公式 F(n)=F(n-1)+F(n-2);

1、递归求解
漫画:动态规划相关内容
二叉树,高度N-1 节点个数接近2^(N-1) 时间复杂度近似O(2^N)
2、备忘录算法(暂存计算结果)
相同的参数被重复计算。用缓存解决,创建哈希表,每次把不同参数的计算结果存入哈希表,遇到相同参数时,直接从哈希表取出,避免重复计算。
漫画:动态规划相关内容
时间复杂度和空间复杂度为O(N)

3、优化空间复杂度(逆向思维,自底向上F(1)===>F(N))
漫画:动态规划相关内容
F(4)=F(3)+F(2)=5
F(5)=F(4)+F(3)=5+3=8
每次迭代过程中,只需要保留之前的2个状态。不需要像备忘录算法那样保留全部子状态。
动态规划求解
漫画:动态规划相关内容
时间复杂度O(N),空间复杂度为O(1)

漫画:什么是动态规划?(整合版)

漫画:有趣的扔鸡蛋问题

漫画:动态规划解决扔鸡蛋问题