Python编程:动态规划与常用库的应用
1. 动态规划基础
在编程中,我们常常会遇到需要重复计算的问题。例如,在递归计算中,某个值可能会被多次计算。像计算 V2 时,若采用递归技术,当 n 增大时,计算次数会急剧增加。计算 V20 时, V2 会被计算 4181 次;计算 V40 时, V2 会被计算 63245986 次。
为了解决这个问题,我们可以使用动态规划的方法。动态规划主要有两种方法:自底向上和自顶向下。
1.1 自底向上方法
自底向上的方法是先解决小问题,再逐步解决大问题。例如, virahanka2() 函数实现了这种方法。它通过填充一个表格( lookup )来存储所有小问题的解,当达到我们感兴趣的值时停止,然后读取并返回该值。这种方法的关键在于每个子问题只被解决一次。
1.2 自顶向下方法
自顶向下的方法是递归的,它避免了 virahanka1() 中的大量重复计算。在计算之前,它会检查是否已经存储了结果。如果没有,则递归计算结果并存储在表格中,最后返回存储的结果。例如, virahanka3() 函数就采用了这种方法。
1.3 记忆化(Memoization)
Python 中还可以使用装饰器 memoize 来实现记忆化。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



