我是一个Java和编程的新手,但我已经在创建一个德州扑克游戏作为“练习和学习”的项目。
我知道游戏规则,但我不确定如何加入机器人或计算机玩家,让它们决定何时进入和退出,如何下注(包括全押),如果可能的话,甚至偶尔进行诈唬。
在这一点上,我的疑问是:我应该努力用“如果…那么…”来解释何时这样做,还是存在一个算法可以让机器人玩家这样做?
如果存在,那个算法是专门为扑克设计的,还是可以重用于任何游戏,让计算机“学习”编程中描述的规则,用于不同的规则甚至不同的游戏(例如适用于国际象棋或大富翁等)?
回答:
扑克的复杂性和状态空间并不大。因此,可以穷尽地搜索所有组合。实际上,你甚至可以通过一些算术计算出获得每张牌的概率。我建议你阅读麻省理工学院开放课程网站上的Kevin Desmond的扑克理论与分析,以了解更多信息。
你的想法正是决策树或随机森林的应用。它们是机器学习技术,可以构建人类可理解的规则树。
另一方面,也存在非人类可理解的机器学习。神经网络就是其中一种。对人类来说,这些模型是非直观的。它们主要用于难以表述的问题或具有极大状态空间的问题,例如,玩围棋(就像AlphaGo一样),识别图像中的所有对象,或者如何赢得星际争霸。