前言
虽然大三的时候人工智能课上就讲过一字棋算法,可是当时偷了个懒糊弄过去了,没想到到了研一还是要写。
正文
博弈树,它是一种特殊的与或图。节点代表博弈的格局(即棋局),相当于状态空间中的状态,反映了博弈的信息。 与节点、或节点隔层交替出现。
假设博弈双方为:MAX和MIN
在博弈过程中,规则是双方轮流走步。在博弈树中,相当于博弈双方轮流扩展其所属节点:
从MIN方的角度来看:所有MIN方节点都是与节点
因为MIN方必定选择最不利于MAX方的方式来扩展节点,只要MIN方节点的子节点中有一个对MAX方不利,则该节点就对MAX方不利,故为“与节点”
从MAX方的角度来看:所有属于MAX方的节点都是“或节点”
因为扩展MAX方节点时,MAX方可选择扩展最有利于自己的节点,只要可扩展的子节点中有一个对已有利, 则该节点就对已有利
核心算法解析
|
|
代码
|
|
成果
后记
- 很遗憾还停留在命令行阶段,想实现界面的,最后没能成功。
- 写出来的电脑还是有点厉害的,如果让它先手,第一步总知道抢我中间5的位置,我就很被动。