搜索算法案例分析

贪婪最优搜索算法

案例场景

著名的Romania地图,以Bucharest为目标,Arad为起点:
在这里插入图片描述
在这里插入图片描述

初始状态:
在这里插入图片描述

扩展 Arad后:
在这里插入图片描述

可以看到Sibiu的路径最短,那么扩展Sibiu:
在这里插入图片描述

然后Fagaras路径最短,那就扩展Fagaras,然后就找到了目标节点:
在这里插入图片描述

解决方案

利用优先队列(优先级属性每一个结点的估计函数值)后进先出的性质进行遍历。
1)将开始结点压入优先队列中;
2)取出队列结点当前拓展结点,设置为已访问;
3)判断当前结点是否为目标结点,若是则输出路径搜索结束,否则进行下一步;
4)访问当前结点的所有相邻子节点;
5)判断该子节点是否被访问过,若已经访问过则回到2),若还未访问过则继续下一步;
6)对于每一个子节点,获取其相关信息值并进行路径更新,将其子节点的父亲结点指向当前结点,返回2);
7)对新的队列进行一次优先级排序;
8)若优先队列为空还未找到目标结点,返回搜索失败。

改进点

该算法使用节点到目标节点之间路径的最小代价作为信息进行搜素。

所谓贪婪,即只扩展当前代价最小的节点。这样做的缺点就是,目前代价小,之后的代价不一定小,如果解在代价最大的点,那么按照贪婪最优搜索算法,可能就找不到这个解,然后就会陷入死循环。

公式表示为:f(n)=h(n),h(n)代表当前节点到目标节点的最短距离。
当陷入死循环时不能找到解,时间复杂度和空间复杂度均为O(b^m),无最优解。

因此,在此基础上修改评价函数即得到A*算法。

思考

因为贪婪搜索算法具有局部优化的特性,能够充分考虑卫星观测的云层和有限存储资源等约束,所以可以将其运用于卫星调度问题中。首先,该算法优先考虑观测任务的云层遮挡,并根据云层遮挡大小,计算待观测任务的图像质量,将之排序选择待观测的任务;其次,结合任务的大小,截止时间和卫星的存储资源约束,选择能够给观测收益带来最大化的任务;最后,进行观测和任务传送,该算法在实际卫星调度中,能够有效地提高图像观测质量和任务观测收益。

A*搜索算法

案例场景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

解决方案

Dijkstra算法是利用广度优先搜索拓展遍历节点,刷新并记录每个节点到起始点的最短距离以及最短距离相对应的路径。如此就可以得到一条从起点到已知终点的最短距离及相对应的路径。但缺点是需要遍历所有点,计算量大。

最佳优先搜索(BFS)算法是一种启发式的搜索算法,启发式是指目标点到当前节点的代价,当拓展邻节点的时候是按照代价小的节点拓展。这种算法计算量较小,但有的时候找不到最短路径。

但该算法结合了Dijstra算法和最佳优先搜索算法的优势,采用f(n)=g(n)+h(n)来计算代价,取f的最小值拓展下一个邻节点。f(n)=g(n)+h(n)中g(n)一般是起点到当前节点的最短距离代价,而h(n)是当前点到目标点的代价。所以该算法计算量小,又能找到最短距离点,避免了Dijkstra和最佳优先搜索算法的缺点。保证找到全局最优解的条件,关键在于估价函数h(n)的选取:估价值h(n)小于等于n结点到目标结点最优路径的距离实际值,这种情况下,搜索的点数多,搜索范围大,效率低,但能得到全局最优解。如果估价值h(n)大于实际值, 搜索的点数少,搜索范围小,效率高,但不能保证得到全局最优解。
估价值与实际值越接近,估价函数取得就越好。如果启发式函数h(n)对于任意的节点n都满足 h(n) ≤ h(n),那么h(n)可采纳,此时A*是最优的。

改进点

