SlideShare a Scribd company logo
1 of 32
人机对弈编程概述 赖勇浩 2005.12.28
抽象原理 初始状态 衍生状态 状态评估 作出决策 走法生成 搜索算法 棋盘表示
1) 棋盘表示 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
一 9*10的二维数组表示法 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],98 97 96 95 94 93 92 91 90 88 87 86 85 84 83 82 81 80 78 77 76 75 74 73 72 71 70 68 67 66 65 64 63 62 61 60 58 57 56 55 54 53 52 51 50 48 47 46 45 44 43 42 41 40 38 37 36 35 34 33 32 31 30 28 27 26 25 24 23 22 21 20 18 17 16 15 14 13 12 11 10 08 07 06 05 04 03 02 01 00
二 90的一维数组表示法 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
三 13*14的一维数组表示法 181 180 179 178 177 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
三 13*14的一维数组表示法 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
五 16*16的一维数组表示法
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
六 棋盘-棋子数组和位行位列 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
2) 走法生成 ,[object Object],[object Object],[object Object],[object Object]
3)  搜索算法 ,[object Object],[object Object],[object Object]
3.1 Min-Max ,[object Object]
3.1 Min-Max ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],    best = val;     }    }    return best;  }      int Min(int depth)  {    int best = INFINITY;   //  注意这里不同于 “ 最大 ” 算法     if (depth <= 0) {     return Evaluate();    }    GenerateLegalMoves();    while (MovesLeft()) {     MakeNextMove();     val = Max(depth - 1);     UnmakeMove();     if (val < best) {    //  注意这里不同于 “ 最大 ” 算法       best = val;     }    }    return best;  }
3.2 NegaMax ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3.3 Alpha-Beta ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],   if (val > alpha) {      alpha = val;     }    }    return alpha;  }
3.3 不得不说的问题 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3.4.1 Transposition Table ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3.4.2 Zobrist Hash ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3.4.2 Zobrist Hash ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3.5 Iterative Deepening ,[object Object]
3.6 Principal Variation Search ,[object Object],[object Object],[object Object],[object Object]
3.6 Principal Variation Search ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],   撤消着法   m;     if (score >= current) {      current = score;      bestmove = m;      if (score >= alpha) {       alpha = score;      }      if (score >= beta) {       break;      }     }    }    return current;  }
3.7 Null-Move Forward Pruning ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3.8 Null-Move Forward Pruning ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],   val = -AlphaBeta(depth - 1, -beta, -alpha);     UnmakeMove();     if (val >= beta) {     return beta;     }     if (val > alpha) {      alpha = val;     }    }    return alpha;  }
3.9 Quiescence Search ,[object Object],[object Object],[object Object],[object Object]
3.9 Quiescence Search ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],   if (score >= alpha) {      alpha = score;      if (score >= beta) {       break;      }     }  }    return score;  }
3.10 其它搜索算法 ,[object Object],[object Object],[object Object],[object Object]
3.11 我们可以做到怎么样? -75% Null-Move -25% Iterative Deepening -50% Transposition Table -10% PVS -35% 位行位列 效果 技术名称
4) 其它话题1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
4) 其它话题2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
结束语 ,[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot (20)

Ch12 教學
Ch12 教學Ch12 教學
Ch12 教學
 
Ch10 範例
Ch10 範例Ch10 範例
Ch10 範例
 
Ppt 1-50
Ppt 1-50Ppt 1-50
Ppt 1-50
 
資料結構-20個經典題型
資料結構-20個經典題型資料結構-20個經典題型
資料結構-20個經典題型
 
Ch6 教學
Ch6 教學Ch6 教學
Ch6 教學
 
Ch4 教學
Ch4 教學Ch4 教學
Ch4 教學
 
Ppt 167-173
Ppt 167-173Ppt 167-173
Ppt 167-173
 
02.第二章用Matlab求导
02.第二章用Matlab求导02.第二章用Matlab求导
02.第二章用Matlab求导
 
Ch5 教學
Ch5 教學Ch5 教學
Ch5 教學
 
Ch5 習題
Ch5 習題Ch5 習題
Ch5 習題
 
第三章 栈和队列
第三章 栈和队列第三章 栈和队列
第三章 栈和队列
 
10种排序简介
10种排序简介10种排序简介
10种排序简介
 
Ppt 26-50
Ppt 26-50Ppt 26-50
Ppt 26-50
 
Ch1 教學
Ch1 教學Ch1 教學
Ch1 教學
 
05.第五章用Matlab计算积分
05.第五章用Matlab计算积分05.第五章用Matlab计算积分
05.第五章用Matlab计算积分
 
Ch9 習題
Ch9 習題Ch9 習題
Ch9 習題
 
Ch3 教學
Ch3 教學Ch3 教學
Ch3 教學
 
Ch8 教學
Ch8 教學Ch8 教學
Ch8 教學
 
Num py basic(1) - v01
Num py   basic(1) - v01Num py   basic(1) - v01
Num py basic(1) - v01
 
Os讀書會20170609
Os讀書會20170609Os讀書會20170609
Os讀書會20170609
 

Viewers also liked

05 state machine
05 state machine05 state machine
05 state machineTianlu Wang
 
The State Machine Compiler
The State Machine CompilerThe State Machine Compiler
The State Machine CompilerFrançois Perrad
 
Trie树分享
Trie树分享Trie树分享
Trie树分享Wu Liang
 
Lec16 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Fi...
Lec16 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Fi...Lec16 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Fi...
Lec16 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Fi...Hsien-Hsin Sean Lee, Ph.D.
 
Clock-RSM: Low-Latency Inter-Datacenter State Machine Replication Using Loose...
Clock-RSM: Low-Latency Inter-Datacenter State Machine Replication Using Loose...Clock-RSM: Low-Latency Inter-Datacenter State Machine Replication Using Loose...
Clock-RSM: Low-Latency Inter-Datacenter State Machine Replication Using Loose...Jiaqing Du
 
State machine 應用簡介(兼談 UML 2)
State machine 應用簡介(兼談 UML 2)State machine 應用簡介(兼談 UML 2)
State machine 應用簡介(兼談 UML 2)William Yeh
 
FINITE STATE MACHINE AND CHOMSKY HIERARCHY
FINITE STATE MACHINE AND CHOMSKY HIERARCHYFINITE STATE MACHINE AND CHOMSKY HIERARCHY
FINITE STATE MACHINE AND CHOMSKY HIERARCHYnishimanglani
 
State Machine Diagram
State Machine DiagramState Machine Diagram
State Machine DiagramNiloy Rocker
 
Introduction state machine
Introduction state machineIntroduction state machine
Introduction state machineShreyans Pathak
 

Viewers also liked (9)

05 state machine
05 state machine05 state machine
05 state machine
 
The State Machine Compiler
The State Machine CompilerThe State Machine Compiler
The State Machine Compiler
 
Trie树分享
Trie树分享Trie树分享
Trie树分享
 
Lec16 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Fi...
Lec16 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Fi...Lec16 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Fi...
Lec16 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Fi...
 
Clock-RSM: Low-Latency Inter-Datacenter State Machine Replication Using Loose...
Clock-RSM: Low-Latency Inter-Datacenter State Machine Replication Using Loose...Clock-RSM: Low-Latency Inter-Datacenter State Machine Replication Using Loose...
Clock-RSM: Low-Latency Inter-Datacenter State Machine Replication Using Loose...
 
State machine 應用簡介(兼談 UML 2)
State machine 應用簡介(兼談 UML 2)State machine 應用簡介(兼談 UML 2)
State machine 應用簡介(兼談 UML 2)
 
FINITE STATE MACHINE AND CHOMSKY HIERARCHY
FINITE STATE MACHINE AND CHOMSKY HIERARCHYFINITE STATE MACHINE AND CHOMSKY HIERARCHY
FINITE STATE MACHINE AND CHOMSKY HIERARCHY
 
State Machine Diagram
State Machine DiagramState Machine Diagram
State Machine Diagram
 
Introduction state machine
Introduction state machineIntroduction state machine
Introduction state machine
 

Similar to 人机对弈编程概述

Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)JIANG MING-LI
 
