Artificial intelligence A*罐';在AI游戏中找不到路径

Artificial intelligence A*罐';在AI游戏中找不到路径,artificial-intelligence,a-star,Artificial Intelligence,A Star,我想问一个作业问题。我知道有些人在回答这类问题时犹豫不决,但相信我,我在这项作业上花了很多时间,并尽了我所能。所以如果可以的话,请帮忙 问题是网格格式的类似流氓的AI游戏,其中一个测试用例是如下所示的地图: ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~ g** d *~~ ~~ ** * * ~~ ~~ ** *** ~~ ~~ ** d ~~ ~~ ** < ~~ ~~~~~~~~~~~~~~~~ ~~~~~~~

我想问一个作业问题。我知道有些人在回答这类问题时犹豫不决,但相信我,我在这项作业上花了很多时间,并尽了我所能。所以如果可以的话,请帮忙

问题是网格格式的类似流氓的AI游戏,其中一个测试用例是如下所示的地图:

~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
~~   g**   d *~~
~~   ** *   * ~~
~~   **  ***  ~~
~~   **  d    ~~
~~   **    <  ~~
~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
B


有人能解释一下吗?,,谢谢…

这不仅仅是一个寻路问题,但听起来你只是想用*来寻路。这就是它失败的原因

您的A*搜索空间需要包括状态更改,包括拾取炸药和在墙上使用炸药(这会更改地图的连接性)。换句话说,您需要搜索由所有可能的代理操作生成的游戏状态空间,而不仅仅是代理移动

再详细说明一下:a*使用的游戏状态应该是当前地图、所有对象(包括代理)的位置以及代理的炸药库存。状态更改可能包括代理移动和(如果代理有炸药)炸毁代理可能旁边的任何墙段。后一种行动将导致继承国拥有不同的地图(以及更少的炸药)


通过在每个状态中只存储由于使用dynamite而导致的地图更改,而不是整个地图的副本,您可能会对节省空间(并使状态生成更高效)产生幻想。根据您表示地图的方式,这可能非常简单,只需存储表示爆炸导致地图位置之间额外连接的附加边。

谢谢您的回复。你能详细说明一下如何在状态变化中包含炸药爆炸吗?我想我可以在每次拆除一堵墙后生成一张新地图,并递归搜索生成的所有地图…但这需要大量计算…@ozstudent-这是一个很大的搜索空间,但并不比实际发生的情况大,这就是重点。此外,在一个大的搜索空间中搜索是a*的全部内容。你不必做递归搜索;A*将只知道该部分搜索空间使用哪个映射。@ozstudent如果您最终遇到内存问题,请尝试IDA*。它比A*稍慢,因为您必须多次访问路径,但占用的内存要少得多。当然,我会查看IDA*。谢谢你的提示。
~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~
~g***       *** ~~
~***         d**~~
~**           *d~~
~*      ^      *~~
~**           **~~
~d**         **d~~
~ d**       **d ~~
~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~
~~                  ~~
~~     ^            ~~
~~    ***           ~~
~~   *****          ~~
~~  ***g***         ~~
~~  ********        ~~
~~   ***dd***       ~~
~~    *****d**      ~~
~~     ***d*d**     ~~
~~      ******d*    ~~
~~       ********   ~~
~~        ********  ~~
~~         d*d**d*  ~~
~~          **d**   ~~
~~           ***    ~~
~~            *     ~~
~~                  ~~
~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~