动态规划的一个思想:记住过去的付出,更好的为现在服务 我感觉我自己的性格属于递归的方式,也就是俗话说的狗熊掰棒子,我感觉动态规划算法和强化学习都带有着一丝给我们学习生活启迪的味道。按照动态规划的思路来看,人与计算机相比的一个问题是:人可以看成是RAM,而计算机是ROM,我们需要不断地刷新才能够(也就是不断地回顾我们整理的内容)才有可能达到计算机动态规划,我们还需要创建神经连接,知识网络,才能更清晰地理解这个世界!
(1) 动态规划和递归算法
# 利用动态规划,对过去的知识做记录 def Fibonacci(n): Memo = list() if(n<=0): return n for i in range(n+1): Memo.append(-1) return fib(n, Memo) def fib(n,Memo): if(Memo[n]!=-1): return Memo[n] if(n<=2): Memo[n]=1 else: Memo[n]=fib(n-1,Memo)+fib(n-2,Memo) return Memo[n] Fibonacci(6) # 递归,没使用动态规划,重蹈覆辙 def fib(n): if(n<=2): return 1 else: return fib(n-1)+fib(n-2) fib(6)(2) 两种算法调用子函数过程对比 从上图对比中可以明显看出,没使用动态规划的代码存在重蹈覆辙的情况