此博客是我对之前学习的minimax算法的个人总结,毕竟有一段时间没实际使用此算法了,需要巩固一下。除了我下文标注的引用以外其他内容都是原创的,如果需要转载请注明出处,谢谢。
基本算法思想
极小化极大(minimax)算法顾名思义,就是让最大得情况最小,这里的最大一般是指最差的情况,比如游戏中最不利的情况。
该算法需要满足零和博弈,初略的解释就是若有两个玩家进行游戏,如果其中一方得到利益那么另一方就会失去利益,游戏利益的总和为0(某些情况下为常数)。
因此,零和的约束条件也使得该算法在很多游戏中图体现出很好的效果,比如大多数的棋类游戏。
其实说白了,这个算法就是一个树形结构的递归算法,每个节点的孩子和父节点都是对方玩家,所有的节点被分为极大值(我方)节点和极小值(对方)节点
算法思想参考维基的伪代码:
function minimax(node, depth) if node is a terminal node or depth = 0 return the heuristic value of node if the adversary