A*改进——递归最佳优先搜索(RBFS)
记录当前节点的祖先可得到的最佳可替换路径的f值,如果当前的f值超过了这个限制,则递归将转回到替换路径,向上回溯改变f值到它的孩子的最佳f值,重复扩展这个上个节点,因为仍有可能存在较优解。

思考

A*算法使用现有信息进行搜素,包括迭代次数、初始状态到目标状态的开销、当前状态到目标状态的开销等。

A算法作为一种典型的启发式搜索算法,因其高效性而被广泛应用于寻路及图的遍历。比如可以将A搜索算法应用于机器人的路径规划问题,即依据某个或某些优化准则(如行走路径最短、行走时间最短等),在工作空间中找到一个从起始状态到目标状态能避开障碍物的最优路径。

爬山搜索算法

案例场景

一个人有健忘症,他不记得他曾经到过什么地方,他只记得他自己现在处在什么位置,周边是什么样的,他在浓雾中攀登珠峰,所以看的不远。他只能看到他周边的地形,远处他是看不到的,所以他可能不知道别的地方有一个更高的山峰。当他走到局部最值点的时候,他并不清楚前方更远处有一个更高的山峰;他的健忘症使得他任何时候都只储存一个当前状态,那么旧的状态都全部删掉了, 由此产生了爬山搜索算法,这个爬山搜索算法非常依赖于初始状态,很容易陷于局部最值点。为了保证可以遍历到最优解,可以适当增加初始状态空间的大小,然后从每一个起点出发,答案取最终山顶高度的最大值,便可以大大减小爬山出错的几率。

解决方案

爬山搜索算法即是模拟爬山的过程,随机选择一个位置爬山,每次朝着更高的方向移动,直到到达山顶,即每次都在临近的空间中选择最优解作为当前解,但算法可能会陷入局部最优解,能否得到全局最优解取决于初始点的位置。初始点若选择在全局最优解附近,则就可能得到全局最优解。

爬山算法是一种局部择优的方法,采用启发式方法,是对深度优先搜索的一种改进,它利用反馈信息帮助生成解的决策。

该算法从当前的节点开始,和周围的邻居节点的值进行比较。 如果当前节点是最大的,那么返回当前节点,作为最大值(即山峰最高点);反之就用最高的邻居节点来替换当前节点,从而实现向山峰的高处攀爬的目的。如此循环直到达到最高点。该算法可以避免遍历,通过启发选择部分节点,从而达到提高效率的目的。

改进点

因为不是全面搜索,所以结果可能不是最佳。
爬山搜索算法一般存在以下问题:
1)局部最优:某个节点比周围任何一个邻居都高,但是它却不是整个问题的最高点。
2)高地:也称为平顶,搜索一旦到达高地,就无法确定搜索最佳方向,会产生随机走动,使得搜索效率降低。
3)山脊:搜索可能会在山脊的两面来回震荡,前进步伐很小。

思考

该算法以邻域节点的值作为信息,在搜索过程中与邻域进行比较,若邻域值更大,则舍弃当前值。

随着计算技术和图像处理理论的发展,半数字式及数字式自动对焦技术迅速崛起,即通过对图像进行高频分量能量的计算或系统点扩展函数的分析,进行系统的对焦或图像恢复v这是现代自动对焦技术发展的主流。其中,通过对图像有关信息进行分析计算,运用控制策略调整光学系统,从而使系统正确对焦的方法称为半数字式的自动对焦方法,爬山搜索算法由于其优越的性能,就可以应用于半数字式的自动对焦系统中。

模拟退火搜索算法

案例场景

模拟退火算法的产生于固体的退火过程,当固体的温度很高时,内能比较大,固体内的粒子处于快速无序运动状态,当温度慢慢降低,固体的内能减小,粒子逐渐趋于有序,最终固体处于常温状态,内能达到最小,此时粒子最为稳定。

模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。模拟退火算法是通过赋予搜索过程一种时变且最终趋于零的概率突跳性,从而可有效避免陷入局部极小并最终趋于全局最优的串行结构的优化算法。

