想要了解动态编程的人的一个简单示例[关闭]

Posted

技术标签:

【中文标题】想要了解动态编程的人的一个简单示例[关闭]【英文标题】:A simple example for someone who wants to understand Dynamic Programming [closed] 【发布时间】:2010-12-05 04:18:53 【问题描述】:

我正在为想要学习动态编程的人寻找一个易于理解的示例。 There are nice answers here about what is dynamic programming。斐波那契数列就是一个很好的例子,但它太小而无法触及表面。虽然我还没有上算法课,但它看起来是一个很好的学习主题,希望它在我春季的清单上。

【问题讨论】:

【参考方案1】:

查看此网站:Dynamic Programming Practice Problems

【讨论】:

看到麻省理工学院video.mit.edu/watch/…的这个讲座然后解决上面的问题,会帮助你理解为什么DP是有帮助的。 例如评论中的 youtube 链接已经损坏。新链接:youtube.com/watch?v=OQ5jsbhAv_M 查看这组视频,我发现它非常直观地涵盖了算法的自上而下和自下而上的方面:youtube.com/playlist?list=PLx-Ye3Zw0WL0O_IDmbcVHlKqJuGEfw3VG 看起来 MIT 将他们的内容从主页移到了 MIT OpenCourseWare 页面,所以提供的链接 @pg2286 无效。链接现在是19. Dynamic Programming I 完整播放列表Introduction to Algorithms 也可用【参考方案2】:

Here is a good tutorial 包含 29 个已解决的 DP 问题,并有很好的解释。

【讨论】:

【参考方案3】:
    Geeks for Geeks 有一个很棒的collection 动态编程问题。如果你正在准备面试,我觉得这一套是最好的。 如果您想要关于 DP 问题的小型教程视频,可以查看来自 MIT 的 this 问题集。

【讨论】:

【参考方案4】:

动态编程背后的想法是您正在缓存(记忆)子问题的解决方案,尽管我认为还有更多。

存在许多 Google Code Jam 问题,因此解决方案需要动态编程才能有效。例子:

Welcome to Code Jam (moderate)

Cheating a Boolean Tree (moderate)

PermRLE (hard)

请注意,每场 Code Jam 练习比赛都有一个“比赛分析”部分,如果您在尝试解决问题时遇到困难。

【讨论】:

感谢您的资源。时不时解决来自project euler的一两个问题,似乎真的被一些需要DP知识的问题卡住了。【参考方案5】:

计算 Levenshtein 距离是我用动态规划解决的第一个问题。我认为就复杂性而言,这是斐波那契数列的一个不错的下一步。

http://en.wikipedia.org/wiki/Levenshtein_distance

【讨论】:

以上是关于想要了解动态编程的人的一个简单示例[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

简单了解面向对象

如何通过javascript获取人的指纹[关闭]

Linux网络编程简单示例

现在有一个Linux服务器 我希望能够记录每一个通过网络访问该服务器的人的ip和访问的细节

Windows 和 Linux 上动态库的 C++ 标准 [关闭]

编辑文本缓冲区[关闭]