对不起,这可能是一个糟糕的问题,我正在尝试实现一个极小极大算法,我很困惑如何创建‘分数’。我是否需要建立一棵树,将所有可能的组合从一个状态一直到一个胜利的状态,还是只需要一个层,或者根本不需要?例如。
X 0 _ #1
0 0 _ #2
X X _ #3美国将是(X1),(X2),(X3)还是(X2,01,X3),(X1,02,X3),(X3),(X2,03,X1)?为了得分,我是否需要考虑深度因素,还是仅仅从这一深度来决定最大/分钟得分?
发布于 2016-12-03 17:07:19
我想你要问的是你是否必须遍历整棵树来评估一个位置。Minimax用于零和游戏,这意味着一方将获胜,另一方将输(或平局)。对于像Tac这样的游戏,很有可能遍历整个树,直到终端状态,并给出一个分数:
1为最大玩家赢得比赛-1为Min玩家赢得比赛0对于遍历所有可能的移动的整个树的游戏,在计算上过于昂贵(如国际象棋),您可以设置一个终端深度(例如,3或4层到树中)并返回该位置的得分。
我想你也是在问,评估是否需要考虑到深度。答案是否定的。
然后你可能会想,如果你不完全遍历树,你如何评估一个位置?
有不同的方法,最重要的是做一些高效的(为了更快地深入到树下)。对于国际象棋来说,有时仅仅计算材料(棋子)的优势就足以产生一个基本的最小评分系统。
请参阅国际象棋编程wiki以获得一些很好的解释:https://chessprogramming.wikispaces.com/Minimax
https://stackoverflow.com/questions/40825285
复制相似问题