从问题开始,谈前端架构
从问题开始,谈前端架构从问题开始,谈前端架构
从问题开始,谈前端架构裕波 周
 
Python learn guide
Python learn guidePython learn guide
Python learn guiderobin yang
 
C语言学习100例实例程序
C语言学习100例实例程序C语言学习100例实例程序
C语言学习100例实例程序yiditushe
 
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Derek Lee
 
搜索初步
搜索初步搜索初步
搜索初步AXM
 
training and sharing about clean code
training and sharing about clean codetraining and sharing about clean code
training and sharing about clean codeChonpin HSU
 
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍dennis zhuang
 
ncuma_數值積分法.pptx
ncuma_數值積分法.pptxncuma_數值積分法.pptx
ncuma_數值積分法.pptxNCU MCL
 
第1章 Matlab操作基础
第1章  Matlab操作基础第1章  Matlab操作基础
第1章 Matlab操作基础eterou
 
JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能Joseph Kuo
 
20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門岳華 杜
 
Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版Harvey Zhang
 

Similar to 人机对弈编程概述 (20)

Maintainable Javascript
Maintainable JavascriptMaintainable Javascript
Maintainable Javascript
 
Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)Scilab introduction(Scilab 介紹)
Scilab introduction(Scilab 介紹)
 
从问题开始,谈前端架构
从问题开始,谈前端架构从问题开始,谈前端架构
从问题开始,谈前端架构
 
