zoukankan      html  css  js  c++  java
  • 浅谈棋类博弈

         就在今年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设计的算法肯定是非常的优秀。

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

  • 相关阅读:
    微信小程序-上传多张图片加进度条(支持预览、删除)
    php中120个内置函数
    angular6 NgModule中定义模块module
    Aliasing input/output properties
    angular6 Can't bind to 'zzst' since it isn't a known property of
    [转]DOM 中 Property 和 Attribute 的区别
    Angular6
    [转]VirtualBox 修改UUID实现虚拟硬盘复制
    pthread_create如何传递两个参数以上的参数
    linux 线程操作问题undefined reference to 'pthread_create'的解决办法(cmake)
  • 原文地址:https://www.cnblogs.com/yspworld/p/5665013.html
Copyright © 2011-2022 走看看