书栈网 · BookStack 本次搜索耗时 0.172 秒,为您找到 4280 个相关结果.
  • 二:博弈算法的前世今生

    从深蓝说起 博弈算法 围棋难题 卷积神经网络 从深蓝说起 从计算机问世后,博弈算法从来就没有停止过改进的步伐。最早打败人类顶级棋手的AI就是深蓝。以下内容摘自百度百科: 深蓝是美国IBM公司生产的一台超级国际象棋电脑,重1270公斤,有32个大脑(微处理器),每秒钟可以计算2亿步。”深蓝”输入了一百多年来优秀棋手的对局两百多万局。1997年 ...
  • 一:前言

    为什么出第二版 教程大纲 我能学习到什么知识? 这个AI的棋力如何 关于编程语言的问题 这个项目是完全开源的 关于作者 言川 为什么出第二版 在 2016年2月的时候,我写了第一版的五子棋AI教程。当时是边写代码边写博客,因此出现了一些理解上有偏差的地方,以及文章中的代码片段和最终的代码有很多不一致的地方。经过两年多的时间,断断续续更新了好...
  • 6.1 类和对象概述

    6.1 类和对象概述 6.1.1 面向过程与面向对象 6.1.2 类和对象的概念 6.1 类和对象概述   面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。早期的计算机编程是面向过程的,解决的都是一些相对简单的问题。随着IT行业不断发展,计算机被用于解决越来越复杂的问题。通过面向对象的方式,将现实世界的事...
  • 三:极小化极大值搜索

    AI实现的基本思路-极大极小值搜索算法 极大极小值搜索 评估函数 着法生成 AI实现的基本思路-极大极小值搜索算法 从这一章开始我们讲算法,我会贴出关键的代码,因为完整的代码太长,所以强烈建议大家先 clone 下这个仓库,当讲到代码的时候也去对应的文件看看完整代码: https://github.com/lihongxun945/gobang ...
  • 五:启发式评估函数

    什么是启发式搜索 什么是启发式搜索 前面讲到了,AB搜索的效果很大程度上取决于子节点的排序。 还是前一章的那张图,上面可以看到在第二层中,第一个节点的值是3,第二个是6。因为3比较小,而这一层的最大值会被选中,所以第二个节点也需要完整计算所有孩子。如果3和6调换一下顺序,6在前,3在后。那么当第二个节点计算出第一个孩子5的时候就没有必要计算之后...
  • 1.5 练习

    1.5 练习 1.5 练习 1. 计算机的主要部件有哪些?工作机制是怎样的? 2. 什么是机器语言、汇编语言和高级编程语言? 3. 高级语言的编译和解释分别是怎样的过程? 4. 什么是计算? 5. 为什么计算机是通用的(即可以应用于各行各业)? 6. 算法和程序有何异同? 7. 计算思维建立在什么原则之上? 8. 请回顾你在玩扑克牌时,...
  • 四:Alpha Beta 剪枝算法

    剪枝是必须的 Alpha Beta 剪枝原理 代码实现 优化效果 剪枝是必须的 上一篇讲了极小化极大值搜索,其实单纯的极小化极大值搜索算法并没有实际意义。 可以做一个简单的计算,平均一步考虑 50 种可能性的话,思考到第四层,那么搜索的节点数就是 50^4 = 6250000 ,在我的酷睿I7的电脑上一秒钟能计算的节点不超过 5W 个,那么 6...
  • 七:Zobrist缓存

    Zobrist 算法 集成 Zobrist Zobrist 算法 Zobrist 是一个快速Hash算法,非常适合用在各种棋类游戏中(事实上也是在各种棋类游戏中有大量应用)。 我们前面讲了负极大值搜索,其实很多时候会有重复的搜索,比如这种: [ 7 , 7 ],[ 8 , 7 ],[ 7 , 6 ],[ 7 , 9 ] 其实它和下面这种的走...
  • 九:性能优化

    性能优化的重要性 评估函数的局部刷新 米子进攻路径优化 冲四延伸 其他一些技巧 性能优化的重要性 前面讲到的置换表其实就是最常见的一种性能优化方式。他不不会对棋力有负面影响(不会剪掉不该剪掉的分支),但是能提升运算速度从而达到提升棋力的作用。如果你把前面几章讲的技术都运用了,那么大约能实现 8 层深度的搜索,对战业余玩家会有很高的胜率。不过如果...
  • 八:算杀

    需要算杀吗? 克服水平线效应 需要算杀吗? 算杀其实是很多AI都带有的功能,简单的说,正常的搜索会搜索所有的可能性,而算杀只计算活三和冲四的节点,由于每一层的分支变得更少,因此算杀可以很容易实现较大的深度,一般都可以搜索到 12层以上。 在第一版教程中我是在叶节点算杀的,用的是 6 + 5 的方式,也就是正常搜索到6层,然后在叶节点进行5层的算杀...