当前位置:网站首页>Alpha Beta Pruning in Adversarial Search
Alpha Beta Pruning in Adversarial Search
2022-07-02 07:23:00 【Drizzle】
Alpha Beta Pruning in Adversarial Search
Minimax Implementation
def max-value(state):
initialize v = -∞
for each successor of state:
v = max(v, min-value(successor))
return v
def min-value(state):
initialize v = +∞
for each successor of state:
v = min(v, max-value(successor))
return v
V ( s ) = m a x ( V ( s ′ ) ) s ′ ∈ s u c c e s s o r ( s ) V(s) = max(V(s')) s' \in successor(s) V(s)=max(V(s′))s′∈successor(s)
V ( s ′ ) = m i n ( V ( s ) ) s ∈ s u c c e s s o r ( s ′ ) V(s') = min(V(s)) s \in successor(s') V(s′)=min(V(s))s∈successor(s′)
Alpha Beta Pruning
General configuration (MIN version)
We’re computing the MIN-VALUE at some node n
We’re looping over n’s children
n’s estimate of the childrens’ min is dropping
Who cares about n’s value? MAX
Let α \alpha α be the best value that MAX can get at any choice point along the current path from the root
If n becomes worse than α \alpha α, MAX will avoid it, so we can stop considering n’s other children (it’s already bad enough that it won’t be played)
MAX version is symmetric
Examples
To start with, we know nothing about the bounds, so we set α = − ∞ , β = ∞ \alpha = - \infty, \beta = \infty α=−∞,β=∞.
Then we passing along the bounds to the child, child’s child…
Now we reach at the level: depth of 4. We run our evaluation functions here.
An evaluation function is like:
Ideal function: returns the actual minimax value of the position
In practice: typically weighted linear sum of features: E v a l ( s ) = w 1 f 1 ( s ) + ⋅ ⋅ ⋅ + w n f n ( s ) Eval(s) = w_1f_1(s) + \cdot\cdot\cdot + w_nf_n(s) Eval(s)=w1f1(s)+⋅⋅⋅+wnfn(s).
We get value 3, since this is a min node, we now know the minmax value must be less than or equal to 3, thus, we set β = 3 \beta = 3 β=3.
Next child in depth 4 is value 17, while 17 > 3, we ignore this child.
All children handled, we return to depth 3. we have β = 3 \beta = 3 β=3 here, so we can set α = 3 \alpha = 3 α=3 at the depth 2 node.
We pass along the bounds of depth2 to next child of depth3.
At this moment, we get α = 3 a n d β = 2 , α > β \alpha = 3 \space and \space \beta = 2, \alpha > \beta α=3 and β=2,α>β.
If these values are to change, children values would be greater than 3 and less than 2, which is impossible. We can prune any children and return.
We do these steps recursively, we will reach this:
Some pictures and ideas comes from h t t p s : / / w w w . c s . u c l a . e d u / https://www.cs.ucla.edu/ https://www.cs.ucla.edu/.
Two Quiz
notice: I do not have answers.
边栏推荐
- [Bert, gpt+kg research] collection of papers on the integration of Pretrain model with knowledge
- 【MEDICAL】Attend to Medical Ontologies: Content Selection for Clinical Abstractive Summarization
- Delete the contents under the specified folder in PHP
- ORACLE EBS接口开发-json格式数据快捷生成
- 使用Matlab实现:Jacobi、Gauss-Seidel迭代
- ORACLE APEX 21.2安装及一键部署
- Oracle segment advisor, how to deal with row link row migration, reduce high water level
- oracle EBS标准表的后缀解释说明
- ERNIE1.0 与 ERNIE2.0 论文解读
- 第一个快应用(quickapp)demo
猜你喜欢
Oracle apex Ajax process + dy verification
读《敏捷整洁之道:回归本源》后感
Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool
[Bert, gpt+kg research] collection of papers on the integration of Pretrain model with knowledge
Error in running test pyspark in idea2020
view的绘制机制(一)
Spark SQL task performance optimization (basic)
Oracle EBS database monitoring -zabbix+zabbix-agent2+orabbix
SSM garbage classification management system
Oracle 11g uses ords+pljson to implement JSON_ Table effect
随机推荐
Classloader and parental delegation mechanism
Three principles of architecture design
Check log4j problems using stain analysis
Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool
【Torch】解决tensor参数有梯度,weight不更新的若干思路
图解Kubernetes中的etcd的访问
oracle apex ajax process + dy 校验
一个中年程序员学习中国近代史的小结
Cognitive science popularization of middle-aged people
如何高效开发一款微信小程序
华为机试题
allennlp 中的TypeError: Object of type Tensor is not JSON serializable错误
Oracle 11g sysaux table space full processing and the difference between move and shrink
spark sql任务性能优化(基础)
Get the uppercase initials of Chinese Pinyin in PHP
第一个快应用(quickapp)demo
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'
Oracle rman自动恢复脚本(生产数据向测试迁移)
优化方法:常用数学符号的含义
ARP attack