找到完成路径的最小步骤的算法

Posted

技术标签:

【中文标题】找到完成路径的最小步骤的算法【英文标题】:algorithm to find minimum steps to finish a path 【发布时间】:2019-04-14 02:35:59 【问题描述】:

问题是让玩家沿着路径移动 n 个方格,从第 1 个方格开始,每一步向前移动。在任何 点,你可以做三件事之一。

按白色按钮向前移动 2 个方格。如果 剩下不到 2 个方格,则此按钮终止 游戏,你就赢了。

按红色按钮向前移动 3 个方格。如果 剩下不到 3 个方格,则此按钮终止 游戏,你就赢了。

按绿色按钮向前移动 5 个方格。如果 剩下不到 5 个方格,则此按钮终止 游戏,你就赢了。

规则:每个方块都涂上蓝色和绿色。 如果玩家停在绿色方块上。他输了。

如何设计算法来查找:

    完成游戏所需的最少步骤

    需要按下按钮才能获胜。

【问题讨论】:

您遇到的具体问题是什么?你能展示一下你的尝试吗? 【参考方案1】:

您可以从头向后工作并应用动态规划算法:

从路径中的最后一个条目开始:

如果是蓝色: 如果在此之后的位置少于 5 个:将绿色移动(5 步)链接到该条目 另外检查路径中前面 2、3 和 5 的每个点(已处理):选择与它相关的最佳解决方案(最少移动)的点。使用相应的移动(2 = 白色,3 = ... 等)扩展(前置)该解决方案并将该信息存储在当前条目中。

对路径中的每个前面的条目重复此操作,每次存储从那里到获胜的最短路径的信息(如果它是蓝色的)

解决方案是存储在路径的第一个条目中的内容。当然,也有无法取胜的情况。

【讨论】:

以上是关于找到完成路径的最小步骤的算法的主要内容,如果未能解决你的问题,请参考以下文章

dijkstra算法 - 最短路径算法

如何找到成本最高的路径

最小生成树算法(未完成)

使用动态规划求mxn个格子,从左上角到右下角的最小路径,每次只能向右或向下移动

路径规划基于matlab Dijkstra算法多机器人路径规划含Matlab源码 1883期

路径规划基于matlab Dijkstra算法机器人编队路径规划含Matlab源码 1884期