3搜索问题-启发式搜索
7. Open中的节点按f 值从小到大排序; 8. GO LOOP;
A算法由一般的图搜索算法改变而成。算法第7步每 次按照f(n)值的大小对Open表中的元素进行排序, f(n)值小的节点排在前面,而f(n)值大的节点则放在 Open表的后面,这样每次扩展节点时,都选择当前 f(n)值最小的节点来优先扩展。
性确定,h(x)称为启发式函数。
g*(n):从s到n的最短路径的耗散值 h*(n):从n到g的最短路径的耗散值 f*(n)=g*(n)+h*(n):从s经过n到g的最短路径的
耗散值
g(n)、h(n)、f(n)分别是g*(n)、h*(n)、f*(n)的估 计值
开始
算法
把S放入OPEN表, 计算估价函数 f (s)
据具体问题分析
利用知识来引导搜索,达到减少搜索范围,降低问 题复杂度的目的。
启发信息的强度
◦ 强:降低搜索工作量,但可能导致找不到最优解
◦ 弱:一般导致工作量加大,极限情况下变为盲目搜索,但 可能可以找到最优解
引入启发知识,在保证找到最佳解的情况下,尽可 能减少搜索范围,提高搜索效率。
OPEN表
节点 父节点编号 f(n)=g(n)+h(n)
S0
4
0+4
S1 0
6
1+5
S2 0
4
1+3
S3 0
6
1+5
S4 1
5
2 +3
S5 1
5
2+3
S6 1
6
2+4
S7 2
6
3+3
S8 2
7
3+4
S9 3
5
3 +2
S10 3
7
3+4
S11 4
在搜索过程中除了需要计算初始节点的评估函数 外,更多的是需要计算新生节点的评估函数。
123 283 81 6 4 4 7 55
76
w(n) =4
283 164 7 5 S0
123 84 7 6 5 Sg
283 164
7 5 S1
283 14 7 6 5 S2
283 164 7 5 S3
283 14
评价函数,也称为启发函数提供问题的启发性信息, 按其用途划分,可分为以下三类:
◦ 用于扩展节点的选择,即用于决定应先扩展哪一个节点, 以免盲目扩展
◦ 用于生成节点的选择,即用于决定应生成哪些后续节点, 以免盲目地生成过多无用节点
◦ 用于删除节点的选择,即用于决定应删除哪些无用节点, 以免造成进一步的时空浪费
OPEN表为空表?
是
否 选取OPEN表中f值最小的节点i放入CLOSED表
i为目标节点吗?
是
否
扩展i,得后继节点j,计算f(j),提供返回 节点i的指针,利用f(j)对OPEN表重新排
序,调整亲子关系及指针
失败 成功
有序搜索算法框图
1. Open:=(s),f(s):=g(s)+h(s); 2. LOOP: IF Open=( ) THEN EXIT(FAIL); 3. n:=FIRST(OPEN); 4. IF GOAL (n) THEN EXIT(SUCCESS); 5. REMOVE (n, Open), ADD(n, Closed); 6. EXPAND(n)→ (mi),把mi作为n的后继节点添入G,计算
f(n→mi)=g(n→mi)+h(mi);
◦ 6-1) ADD(mj, Open); ◦ 6-2) IF f(n→mk) <f(mk) THEN f(mk):=f(n→mk); ◦ 6-3) IF f(n→ml) < f(ml) THEN f(ml):=f(n→ml); ADD(ml,Open);
定义评价函数:
f(x)=d(x)+w(x)
d(x)表示节点在x搜索树中的深度,
w(x)表示节点x中不在目标状态中相应位置的数码 个数,w(x)就包含了问题的启发式信息。
一般来说某节点的w(x)越大,即“不在目标位” 对初始节点S0,由于d(S0)=0, w(S0)=5,因此f(S0)=5。
A算法是按f(n)递增的顺序来排列Open表中节点的, 因而优先扩展f(n)值小的节点,体现了好的优先搜索 的思想,所以算法A是一个好的优先搜索策略。
s
f(n) n
扩展n后新生成的子节点m1({mj}) 、 m2({mk}) 、m3({ml})分别计算评 价函数值:
f(m3)
m3
f(m31)
定义一个评价函数f,对当前的搜索状态进行评估, 找出一个最有希望的节点来扩展。
评价函数的格式:
f(n) = g(n) + h(n)
f(n):评价函数 h(n):启发函数
g(x)——从初始节点S0到节点x的实际代价; h(x)——从x到目标节点Sg的最优路径的评估代价,
它体现了问题的启发式信息,其形式要根据问题的特
7 6 5 S4
23 184 7 6 5 S5
283 14 7 6 5 S6
83 214 765
S7
283 714
65 S8
23 184 765
S9
123 84
7 6 5 S11
23 184 765
S10
123 84 765
S12
123 784
65 S13
由CLOSED表可知,解路径为S0-S2-S5-S9-S11-S12
1
启发式搜索,也称为有信息搜索,借助问题的特定 知识来帮助选择搜索方向
在搜索过程中对待扩展的每一个节点进行评估,得 到最好的位置,再从这个位置进行搜索直到目标。
启发式搜索的目的是省略大量无谓的搜索路径,提 到效率。
在启发式搜索中,对节点的评价是十分重要的,评 价函数是搜索成败的关键。
m31
f(m1)
m1
f(m32)
m32
图2-12 搜索示意图
f(m1)=g(m1)+h(m1) f(m2) m2 f(n,m2)=g(n,m2)+h(m2)
f(n,m3)=g(n,m3)+h(m3)
按第6步比较不同路径的耗散值并 进行相应的指针修正.
283 164 75
123 84 765
一个节点n的评价函数的构造通常由两部分构成 ◦ 从初始节点到当前节点n的路径耗散 g(n) ◦ 从当前节点n到目标节点的期望耗散 h(n)
即:评价函数可表示为:
f (n) g(n) h(n)
这两部分里, g(n) 通常是比较明确的,容易得到 而 h(n) 难以构造,也没有固定的模式,需要根