Python learn guide
Python learn guidePython learn guide
Python learn guide
 
20200323 - AI Intro
20200323 - AI Intro20200323 - AI Intro
20200323 - AI Intro
 
C语言学习100例实例程序
C语言学习100例实例程序C语言学习100例实例程序
C语言学习100例实例程序
 
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18
 
浅析Flash特效开发 陈勇
浅析Flash特效开发 陈勇浅析Flash特效开发 陈勇
浅析Flash特效开发 陈勇
 
搜索初步
搜索初步搜索初步
搜索初步
 
Ppt 1-25
Ppt 1-25Ppt 1-25
Ppt 1-25
 
training and sharing about clean code
training and sharing about clean codetraining and sharing about clean code
training and sharing about clean code
 
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍
 
ncuma_數值積分法.pptx
ncuma_數值積分法.pptxncuma_數值積分法.pptx
ncuma_數值積分法.pptx
 
Ch1
Ch1Ch1
Ch1
 
第1章 Matlab操作基础
第1章  Matlab操作基础第1章  Matlab操作基础
第1章 Matlab操作基础
 
JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能
 
20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門20161209-Julia Taiwan first meetup-julia語言入門
20161209-Julia Taiwan first meetup-julia語言入門
 
Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版Swift编程语言入门教程 中文版
Swift编程语言入门教程 中文版
 
Scilab Chap1
Scilab Chap1Scilab Chap1
Scilab Chap1
 
Python 迴圈作業
Python 迴圈作業Python 迴圈作業
Python 迴圈作業
 

More from 勇浩 赖

论 Python 与设计模式。
论 Python 与设计模式。论 Python 与设计模式。
论 Python 与设计模式。勇浩 赖
 
一种多屏时代的通用 web 应用架构
一种多屏时代的通用 web 应用架构一种多屏时代的通用 web 应用架构
一种多屏时代的通用 web 应用架构勇浩 赖
 
2012,我的技术之选
2012,我的技术之选2012,我的技术之选
2012,我的技术之选勇浩 赖
 
页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式勇浩 赖
 
珠三角技术沙龙广州场
珠三角技术沙龙广州场珠三角技术沙龙广州场
珠三角技术沙龙广州场勇浩 赖
 
为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?勇浩 赖
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用勇浩 赖
 
Behavior+tree+ai lite
Behavior+tree+ai liteBehavior+tree+ai lite
Behavior+tree+ai lite勇浩 赖
 
敏捷网游架构与性能的新玩法
敏捷网游架构与性能的新玩法敏捷网游架构与性能的新玩法
敏捷网游架构与性能的新玩法勇浩 赖
 
