我正在尝试使用不知情的搜索策略来解决AI中的问题。这是问题所在,非常感谢您的建议。
目的是找到具有凸多边形障碍物的平面上的2个点之间的最短路径。假设状态空间由(x,y)平面中的所有位置组成,那里有多少个状态?目标有多少条路径?
我相信有x * y州,但我不确定目标有多少路径?
另外,我需要定义一个良好的状态空间,我也会对此提出建议,因为我不确定如何考虑解决方案。
更新1:Wrt为'一个好的状态空间' - 我必须解释为什么从一个多边形顶点到场景中任何其他顶点的最短路径必须由连接多边形的一些顶点的直线段组成,并且然后定义一个良好的状态空间,通知这个状态空间有多大。
谢谢!
答案 0 :(得分:0)
假设平面上的离散位置 - 即整数 - 那么就像你说的那样,在这个平面上存在x * y个位置。假设没有循环,不同路径的数量呈指数级增加,但不是无限的。例如,在最坏的情况下,如果开始状态为0,0且结束状态为w,h,并且表面上没有障碍物,那么您可以想象从头到尾构建最小生成树将包含所有路径。对于2x2平面,将有2条路径;对于2x3平面,将有4条路径,依此类推。如果允许循环,则可能会有无限数量的路径。
请注意,“障碍”对搜索算法来说并不是一个真正的问题。他们只是不能从邻国获得的位置。例如,A *不会生成“障碍”作为可达节点,因此不会将其添加到打开列表中。 (实际上,它也不会被添加到关闭列表中;它根本不是一个节点。)
我不确定“定义一个好的状态空间”是什么意思。你能说清楚吗?
编辑:如何为2x2平面最多获得2条路径?简单。首先,将开始和结束位置放在您想要的任何位置。它们要么彼此相邻,要么在对角。在它们彼此相邻的情况下,第一条路径是微不足道的。通过首先遍历所有其他正方形来获得第二路径。在相反的角落情况下,您通过使用其他方块之一作为第一步来获得一条路径,并使用剩余的空方块作为第一步来获得另一条路径。在任何一种情况下,如果您不允许循环,那么这些是唯一的路径。