Artificial intelligence 用人工智能解决益智游戏
我做了一个拼图游戏,玩家将方块滑向球门——规则相当简单:Artificial intelligence 用人工智能解决益智游戏,artificial-intelligence,Artificial Intelligence,我做了一个拼图游戏,玩家将方块滑向球门——规则相当简单: 一次只能移动一个滑块 目标是将滑块块移动到目标节点中-您只需要填充目标节点,而不必将所有滑块块移动到目标节点中 如果滑块在冰上滑动,它将继续沿该方向移动,直到停止或移动 如果滑块碰到某个实体(混凝土,另一个块),它会停止并可以再次移动(显然不是移动到混凝土中) 如果滑块滑到木头上,它会停在木头上并可以移动 如果滑块滑到目标节点上,则无法再移动它 块可以通过某些块移动,例如,箭头块将块推向该方向 有开关块可启用“门”,可将其移动到以打开和关
我想写一个解决这些难题的人工智能解决方案——我想这将是某种深度优先搜索,但我不知道从哪里开始。任何让这一切发生的建议都将是一件伟大的事情 您的问题是状态空间搜索问题的经典实例。根据特定实例的特征,可以使用不同的算法 无论您的具体实例如何,您都需要定义四个组件:
如果我们考虑BFS策略,我们可以看到它是完整的,因为它通过层次系统地探索状态空间,只有当一个状态的深度增加时成本函数不减少(这是我们的情况下,因为所有的动作都有一个不变的代价),它才是最优的。现在坏消息来了:假设每个节点的扩展可以给出最多的状态,并且第一个解决方案是深度,那么您将需要存储和扩展最多的状态
在DFS的情况下,我们必须考虑到当不同的选择可能导致某个附近的解决方案时,它可以在一个路径中被卡住搜索很多时间(可能是无限的)。因此,当状态空间为无穷大时,该算法既不是完全的,也不是最优的。如果我们认为状态空间的最大深度,我们将得到最多的空间复杂度,而时间复杂度保持指数: 那么,我们能做些什么呢?我们可以将这两种策略混合使用。在此搜索中,我们将迭代运行DFS,将最大深度从0限制为最大深度级别。该方法具有两种搜索策略的优点:空间复杂度,其中是第一个最优解的深度,时间(我们做得再好不过了),它是完整的(它将找到一个解决方案,因为它会逐级迭代探索所有状态),它是最优的(假设代价函数不随路径长度递减)出于同样的原因,BFS是最优的
参考: 注意:显然存在其他未告知的策略,但正如书中所述,IDDFS对于未告知的搜索问题是一个很好的选择,因为您没有关于搜索空间的其他信息。参考本书了解其他类型的搜索策略,例如知情搜索,我们知道目标状态与当前状态之间的距离