【问题标题】:Dynamic Programming recursive formula动态规划递归公式
【发布时间】:2012-07-10 10:44:12
【问题描述】:

我正在尝试阅读一些动态编程的笔记和示例,但我很难弄清楚它们是如何工作的。我将发布问题,然后是我遇到的困难:

给定一系列点 p1= (x1,y1),...,pn=(xn,yn) 从左到右排序(即 x1

我认为子问题应该这样划分:

C[i,j] = 从 p1 到 pi 的多边形链,有 j 条边,最小化垂直距离的总和。

然后答案是:C[n,k]

基本情况:C[i,0] = 0

现在我在想出递归公式时遇到了一些困难。我的第一个问题,我是否正确分解了子问题?这个问题给出了一个暗示,让我看起来像我这样做了,但我不是 100% 确定。如果我是,关于如何继续推导递归公式的任何提示?

感谢大家的帮助。

【问题讨论】:

    标签: algorithm dynamic-programming


    【解决方案1】:

    您的子问题是正确的,但我认为对公式稍作改动可以帮助您得出公式:

    C(i, j) 不是指从 1 到 i 的任何链,具有 j 条边,而是专门表示“以 i 结尾的链”。然后,要确定C(i, j) 的答案,您只需尝试所有可能的最后一条边的开始位置。

    那么答案可能是所有C(i, k)中的最佳答案。

    【讨论】:

      猜你喜欢
      • 2021-06-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 2013-11-14
      • 2011-11-09
      相关资源
      最近更新 更多