在我看来,计算机围棋和象棋相比,主要难点在于没有一个好的评估函数(Evaluate function)。在国际象棋中,如果一方损失了大子,如后,或者子力没有及时展开,那么形势很可能就一边倒了。所以评估函数往往是各个子的加权平均,加上每个子可以攻击到位置,再加上一些修正项。有了评估函数,就大大简化了搜索。如果评估函数是100%精确的,只要进行一次max min的搜索找最大值就可以了。即使评估函数只是近似,也可以省去很多无用的搜索。但是在围棋中,据我所知,还没有一个令人满意的评估函数。在这种情况下,大家就提出用MC模拟来代替评估函数。但是问题又出现了,MC模拟的收敛速度是1/sqrt(N),走不能只模拟不搜索其他可能的棋步啊。这就是一个典型的Exploration vs Exploitation的问题。在Bandit问题中,UCT算法是相当不错的。当N(模拟次数)趋于无穷时,最好的分支和其他分支的模拟次数分别是N和LnN量级。MC和UCT的结合产生了MOGO的雏形。