解决方案

模拟退火搜索算法首先从某个初始候选解开始,当温度大于0时执行循环。在循环中,通过随机扰动产生一个新的解,然后求得新解和原解之间的能量差,如果差小于0,则采用新解作为当前解。

如果差大于0,则采用一个当前温度与能量差成比例的概率来选择是否接受新解。温度越低,接受的概率越小,差值越大,同样接受概率越小。是否接受概率用此公式计算:p=exp(-ΔE/T)。这里ΔE为新解与原解的差,T为当前的温度。

由于温度随迭代次数逐渐降低,因此获得一个较差的解的概率较小。

典型的模拟退火搜索算法还使用了蒙特卡洛循环,在温度降低之前,通过多次迭代来找到当前温度下比较好的解。

初始化温度T,初始解状态S,每个温度t下的迭代次数L;
当k = 1,2,……,L时,进行3~6;
对当前解进行变换得到新解S’(例如对某些解中的元素进行互换,置换);
计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数;
若Δt′<0,则接受S′作为新的当前解,否则以概率exp(-Δt′/(KT))接受S′作为新的当前解(k为玻尔兹曼常数,数值为:K=1.3806505(24) × 10^-23 J/K);
如果满足终止条件则输出当前解作为最优解,结束程序;
减小T,转到第2步,直到T小于初始设定的阈值。

改进点

模拟退火搜索算法主要存在如下三个问题:

1)温度T的初始值设置是影响模拟退火搜索算法全局搜索性能的重要因素之一,初始温度高,则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时间,但全局搜索性能可能受到影响。

2)退火速度问题,即每个T值的迭代次数,模拟退火搜索算法的全局搜索性能与退火速度密切相关。一般来说,同一温度下的充分搜索是相当必要的,但这也需要计算时间。循环次数增加必定带来计算开销的增大。

3)温度管理问题也是模拟退火算法难以处理的问题之一。实际应用中,由于必须考虑计算复杂度的切实可行性等问题,所以温度的管理较为困难。

经典模拟退火搜索算法从系统的一个状态出发,通过一定的改变,可以得到另外一个状态,通过将搜寻路径以及解的记录轨迹记录下来,就得到了一种改进版本的模拟退火搜索算法。通过实验证明,该算法相比于传统的模拟退火搜索算法不仅有效地减少了计算时间,同时求解结果的准确性也更高。

思考

模拟退火算法还可以进行VLSI(Very Large Scale Integration,超大规模集成电路)的最优设计,是目前模拟退火算法最成功的应用实例之一。用模拟退火算法几乎可以很好地完成所有优化的VLSI设计工作。如全局布线、布板、布局和逻辑最小化等等。

模拟退火算法可用来进行图像恢复等工作,即把一幅被污染的图像重新恢复成清晰的原图,滤掉其中被畸变的部分。因此它在图像处理方面的应用前景是广阔的。

遗传搜索算法

案例场景

遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。

在遗传搜索算法中,有很多袋鼠,它们降落到喜玛拉雅山脉的任意地方。这些袋鼠并不知道它们的任务是寻找珠穆朗玛峰。但每过几年,就在一些海拔高度较低的地方射杀一些袋鼠,并希望存活下来的袋鼠是多产的,在它们所处的地方生儿育女。遗传搜索算法模拟物竞天择的生物进化过程,通过维护一个潜在解的群体执行了多方向的搜索,并支持这些方向上的信息构成和交换。是以面为单位的搜索,比以点为单位的搜索,更能发现全局最优解。

其中“物竞”是指适应度函数,自然界生物竞争过程往往包含两个方面:生物相互间的搏斗与及生物与客观环境的搏斗过程。但在这个案例中,袋鼠相互之间是非常友好的,它们并不需要互相搏斗以争取生存的权利。它们的生死存亡更多是取决于自己的判断。因此要衡量哪只袋鼠该杀,哪只袋鼠不该杀,而对于这个问题,衡量的标准就是袋鼠所在的海拔高度。“天择”是指选择函数,自然界中,越适应的个体就越有可能繁殖后代。但是也不能说适应度越高的就肯定后代越多,只能是从概率上来说更多。

