人智导(二):启发式搜索

人智导(二):启发式搜索

概述:Best-First搜索

人智导(二):启发式搜索_第1张图片
启发式搜索算法本质上都是Best-First搜索,当然,无信息搜索也是一种Best-First搜索,只不过衡量Best的标准不同。启发式搜索算法中,衡量Best的标准是基于评价函数(启发式函数)的。
基本思路:

  • 后继状态中,具有"best"期望值的状态首先选择并继续扩展
  • best这里指的是期望代价度量,而非实际代价度量。精确与否取决于启发函数的质量
    算法:
Function Best-First-Search(problem, EVAL-FN) returns a solution sequence
input: problem: a problem EVAL-FN: an evalution function
	Queuing-FN <--- a function that orders nodes by EVAL-FN
	return General-Search(problem, Queueing-FN)

贪心搜索(Greedy Search)

  • 一种最简单的best-first搜索策略(最小化到达目标状态的期望代价)
  • 预估离目标状态最接近的节点总是被先扩展
  • 启发式函数 h h h: h ( n ) = h(n)= h(n)=从状态 n n n到目标状态的最少路径的期望代价
  • 搜索过程中,到达目标状态的路径代价是预估的,而不是真实而准确的
    算法:
Function Greedy-Search(problem) returns a solution or failure
return Best-First-Search(problem, h)
  • n n n为目标状态, h ( n ) = 0 h(n)=0 h(n)=0
  • 一般来说, h h h可以为任何形式的函数
  • 启发式函数依赖于问题相关的背景知识

举例:

人智导(二):启发式搜索_第2张图片
特点:

  • 与深度优先算法类似
  • 不完备,不最优
  • 时间与空间复杂度:最坏情况下 O ( b m ) O(b^m) O(bm),但好的启发式可以大幅度改善性能

A*搜索

人智导(二):启发式搜索_第3张图片
思路:
避免扩展已经是最高代价的路径
原理:
组合两种函数:
f ( n ) = g ( n ) + h ( n ) f(n) = g(n) + h(n) f(n)=g(n)+h(n)
其中:

  • h ( n ) h(n) h(n):从状态n到目标状态的预估(期望)代价(由贪心搜索得到)
  • g ( n ) g(n) g(n):从初始状态到当前状态n的实际路径代价(由最少路径代价搜索给出)
  • f ( n ) f(n) f(n):通过状态n节点的整体路径代价

寻找最佳的解,最小化 g ( n ) + h ( n ) g(n)+h(n) g(n)+h(n)是合理的
A*搜索是完备的和最优的前提:”可接受的“启发式(admissible heuristic)
h ( n ) ≤ h ∗ ( n ) h(n)\le h^*(n) h(n)h(n),其中 h ∗ ( n ) h^*(n) h(n)是真实的代价
h ( n ) h(n) h(n)是可接受的:预估的不可以过于夸大
A*搜索:约束搜索

  • A*搜索始终是在朝向最优解的范围内进行
  • A*扩展所有的满足 f ( n ) < f ∗ f(n)f(n)<f的节点( f ∗ f* f是最优路径的代价)
  • f ( n ) f(n) f(n)单调递增:一步步地扩展
  • 扩展到目标节点, f = g f=g f=g恰为实际距离且 h = 0 h=0 h=0

算法:

Function A*-Search(problem) returns a solution or failure
	return Best-First-Search(problem, g+h)

特点:

  • 完备的
  • 最优的
  • 空间复杂度:所有产生的节点都驻留内存,好的启发式大大减小空间
  • 时间复杂度:不适合的启发式 h h h导致复杂度指数性增长

IDA*搜索:空间限定的搜索

引入:

  • 空间复杂度:搜索技术的第一限定要素
  • 迭代深度方法:减少内存空间需求的实用技术
  • IDA*搜索:迭代深度的A*搜索算法:迭代深度修改为使用f-cost限制(单调递增,一步步扩展),而非深度限制

