【人工智能】搜索求解(复习笔记DAY03)

  • 搜索是一种求解问题的一般方法。涉及到两个方面:一是问题的表示,如果一个问题找不到一个合适的表示方法,就谈不上对它求解。另一方面则是选择一种相对合适的求解方法。
  • 下面首先讨论搜索的基本概念,然后着重介绍状态空间知识表示和搜索策略,主要有回溯策略、宽度优先搜索、深度优先搜索等盲目的图搜索策略,A及A*搜索算法等启发式图搜索策略,以及对抗搜索和蒙特卡洛树搜索。

搜索的基本概念

问题求解的基本方法:搜索法、归约法、归结法、推理法及产生式等
在这里插入图片描述
搜索中需要解决的基本问题:
(1)是否一定能找到一个解?
(2)找到的解是否是最佳解?
(3)时间与空间复杂性如何?
(4)是否终止运行或是否会陷入一个死循环?

搜索的主要过程:
(1) 从初始或目的状态出发,并将它作为当前状态。
(2) 扫描操作算子集,将适用当前状态的一些操作算子作用于当前状态而得到新的状态,并建立指向其父结点的指针 。
(3) 检查所生成的新状态是否满足结束状态,如果满足,则得到问题的一个解,并可沿着有关指针从结束状态反向到达开始状态,给出一解答路径;否则,将新状态作为当前状态,返回第(2)步再进行搜索。

搜索方向
(1) 数据驱动:从初始状态出发的正向搜索。
正向搜索——从问题给出的条件出发。
(2) 目的驱动:从目的状态出发的逆向搜索。
逆向搜索:从想达到的目的入手,看哪些操作算子能产生该目的以及应用这些操作算子产生目的时需要哪些条件。
(3) 双向搜索
双向搜索:从开始状态出发作正向搜索,同时又从目的状态出发作逆向搜索,直到两条路径在中间的某处汇合为止。

盲目搜索与启发式搜索
(1)盲目搜索:在不具有对特定问题的任何有关信息的条件下,按固定的步骤(依次或随机调用操作算子)进行的搜索
(2)启发式搜索:考虑特定问题领域可应用的知识,动态地确定调用操作算子的步骤,优先选择较适合的操作算子,尽量减少不必要的搜索,以求尽快地到达结束状态。


状态空间的搜索策略

状态空间表示法

状态:表示系统状态、事实等叙述型知识的一组变量或数组:
操作:表示引起状态变化的过程型知识的一组关系或函数:
状态空间:利用状态变量和操作符号,表示系统或问题的有关知识的符号体系,状态空间是一个四元组:
求解路径:从 结点到 结点的路径。
在这里插入图片描述

状态空间的图描述

八数码问题
旅行商问题


盲目搜索

回溯策略

从初始状态出发,不停地、试探性地寻找路径,直到它到达目的或“不可解结点”,即“死胡同”为止。若它遇到不可解结点就回溯到路径中最近的父结点上,查看该结点是否还有其他的子结点未被扩展。若有,则沿这些子结点继续搜索;如果找到目标,就成功退出搜索,返回解题路径。

回溯搜索的算法
(1) PS(path states)表:保存当前搜索路径上的状态。如果找到了目的,PS就是解路径上的状态有序集。
(2) NPS(new path states)表:新的路径状态表。它包含了等待搜索的状态,其后裔状态还未被搜索到,即未被生成扩展 。
(3) NSS(no solvable states)表:不可解状态集,列出了找不到解题路径的状态。如果在搜索中扩展出的状态是它的元素,则可立即将之排除,不必沿该状态继续搜索。

图搜索算法(深度优先、宽度优先、最好优先搜索等)的回溯思想
(1)用未处理状态表(NPS)使算法能返回(回溯)到其中任一状态。
(2)用一张“死胡同”状态表(NSS)来避免算法重新搜索无解的路径。
(3)在PS 表中记录当前搜索路径的状态,当满足目的时可以将它作为结果返回。
(4)为避免陷入死循环必须对新生成的子状态进行检查,看它是否在该三张表中 。

宽度优先搜索策略

在这里插入图片描述
机器人积木动作序列问题
通过搬动积木块,希望从初始状态达到一个目的状态,即三块积木堆叠在一起。
在这里插入图片描述
操作算子为MOVE(X,Y):把积木X搬到Y(积木或桌面)上面。
操作算子可运用的先决条件
(1)被搬动积木的顶部必须为空。
(2)如果 Y 是积木,则积木 Y 的顶部也必须为空。
(3)同一状态下,运用操作算子的次数不得多于一次。
在这里插入图片描述

深度优先搜索策略

