人机博弈之(一)------博弈介绍
爱好编程的大部分还是喜欢自己编写一个游戏,但较少是编写和电脑对战的游戏,因为里面毕竟涉及博弈,搜索等技术,我想来通编写一个人机博弈的中国象棋游戏,希望从中收获些东西。参考书是王小春编著的一本《PC游戏编程-人机博弈》。应该说里面很多思想都是来自这本书上的,虽然思想不是源自我自己,但是可以通过自己亲手从头到尾把这个游戏编写出来,主要体会里面搜索技术和估值核心。
1. 人机博弈的要点
人机对弈的程序,至少应具备一下几个部分:
a 某种在机器上表示棋局的方法,让程序知道博弈的状态;
b 产生合法的走法规则,是得博弈双方公正,并可以判断人类对手是否乱走;
c 从所有合法的走法中选择最佳的走法的技术
d 一种评估局面优劣的方法,同上面技术配合作出智能选择;
e 一个实现游戏的界面。
2.棋盘表示
棋盘表示就是用一种数据结构来描述棋盘和棋盘上的棋子,通常是用2维数组。一个典型的中国象棋棋盘是用一个9x10的二维数组表示。
3. 走法产生
博弈的规则哪些走法是合法的,例如对于中国象棋来说的马走日,象走田等一些规则。
4. 搜索技术
对于计算机来说,直接通过棋盘信息来判别走法的好坏并不精确。除了输赢这种局面可以可靠地判别外,
其他的判断只能大致估计。判别两种走法谁优谁劣的一个好方法就是察看棋局走下去的结果。也就是向
下搜索若干步,然后比较发展的结果。为了避免差错,也要假设对手的思考也和我们一样,也就是,我
们想到的内容,他也想到了。这是极大值和极小值算法的基本原则。此算法的复杂度是指数级别。所以
随着搜索深度的加大,时间开销会急剧增大。搜索技术的非常关键。
5. 估值
由于,现有的计算机的运算能力不可能一直搜索到分出胜负的那步,在有限搜索深度的末端,用一些静
态的方法,来估计局面的好坏。所以这里要设计一个好的估值函数。
人机博弈之(一)------博弈介绍相关推荐
- 博弈论总结 必胜点 SG函数 巴什博弈 尼姆博弈
摘要 主要算法思想,应用领域,近年来的出题情况 博弈是信息学和数学试题中常会出现的一种类型,算法灵活多变是其最大特点,而其中有一类试题更是完全无法用常见的博弈树来进行解答. 寻找必败态即为针对此类试题 ...
- UR机器人装箱姿态_关于人机协作机器人UR的介绍
原标题:关于人机协作机器人UR的介绍 在这几年,各大工业机器人制造商,目前都热衷与人机协作,ABB的"玉米",FANUC的"绿手臂",KUKA的"伊娃 ...
- ferguson博弈_组合博弈游戏
² 组合博弈游戏的概念和特点 ² 组合博弈游戏应满足以下性质: ² 1. 有两个游戏者. ² 2. 有一个可能的游戏状态集.这个状态集通常是有限的. ² 3. 游戏规则指定了在任何状态下双方的可能的走 ...
- 1.3 博弈结构和博弈的分类
1.3.1 博弈中的博弈方 博弈方:独立决策.独立承担博弈结果的个人或组织 博弈规则面前博弈方之间平等,不因博弈方之间权利.地位的差异而改变 博弈方数量对博弈结果和分析有影响 根据博弈方数量分单人博弈 ...
- 首都师范 博弈论 6 3 1子博弈与子博弈完美均衡的概念
6 3 1子博弈与子博弈完美均衡的概念
- 人机混合智能在博弈领域的发展
[编者按:博弈向来是人机环境系统的智能,而不仅仅是人的智能,或许,西方的博弈论里存在着很大的缺陷] ----------------------------------- 博弈论又被称为对策论(Gam ...
- C语言实现在15*15的大棋盘中下五子棋(支持人机博弈,人人博弈)
目录 最终效果展示 一:test.c 1.main函数 2.menu函数 3.game函数 4.game_plus函数 5.完整代码 二:game.c 1. Initboard函数(初始化棋盘) 2. ...
- 五子棋人机对弈代码——之博弈树算法
#include<iostream.h> #include<stdlib.h> #include<string.h> #include<time.h> ...
- 博弈——威佐夫博弈(hdu1527,2177)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1527 题目描述: 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不 ...
- 组合博弈 -- 三大基本博弈
转自:http://blog.csdn.net/luomingjun12315/article/details/45479073 我国民间有个古老的游戏:就是有物品若干堆,(物品可以是火柴,围棋都可以 ...
最新文章
- Java黑皮书课后题第5章:**5.33(完全数)如果一个正整数等于除它它本身外其他所有除数之和。就称之为完全数。如6是第一个完全数,因为6=1+2+3。10000以下的完全数有4个,编写程序找出
- 第一次失效_神兵小将:净化之力失效地魔兵兽,全靠特殊办法,铁心方式真霸气...
- qemu+linux+x86+64,kvm 内部错误:无法找到适合 x86_64 的模拟器
- cmd小游戏_使用pygame制作Flappy bird小游戏
- uniapp 移动端上传文件_基于 uniapp 实现动态路由和动态 Tabbar
- iframe高度自适应 1
- 计算机网络第五次笔记
- How to use neural network to realize logic 'and' and 'or'?
- Springboot项目jar包部署Linux
- 关于特效表现与资源优化
- 数学建模——人口预测模型
- cfd计算机模拟,CFD软件数值模拟分析(中联智泵)
- 三星手机PIN码忘记锁机解决方法
- gitLab 修改文件夹名称
- [教学]基于crnn的中文汉字识别_pyqt界面交互界面python含代码
- excel制作随着日期的改变而变化的动态日历
- 网络口碑营销从“可以做”、“值得做”到了“必须做好”的阶段!
- MySQL Error 1114
- PhpStorm 正则 小写变大写
- 加州大学欧文计算机排名,2019加州大学欧文分校排名(USNews排名)
热门文章
- Berkeley DB Java Edition Installation Notes(BDB JE安装教程)
- 分享两个CAD模型网站
- P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]
- boss直聘zp_stoken逆向分析源码放送
- Selenium Chrome 查看网络请求
- [附源码]java毕业设计校园闲置物品交易
- linux dns中文域名,中国互联网协会-中文域名的使用:DNS服务器配置
- 开发项目时mysql常用语句_项目开发中常用到的SQL语句
- 华为云 服务器修改端口,【华为云服务之】修改华为云ECS服务器安全组
- 重庆微企获5000万元风投-平板电脑和手机菜单系统-家庭智能信息终端