图搜索—图搜索策略
搜索的基本概念
搜索的基本概念
梵塔问题(Tower of Hanoi Problen)
2019/9/18
合肥工业大学人工智能与数据 挖掘研究室
10/123
搜索的基本概念
解: (1)问题分析:对此问题直接求解的困难在于状态太大,因此,要把全部
的状态空间图都显示出来是不可能的。但是,我们可以这样来考虑:①此 问题是否有解?②若问题有解,则解的形式如何?能否找到解的规律? (2)从简单情况入手讨论:可把全部金片的数目n称为梵塔问题的阶。人们 可以先从n=2这种简单的二阶梵塔问题来开始讨论。
与/或树:如果问题状态空间既有或结构,又有与结构的复合关 系,就得到了与/或混合树,简称与/或树。若把前面所研究 的搜索策略再应用于与/或树,自然也就形成了与/或树全部 的搜索策略了。
2019/9/18
搜索的基本概念
S0
S1
S2
S11
S12
S21
S22
S111 S112 S113 S121 S122 S211 S212 S221 S222
归约问题描述:
– 一个初始问题的描述。 – 一套把问题变换成子问题的操作符。 – 一套本原问题的描述。
2019/9/18
搜索的基本概念
例2-3 三阶梵塔问题
2019/9/18
搜索的基本概念
例2-3 三阶梵塔问题 归约过程: (1)移动圆盘A、B至柱子2的双圆盘移动问题。 (2)移动圆盘C至柱子3的单圆盘移动问题。 (3)移动圆盘A、B至柱子3的双圆盘移动问题。
问题的状态空间可用一个三元序组来表示: 〈S,F,G〉
S是初始状态集;F是操作的集合;而G为目标状态集。
搜索的基本概念
问题的求解就转化为从状态空间图的初始状态S0出发,搜 索寻取目标状态Sg的路径问题。搜索过程所得到的操作序列就 反映了问题的解路径。故搜索求解的过程可简洁地表示为:
第3章-图搜索与问题求解作业讲解
第3章作业题参考答案2.综述图搜索的方式和策略。
答:用计算机来实现图的搜索,有两种最基本的方式:树式搜索和线式搜索。
树式搜索就是在搜索过程中记录所经过的所有节点和边。
线式搜索就是在搜索过程中只记录那些当前认为是处在所找路径上的节点和边。
线式搜索的基本方式又可分为不回溯和可回溯的的两种。
图搜索的策略可分为:盲目搜索和启发式搜索。
盲目搜索就是无向导的搜索。
树式盲目搜索就是穷举式搜索。
而线式盲目搜索,对于不回溯的就是随机碰撞式搜索,对于回溯的则也是穷举式搜索。
启发式搜索则是利用“启发性信息”引导的搜索。
启发式搜索又可分为许多不同的策略,如全局择优、局部择优、最佳图搜索等。
5.(供参考)解:引入一个三元组(q0,q1,q2)来描述总状态,开状态为0,关状态为1,全部可能的状态为:Q0=(0,0,0) ; Q1=(0,0,1); Q2=(0,1,0)Q3=(0,1,1) ; Q4=(1,0,0); Q5=(1,0,1)Q6=(1,1,0) ; Q7=(1,1,1)。
翻动琴键的操作抽象为改变上述状态的算子,即F={a, b, c}a:把第一个琴键q0翻转一次b:把第二个琴键q1翻转一次c:把第三个琴键q2翻转一次问题的状态空间为<{Q5},{Q0 Q7}, {a, b, c}>问题的状态空间图如下页所示:从状态空间图,我们可以找到Q5到Q7为3的两条路径,而找不到Q5到Q0为3的路径,因此,初始状态“关、开、关”连按三次琴键后只会出现“关、关、关”的状态。
6.解:用四元组(f 、w 、s 、g)表示状态, f 代表农夫,w 代表狼,s 代表羊,g 代表菜,其中每个元素都可为0或1,用0表示在左岸,用1表示在右岸 。
初始状态S0:(0,0,0,0) 目标状态:(1,1,1,1) 不合法的状态:(1,0,0,*),(1,*,0,0),(0,1,1,*),(0,*,1,1)操作集F={P1,P2,P3,P4,Q1,Q2,Q3,Q4}(0,0,0)(1,0,1)(0,0,1) (0,1,0)(1,1,0)(1,0,0)(0,1,0)(1,1,1)acabacabcbbc方案有两种:p2→q0 →p3→q2 →p2 →q0 →p2p2→q0 →p1→q2 →p3→q0→p212 一棵解树由S0,A,D,t1,t2,t3组成;另一棵解树由S0,B,E,t4,t5组成。
《人工智能导论》第3章 图搜索与问题求解
第 3 章 图搜索与问题求解 图 3-5 修改返回指针示例
第 3 章 图搜索与问题求解
说明:
(1) 这里的返回指针也就是父节点在CLOSED表中的编 号。
(2) 步6中修改返回指针的原因是, 因为这些节点又被第 二次生成, 所以它们返回初始节点的路径已有两条, 但这两 条路径的“长度”可能不同。 那么, 当新路短时自然要走 新路。
第 3 章 图搜索与问题求解
3.1.5 加权状态图搜索
1.加权状态图与代价树
例3.6 图3-9(a)是一个交通图,设A城是出发地,E城 是目的地, 边上的数字代表两城之间的交通费。试求 从A到E最小费用的旅行路线。
第 3 章 图搜索与问题求解 图 3-9 交通图及其代价树
第 3 章 图搜索与问题求解
第 3 章 图搜索与问题求解
3. 状态图表示
一个问题的状态图是一个三元组 (S, F, G)
其中S是问题的初始状态集合, F是问题的状态转换 规则集合, G是问题的目标状态集合。
一个问题的全体状态及其关系就构成一个空间, 称为状态空间。所以,状态图也称为状态空间图。
第 3 章 图搜索与问题求解
例 3.7 迷宫问题的状态图表示。
的返回指针和f(x)值, 修改原则是“抄f(x)
”。
(2)对其余子节点配上指向N的返回指针后放入OPEN表中, 并对OPEN表按f(x)值以升序排序, 转步2。
第 3 章 图搜索与问题求解
算法中节点x的估价函数f(x)的计算方法是 f(xj)=g(xj)+h(xj) =g(xi)+c(xi, xj)+h(xj) (xj是xi的子节点)
第4章 图搜索策略
4.1.1 通用或图搜索算法
或图通用搜索算法:
设S0 :初始状态, Sg:目标状态 1. 产生一仅由S0组成的open表,即open=(S0); 2. 产生一个空的closed表; 3. 如果open为空,则失败退出; 4. 在 open 表上按某一原则选出第一个优先结点, 称为n,将n放到closed表中,并从open表中去掉 n;
4.1.2 A算法与A*算法
由定义有 f(n’ ) =g(n’ ) +h(n’ ) =g*(n’ ) +h(n’ ) (因为n’在最优路径上) ≤ g*(n’ ) +h*(n’ ) =f*(n’ ) =f*(S0 ) (由于A*的定义h(n) ≤h*(n)) 所以f(n’)≤f*(S0)成立。
4.1.2 A算法与A*算法
推论1 若问题有解,A*算法一定终止。
(2-1)
因为若A*算法不终止,则命题2的
f(n)≥g(n)≥g*(n)≥d*(n)· e
与命题3的
f(n’)≤f*(S0) (2-2)
同时成立,则产生矛盾。
4.1.2 A算法与A*算法
命题 4 若问题有解, A* 算法终止时一定 找到最优解, 即A*算法是可采纳的。
4.1.1 通用或图搜索算法
注1 : 若生成的后继节点放于:
( 1 ) Open 表的尾部 —— 相当于 Breadth-firstsearch;
( 2 ) Open 表 的 首 部 —— 相 当 于 Depth-firstsearch; (3)根据启发式函数f的估计值确定最佳者,放 于Open 表的首部——相当于Best-first-search 最佳优先搜索。
证:A*终止只有两种情况。 (1) 在第3步, 因open为空而失败退出 但由命题 3 可知: A* 终止前, open 表上必 存在一点n’,满足 f(n’)≤f*(S0) 即open表不会空,所以,不会终止于第3步。
第3章(搜索推理技术1-图盲目搜索)
①、起 始节点 ( 即根
节点)的深度为0。
②、任何其它节点的
深度等于其父辈
节点深度加上1。
深度优先搜索的基本
思路:
先扩展最深的节点 。
当出现没有后继节点
时,换到旁边的次深
节点
后生成的节点画在左边
含有深度界限的深度优先搜索算法:
① 把起始节点 S 放到未扩展节点的 OPEN 表中。 如果此节点为一目标节点,则得到解 ② 如果 OPEN 为一空表,则无解、失败退出
状态:长度为9的一维数组
(q1 , q2 , … , q9 )
其中,qi 取 0 , 1 , … , 8 个数,0 表示空格,且取值
互不相同
如果记空格的位置为P,这时空格的移动规则是: 1 4 7 2 5 8 3 6 9 数字表示位置 1 2 3 4 5 6 7 8 9 P-3
P-1
P
P+1
P+3
起始节点的父节点标志和操作符:
不作记录或记录为负
搜索过程(按照程序运行方式)
① 起始节点放到OPEN表
2 8 3 1 0 4
2 8 3 1 4 7 6 5 7 6 5
② OPEN不为空,继续
③ 将第一个节点 n 从 OPEN 表中移出,并放到 CLOSED表中 OPEN表
CLOSED表 1 0 0 2 8
13
14
1
4
2
8
8
3
3
0
1
2
4
1
5
4
7
7
0
6
6
5
1 8
7
2
3 4
14 15 15
16 16
3 2 4
6第六讲 第三章(盲目、启发搜索)
二、有序搜索
用估价函数 f 来排列OPEN表上的节点。
应用某个算法选择OPEN表上具有最小f 值的节点作为
二、宽度优先搜索
例3.2 八数码问题 操作规定: 允许空格四周上、下、左、右的数码 块移入空格中,不许斜方向移动,不许返回先辈 结点。
1 2 3 8 5 7 4 6
1
4
1 3 8 2 5 7 4 6
2
1 2 3 8 4 5 7 6
3
1 2 3 8 5 7 4 6
5
1 2 3 8 5 7 4 6
深度优先搜索的特点
OPEN表为堆栈,操作是后进先出(LIFO) 深度优先又称纵向搜索。 一般不容易保证找到最优解(如下图所示) 防止搜索过程沿着无益的路径扩展下去,往往 给出一个节点扩展的最大深度——深度界限。
2、有界深度优先搜索
引入搜索深度限制值d,使深度优先搜索具有完备性 。 (1)深度界限的选择很重要 d若太小,则达不到解的深度,得不到解;若太大,既 浪费了计算机的存储空间与时间,降低了搜索效率。由于 解的路径长度事先难以预料,要恰当地给出d的值是比较 困难的。 (2)即使能求出解,它也不一定是最优解。 例3.3:设定搜索深度限制d=5的八数码问题。
4. 搜索过程框图
S0放入OPEN表 是 OPEN表空? 否 将OPEN表中第一个节点(n) 移至CLOSE表 否 n是目标节点? 扩展节点n,把n的后继节点放入 OPEN表末端,提供指向 节点n的指针 修改指针方针,重排OPEN表
失败
是
成功
一、图搜索策略(Graph Search) 5.图搜索方法分析:
3.2 启发式搜索
盲目搜索的不足:效率低,耗费空间与时间。 启发式搜索:利用问题本身特性信息(启发信息) 指导搜索过程。是有序搜索。 一、启发式搜索策略 启发式信息主要用途:
第4章 图搜索策略
作者 朱福喜 朱三元
(2)用图结构,不允许搜索图中有相同结点出现。 优点:节省大量空间(相同的结点只存一次) 和时间(相同结点不需要重复产生)。 缺点:每产生一个新的结点需判断这个节点 是否已生成过 , 因而控制更复杂,判断也要占 用时间。 碰到具体问题时,要权衡二者的利弊。若可能 产生大量相同结点,则应采用搜索图。
作者 朱福喜 朱三元
2.4 图搜索策略
图搜索算法只记录状态空间那些被搜索过的状态, 它们组成一个搜索图叫G。G由两张表内的节点组成:
Open表:用于存放已经生成,且已用启发式函数作过 估计或评价,但尚未产生它们的后继节点的那些结点, 也称未考察结点。
Closed表:用于存放已经生成,且已考察过的结点。 一个结构 Tree, 它的节点为G的一个子集。Tree 用来 存放当前已生成的搜索树, 该树由G的反向边组成。
6. 产生n的一切后继,将后继中不是n的先辈点的 一切点构成集合M
7. 对M中的元素P,分别作两类处理: 7.1 若P∈G,则P对P进行估计加入open表, 记入G和Tree。
7.2 P∈G,则决定更改Tree中P到n的指针
并且更改P的子节点n的指针和费用。
8. 转3。
作者 朱福喜 朱三元
2.A*算法的性质
f*(n)表示从S0经过n到Sg的最优路的实际
最小费用。
作者 朱福喜 朱三元
证:令 S0=n0 , n1 , n2 , … , nk=Sg 为一条
最优路径,设 n’∈path(n0 , n1 , … , nk ) 中最后一个出现在 open表上的元素。显然 n’一定存在,因为至少有S0=n0必然在open 上,只考虑当 nk 还未在 closed 表中时,因 为若nk已在closed表中时,则nk=Sg,A*算 法将终止于成功退出。
图片搜索原理
图片搜索原理图片搜索是一种通过图像内容来检索相关信息的技术。
它可以帮助用户在海量的图片库中快速找到所需的图片,也可以用于识别图片中的物体、场景等内容。
图片搜索的原理涉及到图像特征提取、相似度匹配、深度学习等多个方面的知识。
本文将从这些方面对图片搜索的原理进行介绍。
首先,图像特征提取是图片搜索的关键步骤之一。
在图像搜索中,图像特征可以理解为图像的一种描述,它可以用来表示图像的颜色、纹理、形状等特征。
常用的图像特征提取算法包括SIFT(尺度不变特征变换)、SURF(加速稳健特征)、HOG(方向梯度直方图)等。
这些算法可以提取出图像中的关键点、边缘、纹理等特征,为后续的相似度匹配提供了基础。
其次,相似度匹配是图片搜索的核心技术之一。
在图像搜索中,相似度匹配的目标是找到与查询图片最相似的图片。
相似度匹配的方法有很多种,其中最常用的是基于特征的匹配方法,如基于颜色直方图的匹配、基于形状的匹配、基于深度学习的匹配等。
这些方法可以通过计算图像之间的相似度来找到最相似的图片,从而实现图片搜索的功能。
另外,深度学习在图片搜索中也发挥着重要作用。
深度学习是一种通过神经网络来学习图像特征的方法,它可以自动地学习到图像中的高级特征,如边缘、纹理、形状等。
在图片搜索中,深度学习可以帮助我们更准确地提取图像特征,并且可以通过大规模数据的学习来提高搜索的准确性和效率。
总的来说,图片搜索的原理涉及到图像特征提取、相似度匹配、深度学习等多个方面的知识。
通过这些技术的应用,我们可以实现在海量图片库中快速准确地搜索到所需的图片。
随着图像识别技术的不断发展,图片搜索的准确性和效率也会不断提高,为用户提供更好的搜索体验。
图的搜索算法
无向图:Vi旳邻接表中每个表结点都相应于与Vi有关联旳一 条边,
有向图:Vi旳邻接表中每个表结点相应于Vi为始点射出旳 一条边。
边表为一种单链表,每个表结点都有两个域: ①邻接点域adjvex:存储与vi相邻接旳顶点vj旳序号j。 ②链域next:将邻接表旳全部表结点链在一起。
(0,0,……,1,0),(0,0,……,1,1),
……
(1,1,……,1,1)。
共2n 个状态。若表达为树形构造就是一棵有2n个叶结点旳二叉
树,对树中全部分支进行遍历旳算法都必须耗时O(2n)。
n=3旳子集树
2)排列树
当要求解旳问题需要在n 元素旳排列中搜索问题旳解时,
解空间树被称作排列树。
搜索空间为:
A[i,j]=Wij 若(Vi,Vj)或<Vi,Vj>属于E(G); A[i,j]=0或∞ 若(Vi,Vj)或<Vi,Vj> 不属于E(G); 其中,Wij表达边上旳权值,∞表达一种计算机允许旳,不小 于全部边上权值旳数;
2)邻接表
对于图G中旳每个结点Vi, 把全部邻接于Vi旳顶点Vj链成一种 单链表,这个单链表就称为顶点Vi旳邻接表。
}
}
2)邻接矩阵表达旳图旳广度优先搜索算法
bfsm(int k, graph g[][100],int n)
{ int i,j;
Queue Q; InitQueue(Q);
print (“visit vertex”, k); visited[k]=1; EnQueue(Q,k);
//访问源点vk
while(not QueueEmpty(Q))
visited[]:统计结点旳搜索情况。
与或图搜索策略
注意:终止节点一定是端节点,但端节点不一定是终 止节点。
10
可解节点: 6. 可解节点:节点须满足下列 条件之一: (1) 终止节点是可解节点; (2)一个与节点可解,当且仅当其子节点全都可解; (3)一个或节点可解,只要其子节点至少有一个可解; 7.不可解节点: 不可解节点: 不可解节点 关于可解节点的三个条件全部不满足的节点称为不可 解节点。 8.解树 解树: 解树 由可解节点所构成,并且由这些可解节点可推出初 始节点(它对应于原始问题)为可解节点的子树.
11
可解性判别
1 3 2 4 B 5 t1
t4
t3 t2 A
12
可解性判别
S0
A D
B C 3 G L M 3 0 0 2 2 2 E 2 H F
2
2
13
例题
三阶梵塔
C B A
(1,1,1)
三元组
(i, j, k)
i 代表金盘C所在的杆号;j代表金盘B所在的 杆号;k代表金盘A所在的标号。
14
1 3 2 4 5 t1
3) 4)
t4
t3 t2 A
5)
此时,closed 表就是由节点1,2,3,4,5和t1,t2,t3,t4构成的解树,如图中粗线所示。
22
与/或树的深度优先搜索算法
1、把初始节点S0放入OPEN表; 2、移出为OPEN表的第一个节点N放入CLOSED表,并冠以序号n; 3 、如果节点N 的深度大于等于深度界限,则转第5部的第(1); 4、若节点N可扩展,则做下列工作:
t5 G 2 1 t4 F t3 E 1 D 2 3 B 2 1 2 c S0 2 5 A 6 t1
目标 目标
9
其它几个概念与术语
图像搜索技术的优化策略
图像搜索技术的优化策略在当今数字化的时代,图像已经成为了信息传递的重要载体。
从社交媒体上的照片分享,到电商平台上的商品展示,再到科研领域的数据分析,图像无处不在。
而如何在海量的图像数据中快速、准确地找到我们所需的图像,图像搜索技术就显得至关重要。
然而,现有的图像搜索技术还存在着一些问题和挑战,需要不断地进行优化和改进。
一、图像搜索技术的现状与问题目前常见的图像搜索技术主要基于图像的特征提取和匹配。
这些特征可以包括颜色、形状、纹理等。
然而,这种方法存在着一些局限性。
首先,图像特征的提取往往不够准确和全面。
例如,对于一些复杂的图像,或者具有相似特征的图像,很难提取出具有区分度的特征,导致搜索结果不准确。
其次,搜索的速度和效率有待提高。
在面对大规模的图像数据库时,搜索过程可能会非常耗时,无法满足用户对实时性的要求。
另外,图像的语义理解也是一个难题。
目前的技术大多侧重于图像的底层特征,而对于图像所表达的语义信息,如场景、情感、主题等,理解还不够深入,这也会影响搜索的准确性和相关性。
二、图像搜索技术的优化策略1、多模态特征融合为了更全面、准确地描述图像,可以将多种特征进行融合,例如将颜色、形状、纹理等视觉特征与图像的文本描述、标签等语义特征相结合。
通过这种方式,可以弥补单一特征的局限性,提高图像搜索的准确性。
在融合过程中,需要解决不同特征之间的权重分配问题。
可以通过机器学习算法,根据特征的重要性和相关性,自动学习出合适的权重。
2、深度学习技术的应用深度学习在图像识别和处理领域取得了显著的成果。
利用深度卷积神经网络(CNN)可以自动学习图像的高层特征,这些特征具有更强的表达能力和区分度。
通过大规模的图像数据进行训练,神经网络能够学习到图像的复杂模式和语义信息。
同时,可以采用预训练的模型,并在特定的数据集上进行微调,以适应不同的搜索任务。
3、优化索引结构为了提高搜索速度,可以对图像数据库建立高效的索引结构。
常见的索引结构如树形结构(如 B 树、B+树)、哈希表等。
图片搜索 原理
图片搜索原理
图片搜索的原理是通过特定算法对图像进行分析和比对,以找到与待搜索图像相似的图像。
以下是一些主要的图片搜索算法和技术:
1. 颜色直方图(Color Histogram): 将图像的颜色信息表示为
直方图,然后比较不同图像之间的直方图相似度。
2. 尺度不变特征变换(Scale-invariant Feature Transform,SIFT): 提取图像中的关键点和局部特征,并计算其在图像空
间中的尺度、方向和描述子等特征,通过对比这些特征来找到相似图像。
3. 高斯模糊算法(Gaussian Blur): 将图像进行高斯模糊处理,去除细节信息,然后比较不同图像之间的模糊程度来判断相似度。
4. 神经网络算法(Neural Networks): 使用深度学习技术,构
建卷积神经网络(Convolutional Neural Networks,CNN)模型,通过训练模型来识别和比对图像。
5. 局部二值模式(Local Binary Patterns,LBP): 提取图像的
局部纹理特征,将每个像素与其相邻像素进行比较,并将结果编码为二进制模式,通过对比这些模式来找到相似图像。
这些算法和技术可以单独使用,也可以组合使用,根据具体应用和需求选择适合的方法来进行图片搜索。
启发式图搜索
1. 启发式搜索
• 定义:为减小搜索范围而需要利用某 些已知旳、有关详细问题领域旳特征 信息。此种信息叫做启发信息。利用 启发信息旳搜索措施叫做启发式搜索 措施。
• 特点:重排OPEN表,选择最有希望旳 节点加以扩展
• 种类:最佳优先搜索、A*算法等
启发式搜索策略
• 有关详细问题领域旳信息经常能够用来 简化搜索。一种比较灵活(但代价也较 大)旳利用启发信息旳措施是应用某些 准则来重新排列每一步OPEN表中全部 节点旳顺序。然后,搜索就可能沿着某 个被以为是最有希望旳边沿区段向外扩 展。应用这种排序过程,需要某些估算 节点“希望”旳量度,这种量度叫做估 价函数(evalution function)
• 其算法效率类似于纵向搜索算法,但使用 了与问题特征有关旳估价函数来拟定下一 步待扩展旳节点,所以是一种启发式搜索 措施。
开始
把S放入OPEN表, 计算估价函数 f (s)
是 OPEN表为空表?
否 把OPEN表中旳第一种节点n放入CLOSED表
是 n为目的节点吗?
否 扩展n,计算全部子节点旳估价函数值,
28 3
16 4
7
5
旳f(n)值等于4。
• 第②步有三种情况,我们选择其中
f(n)最小旳:
(5) 2 8 3 16 4
75
28 3
(3)
1
4
76 5
28 3 (5) 1 6 4
75
• 其他依次类推.最终用了7步得出了成果.
3. A算法
• 最佳优先算法有时无法得到最优解,因
为它旳估价函数f旳选用时,忽视了从 初始节点到目前节点旳代价值。所以, 可考虑每个节点n旳估价函数f(n)分为两 个分量:从起始节点到节点n旳代价g(n) 以及从节点n到达目旳节点代价旳估算 值h(n)。
图搜索—图搜索策略
Nilsson(尼尔逊)方法:一个节点的“希望” 越大,则其 f 值越小。被选择的节点是估价函数最 小的节点。
思考:如果把宽度优先、深度优先、等代价搜索方法作 为有序搜索的特例,那么它们的 f 函数如何计算? 举例示范。
26
算法
有序搜索(Ordered Search)
– 总是选择“最有希望”的节点作为下一被扩展节点
估价函数(Evaluation Function)
– 为获得某些节点“希望”的启发信息,提供一个评定侯选扩展节点的方 法,以便确定哪个节点最有可能在通向目标的最佳路径上 。 f(n)——表示节点n的估价函数值
17
3.2 盲目搜索
深度优先搜索示意图
S
L M N F
18
O F P F Q F
3.2 盲目搜索 开始
把S放入OPEN表
OPEN表为空表?
是
失败
否 把第一个节点(nபைடு நூலகம்从OPEN表移至CLOSED表 节点n的深度等于最大深度? 否
扩展n,把n的后继节点放入OPEN 表的前端,提供返回节点n的指针
是 是否有后继节点 成功 为目标节点? 否 图3.6 深度优先算法框图
7
3.1 图搜索策略
6)扩展节点n,同时生成不是n的祖先的那些后继节点的 集合M。把M的这些成员作为n的后继节点添入图G中。 7)对那些未曾在G中出现过的M成员设置一个通向n的指 针。把M的这些成员加进OPEN表。对已经在OPEN或 CLOSED表上的每一个M成员,确定是否需更改通到n的 指针方向。对已在CLOSED表上的每个M成员,确定是 否需要更改图G中通向它的每个后裔节点的指针方向。 8)按某一任意方式或按某个探试值,重排OPEN表。 9)GO LOOP。
图搜索技术
第4章 图搜索技术
(3)对已存在于CLOSED表中的节点(如果有的话), 也作与(2)同样的处理,修改返回指针,并且将其移出 CLOSED表,放入OPEN表重新扩展(为了重新计算代价); (4)对其余子节点配上指向 N的返回指针依次放入 OPEN表的某处,或对OPEN表进行重新排序,转步2。
说明:
第4章 图搜索技术
第4章
4.1 状态图搜索 4.2 状态图问题求解
图搜索技术
图搜索是人工智能的核 心技术之一,人工智能的 许多分支领域都涉及到图 搜索。 这分为或图(直 接图)和与或图两类。
第1页
4.3 与或图搜索
4.4 与或图问题求解
第20页
第4章 图搜索技术
步5 若N不可扩展,则转步2;
步6 扩展N,将其所有子节点配上指向N的返回指针依次放 入OPEN表的尾部,转步2。 其中的OPEN表是一个队列,CLOSED表是一个顺序表, 表中各节点按顺序编号,正被考察的节点在表中编号最大。如
果问题有解,OPEN表中必然出现目标节点Sg ,那么,当搜索
5 3 4 5 13 2 1 7 21 2 1 7 8 6 5 4 3 8 6 5 3 4
图4—5 八数码问题的广度优先搜索
第9页
第4章 图搜索技术
以上两个问题都是在某个有向图中寻找目标或路径问
题,这种问题图搜索问题。把描述问题的有向图称为状态 空间图,简称状态图。图中的节点代表问题中的一种格局,
例4.3 用广度优先搜索策略解八数码难题。
由于把一个与空格相邻的数码移入空格,等价于 把空格向数码方向移动一位。所以,该题中给出的数 码走步规则也可以简化为:对空格可施行左移、右移、 上移和下移等四种操作。 设初始节点S0和目标节点Sg 分别如图4—3的初始棋 局和目标棋局所示,我们用广度优先搜索策略,则可 得到如图4—5所示的搜索树。
图搜索算法理论基础
八数码参考程序(宽度优先)
program 8no_bfs; {八数码的宽度优先搜索算法 八数码的宽度优先搜索算法} 八数码的宽度优先搜索算法 Const Dir : array[1..4,1..2]of integer {四种移动方向,对应产生式规则 四种移动方向, 四种移动方向 对应产生式规则} = ((1,0),(-1,0),(0,1),(0,-1)); n=10000; Type T8no = array[1..3,1..3]of integer; TList = record Father : integer; {父指针 父指针} 父指针 dep : byte; {深度 深度} 深度 X0,Y0 : byte; {0的位置 的位置} 的位置 State : T8no; {棋盘状态 } 棋盘状态 end; Var Source,Target : T8no; List : array[0..10000] of TList; {综合数据库 } 综合数据库 Closed,open,Best : integer { Best表示最优移动次数 表示最优移动次数} 表示最优移动次数 Answer : integer; {记录解 记录解} 记录解 Found : Boolean; {解标志 解标志} 解标志 procedure GetInfo; {读入初始和目标节点 读入初始和目标节点} 读入初始和目标节点 var i,j : integer; begin for i:=1 to 3 do for j:=1 to 3 do read(Source[i,j]); for i:=1 to 3 do for j:=1 to 3 do read(Target[i,j]); end;
Max=10000;
var s, t : T8no; List : array[0..max] of TList;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题:知识表示有那些方法?知识表示的目的是
什么?构建智能系统的关键是什么?
3.1 图搜索策略 3.2 盲目搜索 3.3 启发式搜索
1
3.1 图搜索策略
思考:状态空间法的基本特点?基本推理方法?其 求解结果是什么?简单回顾实例:猴子与香蕉。
2
3.1 图搜索策略
用一个四元表列(W,x,Y,z)表示这个问题状态
7
3.1 图搜索策略
6)扩展节点n,同时生成不是n的祖先的那些后继节点的 集合M。把M的这些成员作为n的后继节点添入图G中。 7)对那些未曾在G中出现过的M成员设置一个通向n的指 针。把M的这些成员加进OPEN表。对已经在OPEN或 CLOSED表上的每一个M成员,确定是否需更改通到n的 指针方向。对已在CLOSED表上的每个M成员,确定是 否需要更改图G中通向它的每个后裔节点的指针方向。 8)按某一任意方式或按某个探试值,重排OPEN表。 9)GO LOOP。
提出:盲目搜索与启发式搜索。
10
3.2
盲目搜索
盲目搜索又叫做无信息搜索,一般只适用于求解比较 简单的问题。
– 特点:不需重排OPEN表; – 种类:宽度优先、深度优先、等代价搜索等。
3.2.1 宽度优先搜索(Breadth-first)
定义:
以接近起始节点的程度逐层扩展节点的搜索方法。
3.3 启发式搜索 开始
把S放入OPEN表, 计算估价函数 f (s)
OPEN表为空表?
是
失败
否 选取OPEN表中f值最小的节点i放入CLOSED表
i为目标节点吗?
是
成功
否 扩展i,得后继节点j,计算f(j),提供返回 节点i的指针,利用f(j)对OPEN表重新排 序,调整亲子关系及指针
图3.9 有序搜索算法框图
是 是否有后继节点 成功 为目标节点? 否 图3.2 宽度优先算法框图
思考:与原始算法比较异同,宽度优先的体现?
14
3.2 盲目搜索
例子 八数码难题(8-puzzle problem)
2 1 8 3 4 1 8 2 3 4
7 6
5
7 6
5
(初始状态)
(目标状态)
规定:将牌移入空格的顺序为:从空格左边 开始顺时针旋转。不许斜向移动,也不返回 先辈节点。从图可见,要扩展26个节点,共 生成46个节点之后才求得解(目标节点)。
图3.8 等代价搜索算法框图
23
3.3 启发式搜索
思考: (1)图搜索方法的基本步骤? (2)宽度优先、深度优先、等代价方法的特点? (3)盲目搜索的缺点?
基本步骤:初始化,判断OPEN表是否为空,选择节点n,判断n是否 目标节点,扩展节点n,重排OPEN表、调整指针,循环。
各自特点:重排OPEN表的依据不同。
27
3.3 启发式搜索
八数码难题
(1)估价函数设置: f(n) = d(n) + W(n)
d(n): 节点n的深度; W(n):错放的棋子数
(2)如下的八数码难题(8-puzzle problem)
2 8 1 6 7
3 4 5
1 2 8 7 6
3 4 5
(初始状态)
(目标状态)
(3)八数码难题的有序搜索树见下图:
思考:如何动态计算g(i)?
22
开始
把S放入OPEN表 S是否目标节点? 否 令g(s)=0 OPEN表为空表? 否 是
3.2 盲目搜索
成功
是
失败
把具有最小g(i)值的节点i从OPEN表 移至CLOSED表
是否有后继节点 为目标节点?
否
是
成功
扩展i,计算其后继节点j的g(j), 并把后继节点放入OPEN表
(2)
OPEN CLOSED
9
3.1 图搜索策略
图搜索的生成结果:
– 搜索图(G) – 搜索树(T)
修正算法:
– 一次只生成一个后继节点;
思考:
– (1)结果路径的形成中,为什么其节点顺序是明确的? – (2)OPEN表中的节点具有什么特点?
– (3)CLOSED表中的节点具有什么特点?
– (4)对OPEN表节点的排序有何意义?
– g 的一个选择就是搜索树中从 S 到 n 的这段路径的代价;显然有 g(n)≥ g*(n); – h 的依赖于领域的启发信息,比如八数码问题中的 W(n), h 称为 启发式函数;
有序搜索(Ordered Search)
– 总是选择“最有希望”的节点作为下一被扩展节点
估价函数(Evaluation Function)
– 为获得某些节点“希望”的启发信息,提供一个评定侯选扩展节点的方 法,以便确定哪个节点最有可能在通向目标的最佳路径上 。 f(n)——表示节点n的估价函数值
8
开始
3.1 图搜索策略
(1) (3)
把S放入OPEN表
(4)
是 OPEN表为空表? 失败 否 把第一个节点(n)从OPEN表移至CLOSED表
(5) (6) (7)
n为目标节点吗?
是
成功
否 把n的后继节点放入OPEN表的 末端,提供返回节点n的指针
(7) (9) (8)
(1)
修改指针方向
重排OPEN表 图3.1 图搜索过程框图 宽度优先
猴子和香蕉问题的状态空间图
提问:人工搜索求解的解答?
4
3.1 图搜索策略
猴子和香蕉问题自动演示:
•
香蕉
Ha!Ha!
箱子
猴子
思考:计算机的搜索策略?
5
3.1 图搜索策略
图搜索控制策略:一种在图中寻找路径的方法。
– 图中每个节点对应一个状态; – 每条连线对应一个操作符。
用产生式系统的数据库和规则来标记:
17
3.2 盲目搜索
深度优先搜索示意图
S
L M N F
18
O F P F Q F
3.2 盲目搜索 开始
把S放入OPEN表
OPEN表为空表?
是
失败
否 把第一个节点(n)从OPEN表移至CLOSED表 节点n的深度等于最大深度? 否
扩展n,把n的后继节点放入OPEN 表的前端,提供返回节点n的指针
是 是否有后继节点 成功 为目标节点? 否 图3.6 深度优先算法框图
实质:选择OPEN表上具有最小 f 值的节点作为下 一个要扩展的节点。
Nilsson(尼尔逊)方法:一个节点的“希望” 越大,则其 f 值越小。被选择的节点是估价函数最 小的节点。
思考:如果把宽度优先、深度优先、等代价搜索方法作 为有序搜索的特例,那么它们的 f 函数如何计算? 举例示范。
26
算法
15
3.2 盲目搜索
16
3.2 盲目搜索
3.2.2 深度优先搜索(Dephth-first)
定义:
首先扩展最新产生的(即最深的)节点。
特点: 防止搜索过程沿着无益的路径扩展下去,往往给 出一个节点扩展的最大深度——深度界限。
与宽度优先搜索算法最根本的不同在于:将扩展 的后继节点放在OPEN表的前端。
盲目搜索可能带来组合爆炸。
启发式信息:用来加速搜索过程的问题领域信息,一般与有关问题
具体领域背景有关,不一定具有通用性。
启发式搜索:利用启发式信息的搜索方法
– 特点:重排OPEN表,选择最有希望的节点加以扩展
– 种类:有序搜索、A*算法等
24
3.3 启发式搜索
3.3.1 启发式搜索策略和估价函数
– 初始节点————初始数据库;
– 目标节点————目标数据库;
– 状态图的一条路径问题————求得把一个数据库变换为另一
数据库的规则序列问题。
图搜索过程(GraphSearch)
6
ห้องสมุดไป่ตู้
3.1 图搜索策略
图搜索的一般过程如下:
1)建立一个只含有起始节点S的搜索图G,把S放到一个 叫做OPEN 的未扩展节点表中。 2)建立一个叫做CLOSED的已扩展节点表,其初始为空 表. 3)LOOP:若OPEN表是空表,则失败退出。 4)选择OPEN表上的第一个节点,把它从OPEN表移出 并放进CLOSED表中。称此节点为节点n 5)若n为一目标节点,则有解并成功退出,此解是追踪 图G中沿着指针从n到S这条路径而得到的(指针将在第7步 中设置)。
19
3.2 盲目搜索
示范:有界深度(4)优先的八数码问题深度优先 搜索树?
2 1 7 8 6 3 4 5 1 8 7 2 6 3 4 5
(初始状态)
(目标状态)
20
3.2 盲目搜索
21
3.2 盲目搜索
3.2.3 等代价搜索
定义 是宽度优先搜索的一种推广,不是沿着等长度路 径断层进行扩展,而是沿着等代价路径断层进行扩展。 搜索树中每条连接弧线上的有关代价,表示时间、 距离等花费。 算法 在等价搜索算法中,把从节点i到其后续节点j的连 接弧线记为c(I,j),把从起始节点S到任一节点I的路径代 价记为g(i)。在搜索树上,假设g(i)也是从起始节点S到 节点的最少代价路径上的代价。
思考: (1) f 不能识别某些节点的真实“希望”值会怎么样?
(2) f 过多估计了全部节点又会怎么样?
30
3.3 启发式搜索
3.3.3 A*算法
思考:经过节点n的最佳路径,怎么表示?怎么求 解最优解答路径。
估价函数f* :对节点n定义f*(n)=g*(n)+h*(n) ,表示从S开始通 过节点n的一条最佳路径的代价。其中g*(n)表示从起始节点S 到n的最佳路径,h*(n)表示从n到某目标节点的最佳路径。 估价函数f :f(n)=g(n)+h(n); 其中g是g*的估计 ,h是h*的 估计;