日期:2014-05-20  浏览次数:20679 次

关于AI的小问题
char[][]   matrix   =   {
{ '# ', '# ', '# ', '# ', '# ', '# ', '# ', '# ', 'E ', '# ',},
{ '# ', '. ', '# ', '. ', '# ', '# ', '. ', '# ', '. ', '# ',},
{ '# ', '. ', '# ', '. ', '# ', '# ', '. ', '# ', '. ', '# ',},
{ '# ', '. ', '# ', '. ', '. ', '. ', '. ', '. ', '. ', '# ',},
{ '# ', '. ', '. ', '. ', '. ', '# ', '. ', '# ', '# ', '# ',},
{ '# ', '. ', '# ', '# ', '. ', '# ', '. ', '# ', '# ', '# ',},
{ '# ', '. ', '# ', '# ', '. ', '. ', '. ', '. ', '. ', '# ',},
{ '# ', '. ', '# ', '# ', '. ', '# ', '# ', '# ', '. ', '# ',},
{ '# ', '. ', '. ', '. ', '. ', '. ', '. ', '. ', '. ', '# ',},
{ '# ', '# ', '# ', '# ', 'S ', '. ', '# ', '# ', '. ', '# ',},
{ '# ', '# ', '# ', '# ', '# ', '# ', '# ', '# ', '# ', '# ',},};

假设一个人PERSON在上述矩阵迷宫中,要从S处出发到达E,其中, "# "表示墙,不可以通过, ". "表示道路可以通过,怎么样可以模拟PERSON从S寻找出口E的过程,PERSON主要是需要能具有判断道路的简单AI,请问如何JAVA实现。(特别注意,不是寻找最短,或最优路径)。谢谢,望指教。


------解决方案--------------------
沿着墙走
往下不行(比如是#)就往右,往右不行就往上,如此类推
次序
下右上左
这样就可以找到了
------解决方案--------------------
网上搜一下A*寻路算法,我记得好像有java版本的在网上
------解决方案--------------------
回溯算法就可以把?找本数据结构看就知道了
------解决方案--------------------
出口E的坐标为(0,9)出发点S的坐标为(9,4),那么我们要将S的坐标从9变为0,4变为9。首先对S的9进行自减工作即往上走,如遇到#,则对4进行自加,即往右走。如果两个都走不通,则往下走,下不通则往左,在往下或左行走的过程中,要将上一步的坐标的地点设置为#,即不可以再往回走,以免出现反复走的情况。