【发布时间】:2012-02-27 19:48:45
【问题描述】:
我过去研究过经典的 DP 问题和算法(硬币、最长递增子序列、最长公共子序列等)。
我知道这些算法有实际应用(例如遗传算法,仅举一个例子)。但我的疑问是,这些算法是否在现代计算机科学中具有实际应用,在现代计算机科学中,输入的规模非常大,并且仅在一台机器上无法解决问题。
我的观点是,这些算法很难并行化(即Parallel Dynamic Programming),而且在大多数公式中内存占用是二次方的,因此很难处理相当大的输入。
有人有这方面的真实用例吗?
【问题讨论】:
-
内存占用是二次方的,但节省的时间值得每个字节。编写基于递归关系计算斐波那契数列的程序的 2 个实现,一个有缓存,另一个没有。配置文件,并查看结果。
-
@UmNyobe:fibonachi 不是一个很好的例子,它可以在
O(1)中解决:) [当然我同意你的观点]。 -
这就是为什么我说基于递归关系。我以斐波那契为例,因为它可以在 30 分钟内完成。
-
Fibonacci 使用的是记忆,而不是 DP。我同意这是相关的。
-
LCS 可以使用线性空间求解。我认为,通过在 LCS 上设置一个最大界限,时间也可以降低到线性。
标签: algorithm dynamic-programming