• 在深度优先搜索中,当搜索到某一个状态时,它所有的子状态以及子状态的后裔状态都必须先于该状态的兄弟状态被搜索。
• 为了保证找到解,应选择合适的深度限制值,或采取不断加大深度限制值的办法,反复搜索,直到找到解。
• 深度优先搜索并不能保证第一次搜索到的某个状态时的路径是到这个状态的最短路径。
• 对任何状态而言,以后的搜索有可能找到另一条通向它的路径。如果路径的长度对解题很关键的话,当算法多次搜索到同一个状态时,它应该保留最短路径。

卒子穿阵问题
要求一卒子从顶部通过下图所示的阵列到达底部。卒子行进中不可进入到代表敌兵驻守的区域(标注1),并不准后退。假定深度限制值为5。
在这里插入图片描述


启发式搜索

启发式策略

• “启发”(heuristic):关于发现和发明操作算子及搜索方法的研究。
• 在状态空间搜索中,启发式被定义成一系列操作算子,并能从状态空间中选择最有希望到达问题解的路径。
• 启发式策略:利用与问题有关的启发信息进行搜索。

• 运用启发式策略的两种基本情况
(1)一个问题由于在问题陈述和数据获取方面固有的模糊性,可能会使它没有一个确定的解
(2)虽然一个问题可能有确定解,但是其状态空间特别大,搜索中生成扩展的状态数会随着搜索的深度呈指数级增长。

启发信息和估价函数

• 求解问题中能利用的大多是非完备的启发信息
(1)求解问题系统不可能知道与实际问题有关的全部信息,因而无法知道该问题的全部状态空间,也不可能用一套算法来求解所有的问题。
(2)有些问题在理论上虽然存在着求解算法,但是在工程实践中,这些算法不是效率太低,就是根本无法实现。

• 启发信息的分类
(1)陈述性启发信息
(2)过程性启发信息
(3)控制性启发信息
① 没有任何控制性知识作为搜索的依据,因而搜索的每一步完全是 随意的。
②有充分的控制知识作为依据,因而搜索的每一步选择都是正确的,但这是不现实的。

• 估价函数的任务就是估计待搜索结点的“有希望”程度,并依次给它们排定次序(在open表中)
估价函数 :从初始结点经过 结点到达目的结点的路径的最小代价估计值,其一般形式是f (n) = g(n) + h(n)
一般地,在 f(n) 中, g(n) 的比重越大,越倾向于宽度优先搜索方式,而 h(n)的比重越大,表示启发性能越强。

G(n),它表示从起始搜索点到当前点的代价(通常用某结点在搜索树中的深度来表示)
H(n),它表示启发式搜索中最为重要的一部分,即当前结点到目标结点的估值,H(n)设计的好坏,直接影响着具有此种启发式函数的启发式算法的是否能称为A*算法。

• 利用知识来引导搜索,达到减少搜索范围,降低问题复杂度的目的
• 启发信息的强度
• 强:降低搜索工作量,但可能导致找不到最优解
• 弱:一般导致工作量加大,极限情况下为 盲目搜索,但可能可以找到最优解
• 引入启发知识,在保证找到最佳解的情况下,尽可能减少搜索范围,提高搜索效率。

八数码问题
八数码的估价函数设计方法有多种,并且不同的估价函数对求解八数码问题有不同的影响。
 最简单的估价函数:取一格局与目的格局相比,其位置不符的将牌数目。
 较好的估价函数:各将牌移到目的位置所需移动的距离的总和。
 第三种估价函数:对每一对逆转将牌乘以一个倍数。
 第四种估价函数:克服了仅计算将牌逆转数目策略的局限,将位置不符将牌数目的总和与3倍将牌逆转数目相加。

A搜索算法

• 启发式图搜索法的基本特点:如何寻找并设计一个与问题有关的 h(n)及构出 f (n) = g(n) + h(n),然后以f (n) 的大小来排列待扩展状态的次序,每次选择f (n)值最小者进行扩展。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
• 每次重复时,A搜索算法从open表中取出第一个状态,如果该状态满足目的条件,则算法返回到该状态的搜索路径。
• 如果open表的第一个状态不是目的状态,则算法利用与之相匹配的一系列操作算子进行相应的操作来产生它的子状态。如果某个子状态已在open表(或closed表)中出现过,即该状态再一次被发现时,则通过刷新它的祖先状态的历史记录,使算法极有可能找到到达目的状态的更短的路径
• 接着,A搜索算法open表中每个状态的估价函数值,按照值的大小重新排序,将值最小的状态放在表头,使其第一个被扩展。

八数码问题

A*搜索算法及特性举例

在这里插入图片描述

如果某一问题有解,那么利用A*搜索算法对该问题进行搜索则一定能搜索到解,并且一定能搜索到最优的解而结束。

• A算法是没有对估价函数f(n)作任何限制。实际上,估价函数对搜索过程是十分重要的,直接影响找到解或找到最优解。
• 需要对估价函数进行某些限制。 A*算法就是对估价函数加上一些限制后得到的一种启发式搜索算法。
在这里插入图片描述
在这里插入图片描述

