【问题标题】:Is this optimal substructure equation correct?这个最优子结构方程正确吗?
【发布时间】:2020-03-17 22:30:31
【问题描述】:

给定一个由非负数填充的 m x n 网格,找到一条从右下角到左上角的路径,该路径最小化沿其路径的所有数字的总和。

我们从右下角或 (m,n) 开始,我们的目标是到达位置 (1,1) 或左上角。

我只是有点困惑,我不知道我是否正确地采用了自上而下的方法 最优子结构如下?

CostToMove(i,j) = Min(CostToMove(i-1,j), CostToMove (i, j+1)) + Cost(i,j)

【问题讨论】:

    标签: dynamic-programming


    【解决方案1】:

    你似乎有很好的方法。您需要解决一个小问题:CostToMove (i, j+1)。这里你要向右而不是向左,所以我猜你想说CostToMove (i, j-1)

    【讨论】:

    • 好的,谢谢,当我将上述方法转为迭代时,我应该执行以下操作: For(i=n to 1).....For (j=m to 1) 对吗?我的意思是 for 应该从 (m,n) 开始并转到 (1,1)
    • 不,恰恰相反。您的主要任务是找到 (m, n) 的成本,因此在迭代方法中,它是您计算的最后一个,您从 (1, 1) 开始。所以它将是for( i=1 to n).. for (j=1 to m)
    • 没有上面我说“我们从右下角或(m,n)开始,我们的目标是去位置(1,1)”..如果是这样的话,那么我们做For( i=n 到 1).....对于 (j=m 到 1) ?所以我问的是任务是否找到(1,1)的成本
    • 事实上,您正在计算决策的成本。您将做出的最简单的决定是在(1, 1),基本上您不会移动。那么例如在(2, 2),您将根据 (1, 2) 和 (2, 1) 中的成本决定是向上还是离开。所以他们需要事先计算。如果你反复重复这个过程,你会发现你计算的最后一个成本是(m,n),你开始的单元格
    • 嗯,好吧,我明白你的意思了,但两者似乎都是正确的。无论如何我会再想一想。无论如何,谢谢!
    猜你喜欢
    • 2014-03-30
    • 2013-04-13
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多