人工智能期末复习--搜索问题求解

1956达特茅斯会议首次提出了人工智能Artificial  Intelligence)让机器能像人那样认知、思考和学习, 即用计算机模拟人的智能

图灵测试:

怎么判断机器有没有智慧   ——基于行为的测试

让一个人在某一房间里,把计算机配置在另一房间里内。现在把双方都作为“人”来对待,如果在书面交谈中不能分辨出哪一个是人,哪一个是计算机,那么就可以说这台计算机是智能的(Intelligent)

要采取的正确动作不是很明显时,智能体需要提前规划。

 问题求解智能体:提前规划:考虑一个形成通往目标状态路径的动作序列。

搜索:它所进行的计算过程。

搜索问题的形式化:

o 状态空间: 可能的环境 状态 集合
o 初始 状态(initial state):一 个或多个 目标 状态 (goal state) 集合
o 智能体可以采取的 行动 (action), Actions(Arad) ={ }
o 转移模型 (transition model), 每个动作所起到的作用 Result(s, a)
o 动作代价函数 (action cost function)
o 在状态 s 中执行动作 a 从而转移到状态 s’ 的数值代价 Action-Cost (s, a, s’ )
o 路径( path )
o 一个动作序列
o :是一个行动序列(路径),从初始状态到某个目标状态的路径。
o 一条路径的 总代价 :各个动作代价的总和。

最优解:所有解中路径代价最小的解

o 8数码问题: 3×3的网格,8个带编号的滑块和一个空格 
o 状态:指定每个滑块位置的状态描述  
o 状态数:9!(九个位置的全排列)
o 动作 空格左、右、上、下移动
o 转移模型、目标状态
o 动作代价: 每个动作的代价都为 1 ,整个路径的值为路径中的步数
o World state (世界状态):   120x(2^ 30 )x(12^ 2 )x4
o Agent positions (智能体位置) : 120
o Food count (豆豆数) : 30
o Ghost positions 幽灵位置 : 12
o Agent facing (方向) : NSEW
o States for pathing? (路径状态) 120
o States for eat-all-dots? (吃完豆豆状态)  120x(2^ 30)

世界状态包括环境的每一个细节

搜索状态只保留规划(抽象)所需的详细信息。

针对不同的问题,关注的信息不同,状态模型也不同,转移模型也不同,目标也不同。

