• 浅谈棋类博弈


         就在今年3月AlphaGo战胜围棋九段选手李世石,这引起了人们的高度关注。记得在第一场比赛的那天我的朋友还是相信李世石不会输,而我则相信机器会赢,最终以4:1的总分AlphaGo获胜。

        

         计算机在博弈方面战胜人类已经不是第一次了,最早可追溯到上世纪深蓝战胜当时的国际象棋冠军加里.卡斯帕罗夫。但到了21世纪的今天计算机才在围棋上战胜人类的顶尖高手。

    那么围棋的到底有多复杂,在那些业外人士看来也许并不足够震动全世界,毕竟在生活司空见惯了各种棋牌游戏,在他们看来似乎围棋并没有想象的那么复杂,好像战胜人类也并不是什么大事。接下来就来简单的谈一下计算机博弈这个问题。

          大部分的博弈基本上是运用搜索的方法,不过博弈是有对手存在的,针对自己走的一步棋,对方走一步,然后自己在走一步棋。就这样反反复复的制作搜索树。这其中组合的方式非常多,在某些情况下多到惊人,可能会很难搜索到尽头。

         博弈的组合数到底有多大?黑白棋(外国一般叫奥赛罗棋)棋局是8*8的格局,棋子分为黑白两色,它的组合数大约有10的60次方种,也就是最长有60位数左右。国际象棋也是8*8的棋局,但棋子的种类多一点,双方各有6种,它的组合方式大约有10的120次方种。将棋是9*9的棋局,双方各有8种棋子,组合方式大概有10的220次方种。围棋是19*19的棋局,分为黑白两色,总的组合方式大约有10的360次方种。对于如此庞大的组合数目,一个不漏的一直搜索到最后是无法做到的。于是,人类给计算机设计了一种方法,即对棋局进行打分,然后以使这个分数得到提高为目的,去搜索下一步棋的走法。这是博弈人工智能的基本设计思路。当然,对于AlphaGo设计的算法肯定是非常的优秀。

          确实,计算机一般在开局初期不容易占据优势,开局时的组合还真是无穷无尽,刚开局时棋局的棋子少,走步数量大,计算机对整个棋局的把握不好,所以在开局时的表现和人类还是存在差距吧。但随着博弈的进行,棋盘上棋子的位置逐渐固定,计算机对整盘棋的把握越来越大,胜算也就越来越大。在某些棋类博弈中,中盘是获胜的关键,显然,优秀的算法能让计算机可能比我们人类更能下好中盘的棋。

  • 相关阅读:
    联合主键SQL 联合索引
    SQL 对decimal类型转换为int类型
    SQL获取当前时间月份为两位数
    SQL 对结果集进行分组排序过滤重复数据 ROW_NUMBER
    SQL自动流水号函数
    SQL 索引创建
    .Net三层架构
    2016年你应该学习的语言和框架(转)
    MongoDB学习笔记(转)
    干货分享:让你分分钟学会 javascript 闭包(转)
  • 原文地址:https://www.cnblogs.com/yspworld/p/5665013.html
Copyright © 2020-2023  润新知