Algorithm 哪种算法是合适的?

Algorithm 哪种算法是合适的?,algorithm,Algorithm,假设代理是一个在迷宫中物理移动的机器人。事实并非如此 知道迷宫的地图,但它能感觉到自己的方向,哪条路是敞开的 它知道出口在右下角。机器人想要到达地面 尽快退出。你会使用哪种算法 我的教授说,经过修改的深度优先搜索将是解决方案。这些修改将是:;记住我们搜索的内容,以避免无限循环,并为向右或向下移动提供更高的优先级 然而,我对DFS的理解是,它不是最优的,也不能保证找到解决方案。我知道A*会找到成本最低但速度不确定的路径 如果有帮助,网格是10x10。首先,如果存在解决方案,DFS会找到解决方案(假

假设代理是一个在迷宫中物理移动的机器人。事实并非如此 知道迷宫的地图,但它能感觉到自己的方向,哪条路是敞开的 它知道出口在右下角。机器人想要到达地面 尽快退出。你会使用哪种算法

我的教授说,经过修改的深度优先搜索将是解决方案。这些修改将是:;记住我们搜索的内容,以避免无限循环,并为向右或向下移动提供更高的优先级


然而,我对DFS的理解是,它不是最优的,也不能保证找到解决方案。我知道A*会找到成本最低但速度不确定的路径


如果有帮助,网格是10x10。

首先,如果存在解决方案,DFS会找到解决方案(假设它不在圆圈中运行,这是您的教授提出的)。你说这不能保证是错误的


其次,优先级方向本质上就是A*的含义——它扩展了最有可能通向解决方案的路径。

深度优先搜索,如果通过建议的修改正确实施,将找到您描述的问题的解决方案。您提到代理应该尽可能快地到达出口,这可能意味着使用最短路径。从这个意义上说,DFS不是最优的,因为它将返回到达出口的第一条路径。会找到最短的路径。A*及其变体是解决如您所述的路径查找问题的首选方法,并且已经在实时计算机游戏中使用了几十年

对于我来说,我将使用A*,并根据迷宫的特性调整适当的启发式函数。DFS、BFS和A*都会找到解决方案。但是,如果使用适当的启发式函数,A*将更快地找到解决方案。

但是,我对DFS的理解是,它不是最优的,并且不能保证找到解决方案。它保证它会为您找到一个解决方案,但它不是最优的。这块板足够小,可以容纳BFS。试试看。“但是,我对DFS的理解是,它不是最优的,也不能保证找到解决方案”-您的理解是错误的,或者至少是不完整的。你总是要为“最优”提供上下文。有多种解决方案吗?你想优化什么?DFS保证找到一个解决方案,前提是存在一个解决方案,并且图形中没有循环。“尽可能快地到达出口”-尽可能快的速度意味着什么,最短路径还是找到路径所需的最少计算量?宽度优先通过“跳跃”到下一个最有可能求解的节点,擅长找到最佳路径。机器人不能在迷宫中跳跃,因此除非他看到整个地图而不四处移动,否则他几乎只限于dfs解决方案——因此你的教授声称。记住,在现实世界中走动需要很多时间……从技术上讲,这听起来像是一个迷宫而不是迷宫。尽可能快包括找到路径,而不是找到最短的路径。这是真的,我指的是这样的措辞:“机器人想尽快到达出口”在现实世界中,这意味着最短(安全)的路径。谢谢你的改进。