Problem: Pathing(寻路

状态: (x,y) location/位置

行动: NSEW/东南西北

转移模型: update location only/只更新位置

目标: is (x,y)=END是否到达目标位置?

 Eat-All-Dots(吃豆)

状态: {(x,y), dot booleans}

行动: NSEW

转移模型: update location and possibly a dot boolean

目标: dots all false。所有豆豆的布尔值为false

搜索算法(search algorithm):

将搜索问题作为输入并返回问题的解或报告无解

状态空间图:

搜索问题的数学表示
o 节点( Node ) :状态空间中的一个状态
o 弧( Arc ) 表示后续(动作结果)
o 目标 节点 ( The goal test ) / 组目标节点
o 在搜索图中,每个状态只发生一次!

搜索树算法:

从初始状态形成各条路径,并试图找到一条可以到达某个目标状态的路径。
o 树的根:初始状态
o 目标状态
o 路径:从初始状态到目标状态
o 节点:状态空间中的一个状态
o 边:动作
我们按需建造两者,并且尽可能少地建造。
搜索树中的每个 叶子节点NODE 都是状态空间图中的整个 PATH。

当状态空间图中出现环时,搜索树会出现很多冗余,会有一直到不了终止节点的情况,就会导致搜索树无穷大。

搜索的本质

先跟踪一个选项再考虑其他选项,选择先扩展一个节点,得到未被扩展的节点,也就是搜索树的边界节点(已达状态)。

搜索树的边界(frontier):待扩展叶子节点的集合

o 分离了状态空间图的
o 内部区域: 每个状态都已被扩展
o 外部区域: 尚未到达的状态

o最佳优先搜索:选择使得某个评价函数f(n)的值最小的节点n 

问题求解性能评估

完备性 c ompleteness : 存在解时,算法是否能保证找到解,当不存在解时,是否能保证报告失败?(将搜索问题作为输入并返回问题的解或报告无解。
代价最优性 cost o ptimality
时间复杂度Time complexity 【用时间或状态和动作的数量来衡量】
空间复杂度 Space complexity

b is the branching factor/分支因子(每个节点最大的分支数目

m is the maximum depth/最大深度

is the depth of shallowest solution/最浅层解的深度

   树的节点数:1 + b + b^2 + …. b^m = O(b^m)

 无信息搜索策略(BFS、UCS、DFS)

BFS广度优先搜索:the shortest path最短路径

首先扩展最浅层的节点。FIFO

d: 最浅层解的深度

时间复杂度 O(b^d)

O(b^d) =1+b+b^2+b^3 ……+b^d

空间复杂度:O(b^d)

最优性:所有动作代价相同时最优,否则不一定。

完备性:b有限,且状态空间要么有解要么有限.

l 当问题有解时,一定能找到解
l 搜索 效率 较低( 指数增长
l 方法与问题无关,具有通用性
l 代价相同时,搜索得到的解是搜索树中 路径最短 的解 (最优解)
l 属于 完备 搜索策略

 

 UCS一致代价搜索the least-cost path最小代价

首先扩展代价最小的节点

优先级队列(优先级:累积成本,成本从根节点出发开始计算)如果动作(步骤)代价相等,则相当于宽度优先

在宽度优先搜索的基础上找代价最小。

评价函数f(n):从根到当前节点n的路径代价

C* :最优解的代价

e每个动作代价的下界,e >0

有效深度:1+[C*/e]向下取整

时间复杂度 O(b^(1+[C*/e]))

空间复杂度O(b^(1+[C*/e]))

空间复杂度、时间复杂度其实都是取决于我们扩展树的深度

优点:

完备、最优:b有限,且状态空间要么有解要么有限。如果算法所有动作的代价都大于等于e>0,则是完备的。

UCS 搜索代价递增,系统考虑所有路径:找到的第一个解的代价至少与边界上任何其他节点的代价一样小

缺点:

在每一个“方向”上进行探索,没有关于目标位置的信息。

DFS深度优先搜索

优先扩展边界中最深的节点,后进先出

时间复杂度:O(b^m)不如BFS和UCS。

空间复杂度:O(bm)

完备性:否。有环状态空间,陷入无限循环 (搜索树无法到达叶子节点)

无限状态空间,也可能陷入无限路径。但对树形有限状态空间是完备的

最优性:否。返回找到的第一个解(未必是最优)直接到达搜索树的最深层,然后,搜索将“回退”到下一个仍存在未扩展后继节点的最深的节点。

l 一般不能保证找到最优解
l 最坏情况时,搜索空间等同于穷举
l 是一个通用的与问题无关的方法

 

何时 BFS 优于 DFS?

当节点比较浅层的时候Solutions not too far down.

何时 DFS 优于 BFS?

节点在底层时need to get to the bottom.

为了解决深度优先搜索不完备问题,避免搜索过程陷入无穷分支的死循环,提出了

有界深度优先搜索方法

连着的两步,不会考虑把上面一步移回去的分支(那样树将陷入循环)。

迭代加深搜索(iterative deepening search)

DFS 空间优势 + BFS 时间优势:一层一层的增加limit类似于广度优先,然后再在每个limit里面实行深度优先搜索。

确定最好的深度界限l。大多在浅层即可搜索成功!

不断的迭代,加深,Run a DFS with depth limit 1.  If no solution…Run a DFS with depth limit 2.  If no solution…不断加深limit1.

时间复杂度:O(b^d)

空间复杂度:O(bd)

有信息(启发式)搜索策略

Search Heuristics(启发式搜索)

启发式:估计一个状态离目标有多近的函数(曼哈顿距离、欧式距离)

绿色的线为欧式距离的丈量长度,红色的线即为曼哈顿距离长度,蓝色和黄色的线是这两点间曼哈顿距离的等价长度。欧式距离是两点之间的直线距离,曼哈顿距离是不能斜着的距离。

启发式函数(heuristic functionh(n):从结点n的状态到目标状态的最小代价路径的代价估计值

greedy best-first search/贪心最佳优先搜索

评价函数(evaluation functionf(n):从当前节点𝒏出发,根据评价函数来选择后续结点。

启发式函数(heuristic functionh(n):从结点𝒏的状态到目标状态的最小代价路径的代价估计值,这里将两点之间的直线距离(欧氏距离)作为启发式函数。

评价函数f(n)=启发函数h(n)

A* Search/ A* 搜索:

 每次都在待扩展的所有节点里面选择f(n)最小的

g(n)表示从初始状态节点n的路径代价,

h(n)表示从结点n到一个目标状态最短路径的代价估计值

f(n)表示f(n)  表示初始状态经过结点𝒏 一个目标状态最优路径的代价估计值。后半段都是估计。

只有正确路径的f(n)始终不变。

A*什么时候终止?

入队不结束,出队    结束!

注意:启发式函数应该比实际值低,不然会得到错误的结果。可容许性的引入,可以保证启发式函数比实际值低。

可容许性

容许乐观的启发式:永远不会高估到达某个目标的代价

对于可容许的启发式函数h(n)A*是代价最优的。

一致性:

预估的启发函数值 ≤ 到目标的实际值

可容许性: h(A) actual cost from A to G

一致性:h(A) – h(C) cost(A to C)满足三角不等式的约束

满足一致性,可容许性,A* 图搜索是最优的

反证法:

假设最优路径的代价为C*,该算法返回的路径代价为C >C*  (即算法返回次优路径)那么最优路径上一定存在某个未扩展的节点n 。如果最优路径上的所有节点都已被扩展,则算法返回的将是这个最优解

g*(n)表示从起点到n的最优路径的代价

h*(n)表示n到最近目标的最优路径代价

性质:

一致代价搜索UCS在所有“方向”上等可能的扩展,A*搜索主要朝着目标扩展,而且能够保证最优性。

A*算法的搜索效率很大程度上取决于启发函数h(n)。 一般来说,在满足h(n)≤h*(n)的前提下, h(n)的值越大, 说明它携带的启发性信息越多, A*算法搜索时扩展的节点就越少, 搜索效率就越高。 A*算法的这一特性被称为最优性。启发函数估计的越精准,则算法越好。

可容的启发式下,A*是最优的。

小结:

Uniform-cost orders by path cost(路径代价), or cost  g(n)。UCS要求路径代价最小。

Greedy orders by goal proximity(目标最近估计), or cost  h(n)。贪心搜索要求距离目标最近。

A*Search orders by the sum: f(n) = g(n) + h(n)。综合考虑路径代价和到目标状态的最短路径。、

以上所有算法,都只有一个智能体在搜索。

对抗搜索和博弈

对抗搜索(Adversarial Search)也称为博弈搜索(Game Search)

在一个竞争环境(Competitive Environment)中,两个或两个以上的智能体(agents)之间通过竞争实现相反的利益,一方最大化这个利益,另外一方最小化这个利益。

定义最优移动并寻找最优移动的算法——极小化极大搜索(minimax Search)。 剪枝(pruning)通过忽略搜索树中对最优移动没有影响的部分来提高搜索效率。

极小化极大搜索算法

状态的值: 从该状态可达的 最佳结果(效用)

        非终止状态: V(s) =  max V(s’)

        终止状态: V(s) = known

在博弈树中,那些下一步该MAX走步的节点称为MAX 节点(类似于或节点),下一步该MIN走步的节点称为MIN 节点(类似于与节点)。

MAX nodes: 智能体控制下 V(s) =      max V(s’)

MIN nodes: 对手控制下V(s) =      min V(s’)

s'是s的后继节点,successor。

对叶节点的估值方法是:那些对MAX有利的节点,其估价函数取正值;那些对MIN有利的节点,其估价函数取负值;那些使双方均等的节点,其估价函数取接近于0的值。   对非叶节点的值,必须从叶节点开始向上倒推。其倒推方法是:   对于MAX节点,由于MAX 方总是选择估值最大的走步,因此, MAX节点的倒推值应取其后继节点估值的最大值。   对于MIN节点,由于MIN方总是选择估值最小的走步, 因此,MIN 节点的倒推值应取其后继节点估值的最小值   这样一步一步的计算倒推值,直至求出初始节点的倒推值为止。   这一过程称为极小化极大值过程。

单数层是MAX,双数层是MIN

最优移动是指,在假定对手移动是为了使效用值最小的前提下,使终止状态效用值最大的移动。使坏的情况不那么坏。

性质:

在假定对手移动是为了使效用值最小的前提下,使终止状态效用值最大的移动。使坏的情况不那么坏。

类似(穷举的)深度优先搜索。

时间复杂度: O(b^m)     【b为最大分支因子】

空间复杂度: O(bm)    【m为树的深度】

α-β 剪枝

α-β剪枝搜索算法在Minimax算法中可减少被搜索的节点数,即在保证得到与原Minimax算法同样的搜索结果时,剪去了不影响最终结果的搜索分枝。

生成的顺序很重要: 如果先产生好的动作,可以进行更多的剪枝。

minimax(root) =max(min(3,12,8),min(2,x,y),min(14,5,2)) =max(3,min(2,x,y),2) min(2,x,y)≤2 =3            决策与叶节点x和y的值无关,这里x,y就被剪枝

剪枝一般情况

(1) MAX节点(或节点)的α值为当前子节点的最大倒推值;  α=到目前为止,路径上发现的MAX的最佳(最大值)选择值,  α=“至少”  【初始值为-∞】范围为( α,+无穷)

 (2) MIN节点(与节点)的β值为当前子节点的最小倒推值;  β=到目前为止,路径上发现的MIN的最佳(最小值)选择值,  β=“至多”【初始值为+∞】。范围改为(-无穷,β)

D节点的min没有小于3,所以它有可能被选,所以需要继续探索。

在奇数层找最大结果,在偶数层找最小结果

性质

高度依赖于移动的顺序

最坏的情况:没有剪枝 O(b^m)

最好的情况:始终首先检查最佳的移动 仍然需要检查第一名玩家的每一个动作 只需要检查第二名玩家的一个动作     O(b∙1∙b∙1⋯)=O(b^m/2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐果然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值