人工智能状态空间搜索策略
5.3 启发式搜索策略
5.3.1 启发信息与估价函数 5.3.2 最佳优先搜索 5.3.3 A*算法
Hale Waihona Puke 要重点掌握的问题用宽度优先搜索和深度优先搜索求解八数 码问题; 用代价树的宽度优先搜索和深度优先搜索 求解推销员旅行问题; 用全局最佳优先搜索八数码问题。
状态空间搜索策略
搜索是人工智能的基本问题,是推理不可 分割的一部分 问题求解就是搜索过程 搜索对应的知识表示法:
计算f(n, mi):=g(n, mi)+h(mi);
A算法(续)
ADD(mj, OPEN), 标记mj到n的指针; IF f(n, mk)<f(mk) THEN f(mk):=f(n, mk), 标记mk到n的指针;
IF f(n, ml)<f(ml,) THEN f(ml):=f(n, ml), 标记ml到n的指针, ADD(ml, OPEN); 7, OPEN中的节点按f值从小到大排序; 8, GO LOOP;
2 8 3 7 1 4 6 5
2 3 1 8 4 I(5) 7 6 5 1 2 3 8 4 7 6 5
6
5
2 3 1 8 4 7 6 5
J(7)
G(6)
H(7)
K(5)
1 2 3 7 8 4 6 5
L(5)
1 2 3 8 4 7 6 5
目标
M(7)
A*条件举例
8数码问题
h1(n) = “不在位”的将牌数 h2(n) = 将牌“不在位”的距离和
A算法
1, 2, 3, 4, 5, 6, OPEN:=(s), f(s):=g(s)+h(s); LOOP: IF OPEN=( ) THEN EXIT(FAIL); n:=FIRST(OPEN); IF GOAL(n) THEN EXIT(SUCCESS); REMOVE(n, OPEN), ADD(n, CLOSED); EXPAND(n) →{mi},
1 2
3 4 5
2 8 3 8 1 6 4 7 5 7 6
将牌1:1 将牌2:1 将牌6:1 将牌8:2
一个A算法的例子
2 8 3 1 6 4 7 5 1 2 8 7 6 3 4 5
定义评价函数: f(n) = g(n) + h(n) g(n)为从初始节点到当前节点的耗散值 h(n)为当前节点“不在位”的将牌数
h计算举例
1 2 2 8 8 1 6 7 3 3 4 5 4 5
7 6
h(n) =4
2 8 3 1 6 4 7 5 2 8 3 1 6 4 7 5
3
s(4)
1
A(6)
2 8 3 1 4 7 6 5 2 3 1 8 4 7 6 5
2
B(4)
4
2 8 3 1 6 4 7 5 2 8 3 1 4 7 6 5
C(6)
2 8 3 1 4 D(5) 7 6 5
E(5)
F(6)
8 3 2 1 4 7 6 5
深度优先搜索
1, G:=G0(G0=s), OPEN:=(s), CLOSED:=( ); 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}, G:=ADD(mi, G); 7, ADD(mj, OPEN), 并标记mj到n的指针; 8, GO LOOP;
状态空间表示法、与/或树表示法
(6)对节点n进行扩展,将它的所有后继节点放入OPEN表的末端, 并为这些后继节点设置指向父节点n的指针,然后转步骤(2)
宽度优先搜索
1, G:=G0(G0=s), OPEN:=(s), CLOSED:=( ); 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}, G:=ADD(mi, G); 7, ADD(OPEN, mj), 并标记mj到n的指针; 8, GO LOOP;
第五章 状态空间搜索策略
第5章 状态空间搜索策略
5.1 搜索的概念及种类 5.2 盲目搜索策略
5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.1.1 搜索的概念 5.1.2 搜索的种类
状态空间图的搜索策略 宽度优先搜索 深度优先搜索 有界深度优先搜索 代价树的宽度优先搜索 代价树的深度优先搜索