启发式函数:
启发式的质量:取决于搜索过程中分支数b的控制
比如对于某一问题而言:
N:A*搜索产生的全部节点数目
d:问题解决途径的深度
b:分支数目
那么
N = b + b 2 + ⋯ + b d N=b+b^2+\dots +b^d N=b+b2++bd
例如:
若解决途径的深度为5,全部扩展节点数量为52,计算可得分支数b=1.92
一个好的启发式函数:b应当尽可能接近于1
示例:八数码问题
人智导(二):启发式搜索_第4张图片
人智导(二):启发式搜索_第5张图片
那么,如何构建合适的启发式函数?
松弛原则(relaxation):降低问题的约束条件
问题经过”松弛”后的代价,即是原始问题的一个“可接受的”启发式
原始问题(以八数码问题为例):
A tile can move from square A to square B if A is horizontally or vertically adjacent to B and B is blank
松弛条件后:
(1) A tile can move from square A to square B if A adjacent to B
(2) A tile can move from square A to square B if B is blank
(3) A tile can move from square A to square B

构造启发式的特征及其选择:

  • 状态的特征:对于预估/预测是关键的因素
  • 八数码问题:
    • 特征x_1:不在目标位置的数码快数量
    • 特征x_2:邻近目标位置的数码快数量
    • 特征x_n:。。。
  • 启发式函数形式: h = f ( x 1 , x 2 , … x n ) h = f(x_1,x_2,\dots x_n) h=f(x1,x2,xn)
    如何确定这个函数?一个可行的方法是线性回归
    线性回归:
    Y = α + β X Y=\alpha +\beta X Y=α+βX
  • X X X:特征变量
  • Y Y Y:预测变量
  • α \alpha α, β \beta β为系数,可通过最小二乘法获得
    给定一系列实例(x_1,y_1),…,(x_s,y_s),则
    β = Σ i = 1 s ( x i − x ‾ ) ( y i − y ‾ ) Σ i = 1 s ( x i − x ‾ ) 2 \beta = \frac{\Sigma^s_{i=1}(x_i-\overline{x})(y_i-\overline{y})}{\Sigma^s_{i=1}(x_i-\overline{x})^2} β=Σi=1s(xix)2Σi=1s(xix)(yiy)
    α = y ‾ − β x ‾ \alpha = \overline{y}-\beta \overline{x} α=yβx
    其中:
  • x ‾ \overline{x} x:x_1,…,x_s的平均值
  • y ‾ \overline{y} y:y_1,…,y_s的平均值
    多元回归与非线性回归
  • 多元回归:有多个特征变量x_1,…,x_n情况 Y = b 0 + b 1 X 1 + ⋯ + b n X n Y = b_0+b_1X_1+\dots +b_nX_n Y=b0+b1X1++bnXn
  • 非线性回归:可以转换为多项式回归
    • 例如三次多项式 Y = α + β 1 X + β 2 X 2 + β 3 X 3 Y = \alpha +\beta_1X+\beta_2X^2+\beta_3X^3 Y=α+β1X+β2X2+β3X3其中可以令 X 1 = X X_1=X X1=X, X 2 = X 2 X_2=X^2 X2=X2, X 3 = X 3 X_3=X^3 X3=X3

搜索算法总结

  • 搜索: 问题求解(p g) roblem solving)中发现动作序列的过程
  • 问题(problem)形式化表示:初始状态 (initial state)、后继(successor)函数、
    目标测试( l t t) (goal test)、代价( t) cos 函数
  • 解决途径(solution): 状态空间中从初始状态到目标状态一个路径
  • 搜索的通用框架: 形式化的问题作为输入, 算法返回解决途径(solution), 即动作序列
    不同 搜 策略(算法),体现在不同 队列 的搜索策略(算法),体现在不同的队列函数(q g ueuin function)
  • 搜索策略性能评价: 完备性、最优性、时间复杂性和空间复杂性
  • 无信息搜索策略/算法: 广度优先搜索 最少路径代价搜索 深度优先搜索 限定 广度优先搜索、最少路径代价搜索、深度优先搜索、限定
    深度搜索、深度迭代搜索
  • 启发式搜索: 使用启发式函数减少搜索代价 使用启发式函数减少搜索代价(最小代价节点有限扩展 最小代价节点有限扩展)
  • 贪心搜索算法: 到达目标状态的预估代价最小化原则(算法既不最优也不完备)
  • A* 搜索算法: 组合了最少路径代价搜索和贪心搜索算法的优势(算法是完备和最
    优的,但空间复杂性仍不可控)
  • 空间限定的启发式搜索算法: IDA*
  • AI通用技术的目标: 构建能够自主寻找途径解决各类问题的智能体。

你可能感兴趣的:(数学与逻辑)