启发式搜索举例

对抗搜索

 对抗搜索(Adversarial Search)也称为博弈搜索(Game Search)
 在一个竞争的环境中,智能体(agents)之间通过竞争实现相反的利益,一方最大化这个利益,另外一方最小化这个利益。
在这里插入图片描述
• 最小最大搜索(Minimax Search): 是在对抗搜索中最为基本的一种让玩家来计算最优策略的方法。
• Alpha-Beta剪枝搜索(Pruning Search): 一种对最小最大搜索进行改进的算法,即在搜索过程中可剪除无需搜索的分支节点,且不影响搜索结果。
• 蒙特卡洛树搜索(Monte-Carlo Tree Search): 通过采样而非穷举方法来实现搜索。

 目前主要讨论在确定的、全局可观察的、竞争对手轮流行动、零和游戏(zero-sum)下的对抗搜索
 两人对决游戏 (MAX and MIN, MAX先走) 可如下形式化描述,从而将其转换为对抗搜索问题
 所谓零和博弈是博弈论的一个概念,属非合作博弈。指参与博弈的各方,在严格竞争下,一方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远为“零”,双方不存在合作的可能。
 与“零和”对应,“双赢博弈”的基本理论就是“利己”不“损人”,通过谈判、合作达到皆大欢喜的结果。

minimax算法
给定一个游戏搜索树,minimax算法通过每个节点的minimax值来决定最优策略。当然,MAX希望最大化minimax值,而MIN则相反
优点:
 算法是一种简单有效的对抗搜索手段
 在对手也“尽力而为”前提下,算法可返回最优结果
缺点:
 如果搜索树极大,则无法在有效时间内返回结果
改善:
 使用alpha-beta pruning算法来减少搜索节点
 对节点进行采样、而非逐一

极小化极大算法最大的缺点就是会造成数据冗余,而这种冗余有两种情况:①极大值冗余;②极小值冗余。相对应地,alpha剪枝用来解决极大值冗余问题,beta剪枝则用来解决极小值冗余问题,这就构成了完整的Alpha-beta剪枝算法。

Alpha-Beta 剪枝搜索
在极小化极大算法(minimax算法)中减少所搜索的搜索树节点数。该算法和极小化极大算法所得结论相同,但剪去了不影响最终结果的搜索分枝。
在这里插入图片描述
在这里插入图片描述

极大值冗余如图1所示,这是一颗博弈树的某一部分,节点下的数据为该节点的值,节点B的值为20,节点D的值为15,这里,C为取极小值的min节点,因此节点C的值将小于等于15;而节点A为取最大值max的节点,因此A只可能取到B的值,也是就说不再需要搜索C的其他子节点E和F的值就可以得出节点A的值。这样将节点D的后继兄弟节点减去称为Alpha剪枝。
在这里插入图片描述
极小值冗余如图2所示,这也是一颗博弈树的某一部分,节点B的值为10,节点D的值为19,这里,C节点为取最大值max节点。因此,C的值将大于等于19;节点A为取极小值的min节点,因此A的值只能取B的值10,也就是说不再需要求节点C的子节点E和F的值就可以得出节点A的值。这样将节点D的后继兄弟节点减去称为Beta剪枝。
在这里插入图片描述
在这里插入图片描述

如何利用Alpha-Beta 剪枝
 𝛼 为可能解法的最大上界
 𝛽 为可能解法的最小下界
 如果节点𝑁是可能解法路径中的一个节点,则其产生的收益一定满足如下条件:𝛼 ≤ 𝑟𝑒𝑤𝑎𝑟𝑑(𝑁) ≤ 𝛽(其中𝑟𝑒𝑤𝑎𝑟𝑑(𝑁)是节点𝑁产生的收益)
每个节点有两个值,分别是𝛼和𝛽。节点的𝛼和𝛽值在搜索过程中不断变化。其中,𝛼从负无穷大。(−∞)逐渐增加、𝛽从正无穷大(∞)逐渐减少。如果一个节点中𝛼 > 𝛽,则该节点的后续节点可剪枝。

Alpha-Beta 剪枝搜索的性质:
• 剪枝本身不影响算法输出结果
• 节点先后次序会影响剪枝效率
• 如果节点次序“恰到好处”,Alpha-Beta剪枝的时间复杂度为O(𝑏 ^ 𝑚/2 ),最小最大搜索的时间复杂度为O(𝑏^𝑚)


蒙特卡洛树搜索

蒙特卡洛规划 (Monte-Carlo Planning)
 单一状态蒙特卡洛规划: 多臂赌博机 (multi-armed bandits)
 上限置信区间策略 (Upper Confidence Bound Strategies, UCB)
 蒙特卡洛树搜索 (Monte-Carlo Tree Search)
 UCT (Upper Confidence Bounds on Trees)

