如何为动态规划算法找到合适的公式

问题描述 投票:2回答:2

我正在阅读有关动态编程的文章。我读到要擅长于此,需要实践和直觉,但这种建议对我而言似乎是普遍的。对我而言,最难的部分是找出一个递归公式。有时,对我而言,解决方案中使用的公式似乎不太直观。例如,我阅读以下问题:

您有2个字符串S和T。给出一种算法来查找S出现在T中。并非所有S字符都必须在T中显示为连续。

这些解决方案基于以下递归公式,对我来说这根本不直观:

假设M(i,j)表示i个字符的次数S以T的j个字符出现。基本情况:i)如果j = 0,则为0ii)如果i = 0,则为1

我想知道是否存在某种对问题的“分析”,可以帮助定义/查找通过DP解决问题的正确递归公式?

algorithm dynamic-programming recurrence
2个回答
0
投票

在Wikipedia here上有很好的描述:“在数学,计算机科学和经济学中,动态编程是一种通过将复杂的问题分解为更简单的子问题来解决复杂问题的方法。它适用于表现出重叠子问题和最优子结构(如下所述)性质的问题。如果适用,该方法所花费的时间将比纯朴的方法少得多。“

也请阅读有关重叠子问题和最佳子结构的信息。


0
投票

也许此链接会有用:https://www.geeksforgeeks.org/solve-dynamic-programming-problem/https://www.geeksforgeeks.org/tabulation-vs-memoization/1.如何将问题分类为动态编程问题?2.确定状态3.建立国家之间的关系4.添加状态的备忘或列表

© www.soinside.com 2019 - 2024. All rights reserved.