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