当前位置:网站首页>Alpha Beta Pruning in Adversarial Search
Alpha Beta Pruning in Adversarial Search
2022-07-02 06:25:00 【霏霏小雨】
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.


边栏推荐
- 外币记账及重估总账余额表变化(下)
- Illustration of etcd access in kubernetes
- Oracle段顾问、怎么处理行链接行迁移、降低高水位
- Differences between ts and JS
- 类加载器及双亲委派机制
- CAD secondary development object
- JS create a custom JSON array
- 中年人的认知科普
- How to call WebService in PHP development environment?
- Oracle EBs and apex integrated login and principle analysis
猜你喜欢
随机推荐
Sqli - Labs Clearance (less6 - less14)
如何高效开发一款微信小程序
Sqli-labs customs clearance (less1)
Check log4j problems using stain analysis
Yolov5 practice: teach object detection by hand
Oracle APEX 21.2 installation et déploiement en une seule touche
SQLI-LABS通关(less6-less14)
Uniapp introduces local fonts
php中删除指定文件夹下的内容
php中生成随机的6位邀请码
ssm垃圾分类管理系统
解决万恶的open failed: ENOENT (No such file or directory)/(Operation not permitted)
Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool
Oracle EBs and apex integrated login and principle analysis
Ceaspectuss shipping company shipping artificial intelligence products, anytime, anywhere container inspection and reporting to achieve cloud yard, shipping company intelligent digital container contr
oracle-外币记账时总账余额表gl_balance变化(上)
MapReduce与YARN原理解析
SQL injection closure judgment
CAD二次开发 对象
Go package name









