zoukankan      html  css  js  c++  java
  • 人工智能——极大极小算法+αβ剪枝

    参考博客[https://blog.csdn.net/sacredness/article/details/93124338],讲得比较清楚。

    image.png

    因为懒得再画图,所以所有节点以第几层(从上往下,最上面为第1层)第几个节点(从左往右)代替。

    已知条件:

    • 矩形表示我方,想要数字最大化,圆形代表对方,想要数字最小化,叶子节点是已知的收益节点。

    整个步骤:

    • 最底层是收益已知的点,所以从倒数第二层开始,从左往右,首先是第一个圆形节点,是对方的点,要取min,所以该点目前的范围就是小于等于1,因为该点另外一个儿子如果大于1,那对方肯定选左边的1,如果小于1,那肯定选这个小于1的,所以总的范围是小于等于1。
    • 再看该点的右儿子,5大于1,所以该点的值可以确定为1
    • 所以该点的父节点,也就是第三层的第一个节点,目前的范围是大于等于1,因为是我方节点,要取max。
    • 然后,因为该矩形节点只有一个儿子,所以确定了范围也就确定了值,即第三层第一个节点的值可以确定为1其父节点目前的范围是小于等于1
    • 从左往右,再看倒数第二层的第二个圆形节点,同理,可以确定其值为2,那么他的父节点,也就是第三层的第二个节点,可以确定范围是大于等于2,。
    • 重点来了,第三层第二个节点范围确定是大于等于2,而他的父节点即第二层第一个节点确定范围是小于等于1交集大小小于等于1,所以将第三层第二个节点的其他还没搜索的儿子全部剪枝掉
    • 剩下的道理相同,就是时刻要注意看父节点的范围是不是已经确定了,看是否可以剪枝。
  • 相关阅读:
    分布式发布订阅消息系统 Kafka 架构设计[转]
    KAFKA分布式消息系统[转]
    文本协议与二进制协议的选择
    实现程序的热升级
    实现程序的热升级
    一个Socket数据处理模型
    关于GC进行垃圾回收的时机
    多线程
    线程同步(AutoResetEvent与ManualResetEvent)
    异步
  • 原文地址:https://www.cnblogs.com/zxcoder/p/12104639.html
Copyright © 2011-2022 走看看