遗传算法中每一条染色体,对应着遗传算法的一个解决方案,一般用适应性函数(fitness function)来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。可以把遗传算法的过程看作是一个在多元函数里面求最优解的过程。 可以这样想象,这个多维曲面里面有数不清的“山峰”,而这些山峰所对应的就是局部最优解。而其中也会有一个“山峰”的海拔最高的,那么这个就是全局最优解。而遗传算法的任务就是尽量爬到最高峰,而不是陷落在一些小山峰。

解决方案

1)评估每条染色体所对应个体的适应度。

2)遵照适应度越高,选择概率越大的原则,从种群中选择两个个体作为父方和母方。

3)抽取父母双方的染色体,进行交叉,产生子代。

4)对子代的染色体进行变异。

5)重复2,3,4步骤,直到新种群的产生。

改进点

遗传算法有时候只能逼近最优解,可以从以下方面改进遗传算法:
1)使用自适应遗传和变异概率
2)增加种群中个体数量
3)增大迭代次数
4)使用双点交叉法
5)采用多样的变异方法
6)更换适应度函数,将个体适应度的差距拉大
7)更换选择方法

思考

该算法以种群个数、交叉变异概率、迭代次数为信息。

遗传算法还可以应用于寻路问题,8数码问题,囚犯困境,动作控制,找圆心问题,TSP问题,生产调度问题,人工生命模拟等。

蚁群优化搜索算法

案例场景

蚁群对于食物的搜索过程大致可以分为三个阶段:当蚂蚁开始寻找目标时,会朝随机的方向搜索食物。这些蚂蚁以混乱的方式四处游走,最终当疲惫不堪时就返回巢穴进食和休息。然而,当它们漫步时,如果其中一只遇到了食物来源,它会带着一小块食物回到巢穴,并留下信息素轨迹,这种信息素可以作为其他蚂蚁是否有食物的指示。因此,蚂蚁会沿着信息素轨迹,留下更多的信息素。然而,考虑到蚂蚁可以选择多种路径到达食物源,蚂蚁的初始移动在本质上是有些混乱的,有许多路径连接着巢穴和食物,蚂蚁通常选择信息素更强的路径。信息素随着时间的推移而蒸发,从而到达食物源最短的路径具有最强的信息素;蚂蚁慢慢地向这条路线靠拢,使之成为最优路线。

解决方案

1)对相关参数进行初始化,包括蚁群规模、信息素因子、启发函数因子、信息素的挥发因子、信息素常数、以及最大迭代次数等,以及将数据读入程序,并进行预处理:比如将城市的坐标信息转化为城市间的距离矩阵。

2)随机将蚂蚁放于不同的出发点,对每个蚂蚁计算其下个访问城市,直到有蚂蚁访问完所有的城市。

3)计算各蚂蚁经过的路径长度Lk,记录当前迭代次数最优解,同时对路径上的信息素浓度进行更新。

4)判断是否到达迭代次数,若否,返回步骤2;是,结束程序。

5)输出结果,并根据需要输出寻优过程中的相关指标,如运行时间、迭代次数等。

改进点

最大-最小蚂蚁系统(Max-min Ant System,MMAS)是对标准蚂蚁系统算法的一个简单修改。它有两个主要特点。首先,每一代最好的蚂蚁才能增加信息素,这就减少了开发并增加了对已知的开采。其次,信息素的量是上下有界的,它增加了探索,因为即使是最糟糕的旅行也保留了非零数量的信息素,即使是最好的旅行也无法获得如此多的信息素,以至于完全控制了蚂蚁的决策。

