哪些游戏具有相当简单的启发式方法来评估排名?

时间:2020-03-05 18:56:59  来源:igfitidea点击:

我正在教孩子编程,目前正在介绍一些基本的人工智能概念。首先,我们将实现一个井字游戏,该游戏可以搜索整个游戏树,因此可以完美播放。完成后,我想将相同的概念应用于具有太多位置无法评估每个位置的游戏,因此我们需要实施启发式方法来评估中间位置。

我能想到的最好的东西是"点和盒"。它的优点是我可以将板的大小设置为任意大,以阻止他搜索整棵树,并且我可以使一个非常基本的计分功能是我的箱数减去对手箱的数。不幸的是,这意味着在游戏开始的大部分时间里,每个位置的得分均等于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修剪
  • 移动订购
  • 佐布里斯特·哈希