【问题标题】:Algorithm for 'shortest path' with walking agent具有步行代理的“最短路径”算法
【发布时间】:2020-07-04 03:13:28
【问题描述】:

我正在寻找一种最短路径算法,其中代理(必须从头到尾移动的东西)在可步行场上只有有限的视野。假设我们有一个迷宫,其起点和目标都是基于图块的。像这样的东西: 然后代理可能在每个方向(上、下、左、右)上只能看到一个,但具有无限记忆。作为衡量标准,我希望尽可能少的步骤达到目标。 有算法吗?

如果是这样,是否有解决更普遍问题的算法。假设:一个图、多个目标和起点以及一个返回可见节点的函数,以及有限的内存?

使用全视星的解决方案:

【问题讨论】:

    标签: algorithm path-finding


    【解决方案1】:

    一段时间后,我想到了一些想法和相似之处。

    接近Micromouse必须解决大多数使用Flood Fill的问题

    Flood-fill (node, target-color, replacement-color):
     1. If target-color is equal to replacement-color, return.
     2. ElseIf the color of node is not equal to target-color, return.
     3. Else Set the color of node to replacement-color.
     4. Perform Flood-fill (one step to the south of node, target-color, replacement-color).
        Perform Flood-fill (one step to the north of node, target-color, replacement-color).
        Perform Flood-fill (one step to the west of node, target-color, replacement-color).
        Perform Flood-fill (one step to the east of node, target-color, replacement-color).
     5. Return.
    

    【讨论】:

      【解决方案2】:

      由于能见度有限,您无法真正期望找到最短路径,因为您要么可以看到通往目标的路径,要么看不到,除非您有幸看到多条路径。

      但是,您可以使用启发式方法来改进您的搜索。例如,您需要探索未探索的图块,优先考虑目标周围的图块,从最接近的图块开始。能见度只有 1,基本上是盲人,但如果能见度稍高,则可以优先围绕目标进行探索,直到找到一条与您已经探索过的事物相连的路径。

      这让我想起了双向路径追踪,这是一种渲染技术,您可以追踪来自相机和灯光的路径,直到它们连接。 http://www.pbr-book.org/3ed-2018/Light_Transport_III_Bidirectional_Methods/Bidirectional_Path_Tracing.html

      【讨论】:

      • 当然,您可以找到最短路径,正如我所展示的。但是你找不到最小的步骤,是的,至少不是一般的。我们仍然可以使用en.wikipedia.org/wiki/Big_O_notation O 表示法来查看哪种算法性能更好。另外,我认为您建议的基本上是A-Star?我认为这确实有帮助,但它并不能解决您必须计算需要多少步的问题。最后到您的链接:也许我错过了一些东西,但这不是关于双向群算法的吗?我看不出这有什么帮助?
      • 除非您完全了解迷宫,否则您无法知道自己拥有最短路径。对于双向的东西,基本上您正在寻找一条将目标连接到您当前可以看到的任何路径的路径,因此您可以优先考虑从最后开始,或者您现在所在的位置。
      • 你错了,我不必只看到可以提供更短路径的部分。因此,A* 需要一个适当的启发式方法,即这种迷宫的汉密尔顿距离。找到的第一条路径也将是最短的路径。仔细看看这个en.wikipedia.org/wiki/A*_search_algorithm。你不能轻易做到的是用最少的步骤找到路径。反正这就是我要找的。​​span>
      • 我明白了,如果你能看到它周围的所有部分,那么你证明最短路径是对的。
      • 你不能指望找到最短路径简单的广度优先路径搜索可以在不完全了解迷宫的情况下找到最短路径。 A* 这样做更有效。
      【解决方案3】:

      一个非常简单的替代方法是:

      walk to an undiscovered tile using a star
      if it is the goal stop
      if not repeat
      if there aren't any undiscovered tiles stop and fail
      

      【讨论】:

        【解决方案4】:

        基本上 A* 仍然可以工作,但您需要找到一个新的启发式方法,我建议您包括图块之间的旅行时间。

        【讨论】:

        • 您应该更详细地解释您的答案,因为不清楚阅读此答案的人如何知道如何应用它来解决问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-02
        相关资源
        最近更新 更多