先用再学 - 借助 Xna 快速开发游戏原型
先用再学  - 借助 Xna 快速开发游戏原型先用再学  - 借助 Xna 快速开发游戏原型
先用再学 - 借助 Xna 快速开发游戏原型勇浩 赖
 
关于Bitworld的一些话题222
关于Bitworld的一些话题222关于Bitworld的一些话题222
关于Bitworld的一些话题222勇浩 赖
 
03 -黄朝兴--腾讯游戏
03 -黄朝兴--腾讯游戏03 -黄朝兴--腾讯游戏
03 -黄朝兴--腾讯游戏勇浩 赖
 
06 -甄焱琨--知识转化为资源
06 -甄焱琨--知识转化为资源06 -甄焱琨--知识转化为资源
06 -甄焱琨--知识转化为资源勇浩 赖
 
07 -林伟铃--成长中的36氪
07 -林伟铃--成长中的36氪07 -林伟铃--成长中的36氪
07 -林伟铃--成长中的36氪勇浩 赖
 
01 -阿朱--简单事情夯实做
01 -阿朱--简单事情夯实做01 -阿朱--简单事情夯实做
01 -阿朱--简单事情夯实做勇浩 赖
 

More from 勇浩 赖 (20)

论 Python 与设计模式。
论 Python 与设计模式。论 Python 与设计模式。
论 Python 与设计模式。
 
一种多屏时代的通用 web 应用架构
一种多屏时代的通用 web 应用架构一种多屏时代的通用 web 应用架构
一种多屏时代的通用 web 应用架构
 
Tp web
Tp webTp web
Tp web
 
2012,我的技术之选
2012,我的技术之选2012,我的技术之选
2012,我的技术之选
 
页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式
 
Scala
ScalaScala
Scala
 
珠三角技术沙龙广州场
珠三角技术沙龙广州场珠三角技术沙龙广州场
珠三角技术沙龙广州场
 
为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?为什么 rust-lang 吸引我?
为什么 rust-lang 吸引我?
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用
 
Behavior+tree+ai lite
Behavior+tree+ai liteBehavior+tree+ai lite
Behavior+tree+ai lite
 
敏捷网游架构与性能的新玩法
敏捷网游架构与性能的新玩法敏捷网游架构与性能的新玩法
敏捷网游架构与性能的新玩法
 
先用再学 - 借助 Xna 快速开发游戏原型
先用再学  - 借助 Xna 快速开发游戏原型先用再学  - 借助 Xna 快速开发游戏原型
先用再学 - 借助 Xna 快速开发游戏原型
 
关于Bitworld的一些话题222
关于Bitworld的一些话题222关于Bitworld的一些话题222
关于Bitworld的一些话题222
 
Stekin
StekinStekin
Stekin
 
03 -黄朝兴--腾讯游戏
03 -黄朝兴--腾讯游戏03 -黄朝兴--腾讯游戏
03 -黄朝兴--腾讯游戏
 
abu.rpc intro
abu.rpc introabu.rpc intro
abu.rpc intro
 
06 -甄焱琨--知识转化为资源
06 -甄焱琨--知识转化为资源06 -甄焱琨--知识转化为资源
06 -甄焱琨--知识转化为资源
 
07 -林伟铃--成长中的36氪
07 -林伟铃--成长中的36氪07 -林伟铃--成长中的36氪
07 -林伟铃--成长中的36氪
 
01 -阿朱--简单事情夯实做
01 -阿朱--简单事情夯实做01 -阿朱--简单事情夯实做
01 -阿朱--简单事情夯实做
 
Python 温故
Python 温故Python 温故
Python 温故
 

人机对弈编程概述

  • 2. 抽象原理 初始状态 衍生状态 状态评估 作出决策 走法生成 搜索算法 棋盘表示
  • 3.
  • 4.
  • 5.
  • 6. 三 13*14的一维数组表示法 181 180 179 178 177 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
  • 7.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29. 3.11 我们可以做到怎么样? -75% Null-Move -25% Iterative Deepening -50% Transposition Table -10% PVS -35% 位行位列 效果 技术名称
  • 30.
  • 31.
  • 32.