我想知道与图形探索相关的优化问题: 假设我们有一个连通的加权图,每个顶点与其他顶点有1到4个连接。现在让我们说一些顶点包含巧克力,我们在两个不同的顶点放置该图形,两个学生都由两个AI控制,这两个AI可以访问巧克力的位置,另一个学生的位置和图形,并且在每个转弯处,它们都可以移动到连接的顶点(如果边缘的重量是K,则需要K移动)。最后,如果学生在含有巧克力的顶点上,他会吃掉它。 我的问题:人工智能的最佳算法是什么,以便学生控制的巧克力会比另一个更多?
谢谢。
答案 0 :(得分:1)
最好的方法可能是使用成本分析和启发式方法。
你的机器人有1-4个可以选择的选择,所以你应该考虑每一个。上升的好处是什么?费用是多少?如果您将值设为benefit - cost
,那么您应该选择最有价值的选项。
所以......无论如何,你甚至如何计算收益和成本?您已经概述了一些条件。 K
值是费用。是否有巧克力有一个好处。也许分析一下给定顶点附近的巧克力数量?
但是等等!你知道你的敌人的位置,你的敌人知道你的!如果你朝着一个给定的方向移动,它会影响他们的移动(如果他们聪明的话。)所以你必须向前看并分析你的敌人可能做你的回应。国际象棋解算器使用广度优先前瞻来计划通过这个精确系统的最佳移动。不幸的是,你的问题是无限的 - 没有真正的胜利条件。因此,您的机器人将无限期地向前看(或者,直到它耗尽内存,无论如何。)这是一个问题,因为计算需要时间。国际象棋解决者通过施加时间限制来解决这个问题。他们采取了他们在时间不足时发现的最佳举动。
现在,我已经为您提供了一个可以在其中工作的一般框架。你还需要组装它。制作启发式的一部分是权衡您的成本和收益。与获得巧克力的好处相比,K
的成本可能微不足道?也许不是吗?使用常数系数来衡量成本和收益。
至于找到通过网格的方式,我要查看Dijkstra's algorithm或A*移动。
哦,在我忘记之前,这里是关于graph traversal的维基百科文章。您可能会发现它很有用。