最大-最小蚂蚁系统对蚁群优化搜索算法进行了较大的改进,极大提高了算法的执行效率和收敛性。首先,只允许迭代最优蚂蚁或至今最优蚂蚁释放信息素。这与精华蚂蚁系统有些相似,但又不完全一样,释放信息素时交替使用迭代最优更新和至今最优更新。其次,信息素量大小的取值范围被限制在一个区间内。因为各食物间的距离已经给定,所以当信息素量的大小被限定时,蚂蚁选择下一个食物的概率也被限制在一个区间,这就避免了算法陷入停滞状态。第三,信息素初始值为信息素取值区间的上限,并伴随着较小的信息素蒸发。这增强了算法在初始阶段的探索能力,有助于蚂蚁进行全局范围的搜索。最后,每当系统进入停滞状态,所有边上的信息素被重新初始化。有效地利用系统进入停滞状态后的迭代周期继续进行搜索,使算法具有更强的全局寻优能力。

思考

可以将蚁群算法应用于解决受限路由问题,可以解决包括带宽、延时、丢包率和最小花费等约束条件在内的QoS组播路由问题,比现有的链路状态路由算法有明显的优越性。基于改进蚁群算法的分布式动态RWA方法,用于解决波分复用光网络中动态选路和波长分配问题,与现有最短路径相比,该算法有效降低了光路阻塞率,促进波长资源的合理分配,也降低了大型网络的通信开销。

粒子群优化搜索算法

案例场景

粒子群优化搜索算法是通过模拟鸟群捕食行为设计的。假设区域里就只有一块食物,鸟群的任务是找到这个食物源。鸟群在整个搜寻的过程中,通过相互传递各自的信息,让其他的鸟知道自己的位置,通过这样的协作,来判断自己找到的是不是最优解,同时也将最优解的信息传递给整个鸟群,最终,整个鸟群都能聚集在食物源周围,即找到了最优解,即问题收敛。

每个寻优的问题解都被想像成一只鸟,称为“粒子”。所有粒子都在一个D维空间进行搜索。所有的粒子都由一个fitness function 确定适应值以判断目前的位置好坏。每一个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置。每一个粒子还有一个速度以决定飞行的距离和方向。这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。

解决方案

1)在初始化范围内,对粒子群进行随机初始化,包括随机位置和速度;

2)根据fitness function,计算每个粒子的适应值;

3)对每个粒子,将其当前适应值与其个体历史最佳位置(pbest)对应的适应值作比较,如果当前的适应值更高,则用当前位置更新粒子个体的历史最优位置pbest;

4)对每个粒子,将其当前适应值与全局最佳位置(gbest)对应的适应值作比较,如果当前的适应值更高,则用当前位置更新粒子群体的历史最优位置gbest;

5)更新粒子的速度和位置;

6)若未达到终止条件,则转第2步;

改进点

PSO算法存在早熟收敛、维数灾难、易于陷入局部极值等问题,主要有以下几种解决方案:

1)调整PSO的参数来平衡算法的全局探测和局部开采能力,可以对PSO算法的速度项引入惯性权重,并依据迭代进程及粒子飞行情况对惯性权重进行线性(或非线性)的动态调整,以平衡搜索的全局性和收敛速度。

2)设计不同类型的拓扑结构,改变粒子学习模式,从而提高种群的多样性。

3)将PSO和其他优化算法相结合,形成混合PSO算法,可以将模式搜索算法嵌入到PSO算法中,实现了模式搜索算法的局部搜索能力与PSO算法的全局寻优能力的优势互补。

思考

该算法以粒子的位置和速度为信息。

PSO是非线性连续优化问题、组合优化问题和混合整数非线性优化问题的有效优化工具。目前,PSO已应用于函数优化、神经网络训练、模糊系统控制、分类、模式识别、信号处理、机器人技术以及其它遗传算法的应用领域等。研究表明,PSO除了能解决一般的函数优化问题外,还能解决各种复杂的优化问题;此外,PSO算法还是一种很有潜力的神经网络学习算法。PSO算法的应用十分广泛,有着比较好的发展前景。但相对其它比较成熟的进化算法,对粒子群优化算法的理论研究还需要深入。

