【问题标题】:Finding path in Minimum Cost Path algo using Dynamic Programming使用动态规划在最小成本路径算法中寻找路径
【发布时间】:2013-12-22 10:33:45
【问题描述】:
  • 给定一个成本矩阵 cost[][] 和一个在 cost[][] 中的位置 (m, n),写 返回到达 (m, n) 的最小成本路径成本的函数 来自 (0, 0)。

  • 矩阵的每个单元格代表遍历该单元格的成本 细胞。到达 (m, n) 路径的总成本是所有成本的总和 该路径(包括源和目标)。

  • 您只能从 给定单元格,即来自给定单元格 (i, j), 单元格 (i+1, j), (i, j+1) 和 (i+1, j+1) 可以遍历。

  • 您可以假设所有成本都是正整数。

我找到了最低费用,这篇文章非常有帮助:

http://www.geeksforgeeks.org/dynamic-programming-set-6-min-cost-path/


(来源:cloudfront.net

但它并没有说明必须遵循的实际路径,在上面的示例中是 (0, 0) –> (0, 1) –> (1, 2) –> (2, 2) . 如何找到路径?

【问题讨论】:

  • 只需跟踪哪个单元格是父单元格...
  • 你可以接受正确答案;说明问题已解决。

标签: dynamic path shortest-path


【解决方案1】:

当您搜索路径时,还要跟踪您正在做出的决定,即当您选择此语句中的最小值时(取自您引用的文章):

return cost[m][n] + min( minCost(cost, m-1, n-1),
                           minCost(cost, m-1, n),
                           minCost(cost, m, n-1) );

您还需要跟踪哪个元素是最小值(例如,在具有方向(左、上、左上)的单独矩阵中)。然后你可以从矩阵的最后一个元素回溯并重建路径。

这基本上是带有回溯的 Levenshtein 距离,您可以找到一个伪代码实现,例如here

【讨论】:

  • min( minCost(cost, m-1, n-1), minCost(cost, m-1, n), minCost(cost, m, n-1) ); 使用上面的公式,我会找到许多最小元素(每三个中的一个),但这并不意味着它们都将成为最终路径的一部分。你能分享一些你的方法的伪代码吗?
【解决方案2】:

当我们在 logest common subsequence problem 中使用辅助数组使用箭头来跟踪时,类似地,在这里我们可以跟踪哪个元素返回了最小值。然后根据您存储的箭头从单元格 (m,n) 回溯开始。

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
  • @StarsSky 如果我没有弄错的话,这确实提供了一个答案。这是我的解决方案:ideone.com/i3AtVG
猜你喜欢
  • 1970-01-01
  • 2020-10-03
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
  • 2011-07-19
相关资源
最近更新 更多