哪些游戏具有相当简单的启发式方法来评估排名?
我正在教孩子编程,目前正在介绍一些基本的人工智能概念。首先,我们将实现一个井字游戏,该游戏可以搜索整个游戏树,因此可以完美播放。完成后,我想将相同的概念应用于具有太多位置无法评估每个位置的游戏,因此我们需要实施启发式方法来评估中间位置。
我能想到的最好的东西是"点和盒"。它的优点是我可以将板的大小设置为任意大,以阻止他搜索整棵树,并且我可以使一个非常基本的计分功能是我的箱数减去对手箱的数。不幸的是,这意味着在游戏开始的大部分时间里,每个位置的得分均等于0,因为在玩家实际开始制造盒子之前,它需要花很多时间才能移动。
有没有人对游戏有更好的主意? (或者对点和框有更好的评分功能)?
解决方案
回答
黑白棋怎么样?它具有基于块数,边沿数和角点数的启发式空间。
回答
如何开始使用已添加随机线的"点和盒"游戏。这可以使我们迅速采取行动。只需确保我们没有用任何盒子开始游戏即可。
回答
另一个游戏选择可能是黑白棋,也就是黑白棋。
天真的启发式方法是简单地计算每次有效移动所获得的图块数量,然后选择最大的。从那里,我们可以考虑棋盘位置,并尽量减少对对手的伤害。
回答
看一下Go。
- 非常简单,适合很小的木板上的孩子。
- 复杂性无限扩展。
- 有很多可用的论文,算法和程序可以用作规模或者基础。
更新:提到了reversi,它是Go的简化版本。可能是更好的选择。
回答
我们可能会考虑的一款游戏是Connect四。具有简单规则的简单游戏,但比井字游戏更复杂。
回答
一条直线中的四个足够硬,但又足够容易以提供易于使用的评估功能,例如(距离我最长的直线的距离为四,而距离对手最长的直线的距离为四)
回答
曼卡拉(Mancala)呢?每回合只有6个可能的动作,并且很容易计算每个回合的得分,但是考虑对手的反应非常重要,并且游戏树很快就会变得很大。
回答
Gomoku是一款不错的简单游戏,也是一款有趣的AI编写游戏。
回答
跳棋会让我们教几种方法。简单地进行前瞻性研究,对最坏情况下的最佳决策进行深入搜索,短期收益和长期收益之间的差异,以及他们在学习了要教给他们的知识之后可以继续从事的工作。
我个人认为最后一点是最关键的-AI开发中有一些自然的要点,可以停下来,看看是否可以胜任,然后再深入研究更深的AI机制。它使学生保持兴趣而不会感到沮丧,并且如果他们想继续进行该项目,则可以让他们自己做更多的事情。
回答
Rubik的Infinity相当有趣,有点像Connect Four(连接四),但略有不同。取消职位很容易。
我组合了一个Perl脚本来播放它,实际上,不得不减少它看上去的前移次数,否则每次都会打败我,通常是用非常令人惊讶的策略。
回答
关于更好地启发点和盒,我建议查看游戏的在线策略指南。在Google上"点盒策略"的第一个结果是非常有帮助的。
知道如何使用连锁规则可以将一名好的球员与一名优秀的球员分开。知道连锁规则何时会对我们不利,这就是将最佳玩家与优秀玩家区分开来的原因。
回答
我真的很喜欢Connect Four。使用Minimax算法非常容易编程。良好的评估功能可能是:
eval_score = 0 for all possible rows/lines/diagonals of length 4 on the board: if (#player_pieces = 0) // possible to connect four here? if (#computer_pieces = 4) eval_score = 10000 break for loop else eval_score = eval_score + #computer_pieces (less pieces to go -> higher score) end if else if (#player_pieces = 4) eval_score = -10000 break for loop end if end for
要改善程序,我们可以添加:
- 如果计算机先移动,则在中间一栏播放(已被证明是最佳选择)
- Alpha-Beta修剪
- 移动订购
- 佐布里斯特·哈希