最小最大搜索算法

案例场景

Minimax算法常用于棋类等由两方较量的游戏和程序。该算法是一个零总和算法,即一方要在可选的选项中选择将其优势最大化的选择,另一方则选择令对手优势最小化的方法。而开始的时候总和为0。很多棋类游戏可以采取此算法,例如井字棋。

解决方案

Minimax算法即极小化极大算法,是一种找出失败的最大可能性中的最小值的算法。Minimax算法常用于棋类等由两方较量的游戏和程序,这类程序由两个游戏者轮流,每次执行一个步骤。Minimax算法是基于搜索的博弈算法的基础。该算法是一种零总和算法,即一方要在可选的选项中选择将其优势最大化的选择,而另一方则选择令对手优势最小化的方法。

Minimax是一种悲观算法,即假设对手每一步都会将我方引入从当前看理论上价值最小的格局方向,即对手具有完美决策能力。因此我方的策略应该是选择那些对方所能达到的让我方最差情况中最好的,也就是让对方在完美决策下所对我造成的损失最小。Minimax不找理论最优解,因为理论最优解往往依赖于对手是否足够愚蠢,Minimax中我方完全掌握主动,如果对方每一步决策都是完美的,则我方可以达到预计的最小损失格局,如果对方没有走出完美决策,则我方可能达到比预计的最悲观情况更好的结局。总之我方就是要在最坏情况中选择最好的。

Minimax算法要定义一个静态估计函数f,对当前局势做出判断,这个函数根据棋局的优劣势态的特征来定义。MAX代表我方,MIN代表对手方,P代表一个状态。对有利于MAX的局势,f(p)取正值,有利于MIN的局势,f(p)取负值,局势均衡,f(p)取零。极大极小搜索的基本思想是:
(1)当轮到MIN走步的节点时,MAX应考虑最坏的情况(因此,f§取极小值)。
(2)当轮到MAX走步的节点时,MAX应考虑最好的情况(因此,f§取极大值)。
(3)当评价回溯的时候,相应于两位棋手的对抗策略,不同层上交替地使用(1)、(2)两种方法向上传递倒推值。所以这种搜索方法称为极大极小过程。实际上,这种算法是假定在模拟过程中双方都走出最好的一步,对MAX方来说,MIN方的最好一步是最坏的情况,MAX在不断地最大化自己的利益。

该算法的时间复杂度为O(b^m),空间复杂度为O(b*m),其中m是游戏树的最大深度,在每个节点存在b个有效走法。它是一种简单有效的对抗搜索算法,但如果搜素树很大,则无法在有效时间内返回结果。

改进点

Alpha-Beta剪枝算法是基于Minimax算法的。极大极小搜索策略是在双方对弈若干步之后,从可能的步中选一步相对好的走法来走,在有限的搜索范围内进行求解,可以理解为规定一个有限的搜索深度。但Minimax算法有个致命的弱点,就是非常暴力地搜索导致效率不高,特别是当搜索的深度加大时效率极低,Alpha-Beta剪枝算法在此基础上进行了优化。由于MIN、MAX不断的倒推过程存在着联系,当它们满足某种关系时后续的搜索是多余的,Alpha-Beta剪枝算法把生成后继和倒推值估计结合起来,及时减掉一些无用的分支,以此来提高算法的效率。

思考

Minimax算法在棋类游戏中应用较为广泛,如五子棋、国际象棋、围棋、跳棋等。

α-β剪枝搜索算法

案例场景

α-β剪枝算法是对极大极小算法的优化,当然前提条件也都是一样的,以五子棋为例:
(1)双方都按自己认为的最佳落子行棋;
(2)对给定的盘面用一个分值来评估,这个评估值永远是从一方(搜索程序)来评价的,我方有利时给一个正数,对方有利时给一个负数。

解决方案