单一状态蒙特卡洛规划: 多臂赌博机 (multi-armed bandits)
 单一状态, 𝑘种行动(即有𝑘 个摇臂)
 在摇臂赌博机问题中,每次以随机采样形式采取一种行动𝑎, 好比随机拉动第𝑘个赌博机的臂膀,得到𝑅(𝑠, 𝑎𝑘) 的回报。
 问题:下一次需要拉动那个赌博机的臂膀,才能获得最大回报呢?

多臂赌博机 (multi-armed bandits)
多臂赌博机问题是一种序列决策问题,这种问题需要在利用(exploitation)和探索(exploration) 之间保持平衡。
 利用(exploitation) :保证在过去决策中得到最佳回报
 探索(exploration) :寄希望在未来能够得到更大回报
 如果有𝑘个赌博机,这𝑘个赌博机产生的操作序列为x𝑖,1, 𝑥𝑖,2, … (𝑖 = 1, … , 𝑘)。在时刻𝑡 = 1,2 …,选择第𝐼𝑡个赌博机后,可得到奖赏
,则在𝑛次操作𝐼1, … ,𝐼𝑛后,可如下定义悔值函数:
在这里插入图片描述

 悔值函数:在第𝑡次对赌博机操作时,假设知道哪个赌博机能够给出最大奖赏(虽然在现实生活中这是不存在的),则将得到的最大奖赏减去实际操作第𝐼𝑡个赌博机所得到的奖赏。将𝑛次操作的差值累加起来,就是悔值函数的结果。
 很显然,一个良好的多臂赌博机操作的策略是在不同人进行了多次玩法后,能够让悔值函数的方差最小。
上限置信区间 (Upper Confidence Bound, UCB)
也就是说,在第𝑡时刻,UCB算法一般会选择具有如下最大值的第𝑗个赌博机:
在这里插入图片描述
xഥ𝑗是第𝑗个赌博机在过去时间内所获得的平均奖赏值,𝑛𝑗是在过去时间内拉动第𝑗个赌博机臂膀的总次数,𝑛是过去时间内拉动所有赌博机臂膀的总次数。𝐶 是一个平衡因子,其决定着在选择时偏重探索还是利用。
从这里可看出UCB算法如何在探索-利用(exploration-exploitation)之间寻找平衡:既需要拉动在过去时间内获得最大平均奖赏的赌博机,又希望去选择那些拉动臂膀次数最少的赌博机。
蒙特卡洛树搜索
• 将上限置信区间算法UCB应用于游戏树的搜索方法,在2006年提出
• 包括了四个步骤:选择(selection),扩展(expansion),模拟(simulation),反向传播(Back-Propagation)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
两种策略学习机制:
 搜索树策略: 从已有的搜索树中选择或创建一个叶子结点(即蒙特卡洛中选择和拓展两个步骤).搜索树策略需要在利用和探索之间保持平衡。
 模拟策略:从非叶子结点出发模拟游戏,得到游戏仿真结果。

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

这篇讲得很清楚:https://blog.csdn.net/qq_16137569/article/details/83543641


  • 声明:以上内容除引用外来源于老师上课讲述和PPT内容,未经允许不得转载
  • 4
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
对于数值分析期末复习笔记.docx,下面是我简要的回答。 数值分析是一门研究利用数学方法解决数学问题的学科,重点在于求解数值计算问题以及分析数值计算方法的准确性和稳定性。在课程学习中,我们可以通过掌握一些重要的概念、算法和技巧来提高数值计算的效率和正确性。 在复习笔记中,可以包括以下内容: 1. 数值计算基础知识:涉及数值计算的误差、舍入误差和截断误差的概念以及如何进行误差分析。 2. 插值法:包括拉格朗日插值、牛顿插值和埃尔米特插值等方法,用于根据给定的数据点推断不存在的数据点。 3. 数值微积分:数值积分和数值微分的方法,包括梯形法则、辛普森法则和复合求积法。 4. 方程求解:包括二分法、牛顿迭代法和割线法等求解非线性方程的数值方法。 5. 线性方程组的数值解法:高斯消元法、LU分解法和迭代法(如雅可比法和Gauss-Seidel法)等。 6. 最小二乘拟合:通过最小化残差平方和来拟合一组数据点。 7. 常微分方程的数值解法:如欧拉方法、龙格-库塔法和Adams-Bashforth法等。 此外,还应该重点关注与数值分析相关的数值计算的应用领域,如工程、金融等。 通过复习这些重点内容,可以帮助我们更全面地理解数值分析的基本原理和方法,提高我们解决实际问题的能力。当然,为了更好地复习和掌握数值分析,日常的练习和理解概念也是非常重要的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值