人工智能一般搜索算法原理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

人工智能讲义
3
3
一些基本概念(续1)
• 路径
设一节点序列为(n0, n1,…,nk),对于 i=1,…,k,若节点ni-1具有一个后继节点ni, 则该序列称为从n0到nk的路径。 • 路径的耗散值
一条路径的耗散值等于连接这条路径各节
点间所有耗散值的总和。用C(ni, nj)表示从
ni到nj的路径的耗散值。
8
283 714
65
a
28 143 765
23 184 765
d
123 84
765
b
283 145 76
123 784
65
12 3 84 7 65
283 64
211.11.720250
283 16 754
83 214 765
283 2 8 714 143 人6 工智5能讲义7 6 5
283 145 76
第三章 一般搜索原理
• 盲目搜索 • 启发式搜索 • 归结原理
21.11.2020
人工智能讲义
1
盲目搜索
• 图搜索策略 • 深度优先搜索 • 宽度优先搜索 • 等代价搜索
21.11.2020
人工智能讲义
2
一些基本概念
• 节点深度: 根节点深度=0 其它节点深度=父节点深度+1
0
1
2
21.11.2020
21.11.2020
人工智能讲义
12
宽度优先搜索算法
1, G=G0(G0=s), OPEN=(s), CLOSED=( ); 2, LOOP: IF OPEN=( ) EXIT (FAIL); 3, n=FIRST(OPEN); 4, IF GOAL(n) EXIT (SUCCESS); 5, REMOVE(n, OPEN), ADD(n, CLOSED); 6, EXPAND(n) →{mi}, G=ADD(mi, G); 7, IF 目标在{mi}中 THEN EXIT(SUCCESS); 8, ADD(OPEN, mj), 并标记mj到n的指针; 9, GO LOOP;
9, ADD(mj, OPEN), 并标记mj到n的指针;
10, GO LOOP;
21.11.2020
人工智能讲义
9
4
283 164
75
1
23 184 765
3
283 164 75
2
283 14 765
6
283 14
765
c
23 184 765
9
283 14 765
5
283 164 75
7
83 214 765
人工智能讲义
15
等代价搜索
• 宽度优先搜索可被推广用来解决寻找从起 始节点到目标节点具有最小代价路径问题, 这种推广了的宽度优先搜索算法叫做等代 价搜索算法。
21.11.2020
人工智能讲义
16
等代价搜索算法
• 算法
1,G=G0(G0=s), OPEN=(s), CLOSED=( ),g(s)=0; 2, LOOP: IF OPEN=( ) EXIT (FAIL); 3, 从OPEN表中选择一个节点i,使其g(i)为最小。如果有几个节点都合格
21.11.2020
人工智能讲义
13
5
283 164 75
2
283 14 765
6
283 14
765
1
23 184 765
3
23 184 765
7
283 14 765
4
23 184 765
8
123 84
765
234 18 765
283 164
75
283 164 75
83 214 765
283 714
3, LOOP: IF OPEN=( ) EXIT(FAIL);
4, n=FIRST(OPEN), REMOVE(n, OPEN),
ADD(n, CLOSED);
5, IF GOAL(n) EXIT(SUCCESS);
6, EXPAND(n)→{mi}, G=ADD(mi, G);
21.11.2020
人工智能源自文库义
6
一般的图搜索算法(续)
7, 标记和修改指针:
ADD(mj, OPEN), 并标记mj到n的指针;
计算是否要修改mk、ml到n的指针;
计算是否要修改ml到其后继节点的指针;
8, 对OPEN中的节点按某种原则重新排序 ;
9, GO LOOP;
21.11.2020
人工智能讲义
7
深度优先搜索
目标
10
深度优先搜索的性质
• 一般不能保证找到最优解 • 当深度限制不合理时,可能找不到解,可
以将算法改为可变深度限制 • 最坏情况时,搜索空间等同于穷举 • 与回溯法的差别:图搜索 • 是一个通用的与问题无关的方法
21.11.2020
人工智能讲义
11
宽度优先搜索
• 如果搜索是以接近起始节点的程度依次 扩展节点的,那么这种搜索就叫做宽度 优先搜索。这种搜索使逐层进行的,在 对下一层的任意节点进行搜索之前,必 须搜索完本层的所有节点。“先产生的 节点先扩展”
65
28 143 765
283 145 76
123 784
65
12 3 84 7 65
21.11.2020
人工智能讲义
目标
14
宽度优先搜索的性质
• 当问题有解时,一定能找到解 • 当问题为单位耗散值,且问题有解时,一
定能找到最优解 • 方法与问题无关,具有通用性 • 效率较低 • 属于图搜索方法
21.11.2020
3, n=FIRST(OPEN);
4, IF GOAL(n) EXIT (SUCCESS);
5, REMOVE(n, OPEN), ADD(n, CLOSED);
6, IF DEPTH(n)≥Dm GO LOOP;
7, EXPAND(n) →{mi}, G=ADD(mi, G);
8, IF 目标在{mi}中 THEN EXIT(SUCCESS);
21.11.2020
人工智能讲义
4
一些基本概念(续1)
• 扩展一个节点 生成出该节点的所有后继节点,并给出它 们之间的耗散值。这一过程称为“扩展一 个节点”。
21.11.2020
人工智能讲义
5
一般的图搜索算法 (GRAPHSEARCH)
1, G=G0 (G0=s), OPEN=(s);
2, CLOSED=( );
,那么就要选择一个目标节点作为i(要是有目标节点的话);否则,就 从中选一个作为节点I; REMOVE(i, OPEN), ADD(i, CLOSED); 4, IF GOAL(i) EXIT (SUCCESS); 5, EXPAND(i) →{j}, G=ADD(j, G); 6, 对每个后继节点j,计算g(j)=g(i)+c(i,j)且ADD(OPEN, j), 并标记j到i的指 针; 7, GO LOOP;
• 在深度优先搜索中,首先扩展最新 产生的(最深的)节点,深度 相等的 节点可以任意排列。“最晚产生的 节点最先扩展”
21.11.2020
人工智能讲义
8
深度优先搜索算法
1, G=G0(G0=s), OPEN=(s), CLOSED=( );
2, LOOP: IF OPEN=( ) EXIT (FAIL);
相关文档
最新文档