Alpha-Beta剪枝算法是基于Minimax算法的。极大极小搜索策略是在双方对弈若干步之后,从可能的步中选一步相对好的走法来走,在有限的搜索范围内进行求解,可以理解为规定一个有限的搜索深度。但Minimax算法有个致命的弱点,就是非常暴力地搜索导致效率不高,特别是当搜索的深度加大时效率极低,Alpha-Beta剪枝算法在此基础上进行了优化。由于MIN、MAX不断的倒推过程存在着联系,当它们满足某种关系时后续的搜索是多余的,Alpha-Beta剪枝算法把生成后继和倒推值估计结合起来,及时减掉一些无用的分支,以此来提高算法的效率。

定义极大层的下界为alpha,极小层的上界为beta,alpha-beta剪枝规则如下:
1)alpha剪枝。若任一极小值层结点的beta值不大于它任一前驱极大值层结点的alpha值,即alpha(前驱层) >= beta(后继层),则可终止该极小值层中这个MIN结点以下的搜索过程。这个MIN结点最终的倒推值就确定为这个beta值。
2)beta剪枝。若任一极大值层结点的alpha值不小于它任一前驱极小值层结点的beta值,即alpha(后继层) >= beta(前驱层),则可以终止该极大值层中这个MAX结点以下的搜索过程,这个MAX结点最终倒推值就确定为这个alpha值。

改进点

α-β剪枝算法是计算机博弈类游戏算法的基础,是一种优化的博弈树搜索算法,使用α-β剪枝算法搜索博弈树时,可以剪去一些不必要的分枝,从而提高搜索效率,但是α-β剪枝算法的剪枝效率又取决于所构建的博弈树的分枝的排列顺序,理想排列顺序下的剪枝效率和最差情况下相比差别极大。因此改进博弈树分枝的排列顺序可以极大的提高α-β剪枝算法的剪枝效率。

思考

最优测试序列的产生是一个NP完全问题。因此,在最优解和计算复杂度之间寻求一种平衡的近优测试序列算法受到普遍关注,将α-β剪枝算法与Minimax近优测试序列算法结合,这将以更高计算效率得到与Minimax同样的测试序列,在理想情况下,α-β剪枝后比不剪枝前的计算效率将提高一半。实现优势互补。

蒙特卡洛树搜索算法

案例场景

多臂赌徒机可以选一个自己的幸运数字,可能先每一个都摇一次、探索一遍,然后继续摇动产出最多的那个赌博机,但是这样可能会错过一个期望产出更高的机器,比如这个机器第一次摇动时正好产出较低。由此产生了蒙特卡洛树搜素算法,可以利用现在有的信息,同时也不错失更好的机会。

解决方案

1)选择:从根节点 R 开始,递归选择最优的子节点,直到达到叶子节点 L。

2)扩展:如果 L 不是一个终止节点,那么就创建一个或者更多的字子节点,选择其中一个 C。

3)模拟:从 C 开始运行一个模拟的输出,直到博弈游戏结束。

4)反向传播 :用模拟的结果输出更新当前行动序列。

改进点

蒙特卡洛树搜索算法仍然存在着问题与隐患。在面对计算机围棋这样复杂的决策过程时,简单的蒙特卡洛树搜索过程往往由于计算量大,导致收敛慢。双人博弈游戏中的蒙特卡洛树搜索不能收敛于双人博弈的最佳决策策略。所以蒙特卡洛树搜索结合极大极小值算法的改进算法可以使搜索结果不会因为蒙特卡洛方法的随机性导致失真,该新算法显著改进了蒙特卡洛树搜索的准确性和效率。

思考

蒙特卡洛树搜索算法是设计游戏机器人或解决顺序决策问题的有力方法。该方法依赖于智能树搜索,平衡了探索和利用。MCTS以模拟的形式执行随机采样,并存储动作的统计信息,以便在每个后续迭代中做出更多有根据的选择。该方法已成为组合游戏的最新技术,因此可以将其应用于更复杂的游戏中,例如,具有高分支因子或实时性的游戏。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值