想要了解动态编程的人的一个简单示例[关闭]
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
【讨论】:
以上是关于想要了解动态编程的人的一个简单示例[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
现在有一个Linux服务器 我希望能够记录每一个通过网络访问该服务器的人的ip和访问的细节