分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

极大极小搜索思想+(α/β)减枝 ?【转自-----https://blog.csdn.net/hzk_cpp/article/details/79275772】

发布时间:2023-09-06 02:03责任编辑:沈小雨关键词:http

极大极小搜索,即minimax搜索算法,专门用来做博弈论的问题的暴力.

多被称为对抗搜索算法.

这个搜索算法的基本思想就是分两层,一层是先手,记为a,还有一层是后手,记为b.

这个搜索是认为这a与b的利益关系是对立的,即假设a要是分数更大,b就要是分数更小.

而且这两个人都是用最优策略.

对,就是这样.

假设我们现在有一道题,给出一串数列,有两个选手按顺序选数,也就是一个选手选了ai,接下来另一个选手就必须选ai后面的任意一个数,然后每个选手选的数的累加和即为选手的分数,求先手比后手最多多几分.(两个选手都会选择最优策略)

保证序列里所有的数为正数.

那么我们可以设计一个算法:

先手的框架为:枚举上一次另一个选手选的数字后面开始选,取最大值.

后手的框架为:枚举上一次另一个选手选的数字后面开始选,取最小值.

即:

 1 int dfsb(int k){ 2 ??int minn=1000000000; 3 ??for (int i=k;i<=n;i++) ?????//枚举接下来的要取的数 ?4 ????minn=min(minn,dfsa(i+1)-a[i]); ?????//搜索接下来对b最优的结果,也就是分数最小 ?5 ??minn=min(minn,0); ?????//考虑不取的情况 ?6 ??return minn; ?????//返回最优策略的得分 ?7 } 8 int dfsa(int k){ 9 ??int maxx=-1000000000;10 ??for (int i=k;i<=n;i++) ?????//枚举接下来的要取的数11 ????maxx=max(maxx,a[i]+dfsb(i+1)); ?????//搜索接下来对a最优的结果,也就是分数最大 12 ??maxx=max(maxx,0); ?????//考虑不取的情况 13 ??return maxx; ?????//返回最优策略的得分 14 }

接下来是一个对于对抗搜索的最佳搭档——alpha-beta优化.

这个优化的思想很简单,即对于a来说,需要的是最大值,而下面的b取得是最小值.

而接下来如果b的已求出的最小值比a的已求出的最大值小,还有必要继续搜吗?

同样的,对于b来说,需要的是最小值,而下面的b取得是最大值.

于是这就是alpha-beta剪枝.

具体实现如下:

 1 int dfsb(int k,int maxx){ ?????//多传一个maxx值表示上一层已经求出的最大值 ?2 ??int minn=1000000000; 3 ??for (int i=k;i<=n;i++) { ?????//枚举接下来的要取的数 ?4 ????minn=min(minn,dfsa(i+1,minn)-a[i]); ?????//搜索接下来对b最优的结果,也就是分数最小 ?5 ????if (minn<maxx) return; ?????//alpha-beta优化 ?6 ??} 7 ??minn=min(minn,0); ?????//考虑不取的情况 ?8 ??return minn; ?????//返回最优策略的得分 ?9 }10 int dfsa(int k,int minn){ ?????//多传一个minn值表示上一层已经求出的最小值 11 ??int maxx=-1000000000;12 ??for (int i=k;i<=n;i++) { ?????//枚举接下来的要取的数13 ????maxx=max(maxx,a[i]+dfsb(i+1,maxx)); ?????//搜索接下来对a最优的结果,也就是分数最大 14 ????if (maxx>minn) return; ?????//alpha-beta优化 15 ??}16 ??maxx=max(maxx,0); ?????//考虑不取的情况 17 ??return maxx; ?????//返回最优策略的得分 18 }

极大极小搜索思想+(α/β)减枝 ?【转自-----https://blog.csdn.net/hzk_cpp/article/details/79275772】

原文地址:https://www.cnblogs.com/xidian-mao/p/9304119.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved