人工智能之(搜索推理技术1-图盲目搜索)
人工智能[第五章状态空间搜索策略]山东大学期末考试知识点复习
![人工智能[第五章状态空间搜索策略]山东大学期末考试知识点复习](https://img.taocdn.com/s3/m/90a7eb54dd36a32d73758188.png)
第五章状态空间搜索策略搜索是人工智能的一个基本问题,是推理不可分割的一部分。
搜索是求解问题的一种方法,是根据问题的实际情况,按照一定的策略或规则,从知识库中寻找可利用的知识,从而构造出一条使问题获得解决的推理路线的过程。
搜索包含两层含义:一层含义是要找到从初始事实到问题最终答案的一条推理路线;另一层含义是找到的这条路线是时间和空间复杂度最小的求解路线。
搜索可分为盲目搜索和启发式搜索两种。
1.1 盲目搜索策略1.状态空间图的搜索策略为了利用搜索的方法求解问题,首先必须将被求解的问题用某种形式表示出来。
一般情况下,不同的知识表示对应着不同的求解方法。
状态空间表示法是一种用“状态”和“算符”表示问题的方法。
状态空间可由一个三元组表示(S,F,Sg)。
利用搜索方法求解问题的基本思想是:首先将问题的初始状态(即状态空间图中的初始节点)当作当前状态,选择一适当的算符作用于当前状态,生成一组后继状态(或称后继节点),然后检查这组后继状态中有没有目标状态。
如果有,则说明搜索成功,从初始状态到目标状态的一系列算符即是问题的解;若没有,则按照某种控制策略从已生成的状态中再选一个状态作为当前状态,重复上述过程,直到目标状态出现或不再有可供操作的状态及算符时为止。
算法5.1 状态空间图的一般搜索算法①建立一个只含有初始节点S0的搜索图G,把S放入OPEN表中。
②建立CLOSED表,且置为空表。
③判断OPEN表是否为空表,若为空,则问题无解,退出。
④选择OPEN表中的第一个节点,把它从OPEN表移出,并放入CLOSED表中,将此节点记为节点n。
⑤考察节点n是否为目标节点,若是,则问题有解,并成功退出。
问题的解的这条路径得到。
即可从图G中沿着指针从n到S⑥扩展节点n生成一组不是n的祖先的后继节点,并将它们记作集合M,将M中的这些节点作为n的后继节点加入图G中。
⑦对那些未曾在G中出现过的(即未曾在OPEN表上或CLOSED表上出现过的)M中的节点,设置一个指向父节点(即节点n)的指针,并把这些节点加入OPEN 表中;对于已在G中出现过的M中的那些节点,确定是否需要修改指向父节点(n 节点)的指针;对于那些先前已在G中出现并且已在COLSED表中的M中的节点,确定是否需要修改通向它们后继节点的指针。
3搜索问题-盲目搜索

◦ 以上问题等价于在图中寻找从根节点到某个(或某些)
目标节点的一条(或一组)路径。
1 问题状态空间的构成
状态空间表示法是以“状态空间”的形式对问题 进行表示。 1)状态:是描述问题求解过程中不同时刻状况的 数据结构。一般用一组变量的有序集合表示:Q=(q1, q2,…,qn) 其中每个元素qi为集合的分量,称为状态 变量,当给每个分量以确定的值时,就得到了一个具体的 状态。
2
3 1 3
2 1
3
2 1 3 1 1
2 3 2 3
2
1
初始棋局
17
目标棋局
产生式系统(production system)
◦ 一个总数据库:它含有与具体任务有关的信息。随着应 用情况的不同,这些数据库可能简单,或许复杂。 ◦ 一套规则:它对数据库进行操作运算。每条规则由左部
鉴别规则的适用性或先决条件以及右部描述规则应用时所 完成的动作。 ◦ 一个控制策略:它确定应该采用哪一条适用规则,而且 当数据库的终止条件满足时,就停止计算。
Q () Q Q
((1,1))
((1,1) (2,3))
((1,1) (2,4))
((1,1) (2,4) (3,2))
Q () Q
((1,1))
((1,1) (2,3))
((1,1) (2,4))
((1,1) (2,4) (3,2))
Q ()
((1,1))
((1,1) (2,3))
((1,1) (2,4))
◦ 系统状态的描述 四个皇后 ((i1,j1), (i2,j2), (i3,j3), (i4,j4))
()
Q ()
((1,1))
Q ()
智能控制-第三章--搜索推理技术概要PPT课件

3.1 图搜索策略 3.2 盲目搜索 3.3 启发式搜索 3.4 消解原理 3.5 规则演绎系统
3.6 产生式系统 3.7 系统组织技术 3.8 小结
3.1 图搜索策略
❖ 图搜索控制策略 一种在图中寻找路径的方法。 图中每个节点对应一个状态,每条连线对应 一个操作符。这些节点和连线又分别由产生 式系统的数据库和规则来标记。求得把一个 数据库变换为另一数据库的规则序列问题就 等价于求得图中的一条路径问题。
5)若n为一目标节点,则有解并成功退出,此 解是追踪图G中沿着指针从n到S这条路径而 得到的(指针将在第7步中设置)。
.
3.1 图搜索策略
6)扩展节点n,同时生成不是n的祖先的那些后 继节点的集合M。把M的这些成员作为n的后 继节点添入图G中。
7)对那些未曾在G中出现过的M成员设置一个 通向n的指针。把M的这些成员加进OPEN表。 对已经在OPEN或CLOSED表上的每一个M成 员,确定是否需更改通到n的指针方向。对已 在CLOSED表上的每个M成员,确定是否需 要更改图G中通向它的每个后裔节点的指针方 向。
是否有后继节点 为目标节点?
否
是 成功
图3.2 宽度优先算法框图
.
❖ 例子
八数码难题(8-puzzle problem)
3.2 盲目搜索
28 3
1
4
76 5
(初始状态)
12 3
8
4
76 5
(目标状态)
规定:将棋子移入空格的顺序为:从空格左边开 始顺时针旋转。不许斜向移动,也不返回先辈节 点。从图可见,要扩展26个节点,共生成46个 节点之后才求得解(目标节点)。
.
深度优先搜索示意图
人工智能及其应用-状态空间的盲目搜索

3
3.2.1 状态空间的盲目搜索
广度优先搜索(2/3)
例3.5 八数码难题。在3×3的方格棋盘上,分别放置了表有数字1、 2、3、4、5、6、7、8的八张牌,初始状态S0,目标状态Sg,如下图 所示。可以使用的操作有
空格左移,空格上移,空格右移,空格下移
即只允许把位于空格左、上、右、下方的牌移入空格。要求应用广度 优先搜索策略寻找从初始状态到目标状态的解路径。
23 4 18 765
27
28 14 3 765
283 14 5 76
283 64
1 75
12 3
12 3
8 7
6
4 5
Sg
78 4 65
283 1 64 75
283 16 754
5
3.2.1 状态空间的盲目搜索
深度优先搜索
深度优先搜索算法和广度优先搜索算法的步骤基本相同,它 们之间的主要差别在于Open表中的节点排序不同。在深度优先 搜索算法中,最后进人Open表的节点总是排在最前面,即后生 成的节点先扩展。
个子节点设置指向父节点的指针。按如下公式: g(ni)=g (n) +c (n , ni) i=1,2,...
计算各子结点的代价,并根据各子结点的代价对Open表中的全部结点按由小到大的 顺序排序。然后转第(2)步。
8
3.2.2 代价树的盲目搜索
代价树的代价及广度优先搜索(2/2)
例3.6 城市交通问题。设有5个城市,它们之间的交通线路如左图所示,图中的数 字表示两个城市之间的交通费用,即代价。用代价树的广度优先搜索,求从A市出 发到E市,费用最小的交通路线。
搜索算法 (1)把初始节点S0放入Open表中; (2)如果Open表为空,则问题无解,失败退出; (3)把Open表的第一个节点取出放入Closed表,并记该节点为n; (4)考察n是否为目标节点。若是,则得到问题的解,成功退出; (5)若节点n不可扩展,则转第(2)步; (6)扩展节点n,将其子节点放入Open表的尾部,并为每一个子节
人工智能搜索技术(PPT 79张)

7 283 714 65 15 2 8 3 714 6 5 24 2 8 3 7 4 615
16 1 2 3 84 765 26 25 2 8 3 1 2 3 1 2 3 714 8 4 784 65 765 65
234 234 28 248 1 8 185 143 1 3 765 76 765 765
3.1 盲目搜索
3.1.2 宽度优先搜索
定义3.1 如果搜索是以接近起始节点的程度依次扩展节点的, 那么这种搜索就叫做宽度优先搜索(breadth-first search)
3.1 盲目搜索
3.1.2 宽度优先搜索
宽度优先搜索算法 (1) 把起始节点放到OPEN表中(如果该起始节点为一目标节点, 则求得一个解答)。 (2) 如果OPEN是个空表,则没有解,失败退出;否则继续。 (3) 把第一个节点(节点n)从OPEN表移出,并把它放入 CLOSED的扩展节点表中。 (4) 扩展节点n。如果没有后继节点,则转向上述第(2)步。 (5) 把n的所有后继节点放到OPEN表的末端,并提供从这些后 继节点回到n的指针。 (6) 如果n的任一个后继节点是个目标节点,则找到一个解答, 成功退出;否则转向第(2)步。
9
2 5 1 4 6 7 3 8 2 5 1 4 6 7 3 8 2 4 5 1 6 7 3 8 2 4 5 1 6 7 3 8 2 4 5 1 3 6 7 8 2 4 5 1 6 7 3 8 2 4 5 1 3 6 7 8 2 4 5 1 3 6 72 8 3 1 6 4 7 5 2 8 3 1 4 7 6 5 2 3
4.图搜索方法分析:
图搜索过程的第8步对OPEN表上的节点进行排序,以便能够 从中选出一个“最好”的节点作为第4步扩展用。这种排序可 以是任意的即盲目的(属于盲目搜索),也可以用以后要讨论的 各种启发思想或其它准则为依据(属于启发式搜索)。每当被选 作扩展的节点为目标节点时,这一过程就宣告成功结束。这时, 能够重现从起始节点到目标节点的这条成功路径,其办法是从 目标节点按指针向S返回追溯。当搜索树不再剩有未被扩展的 端节点时,过程就以失败告终(某些节点最终可能没有后继节 点,所以OPEN表可能最后变成空表)。在失败终止的情况下, 从起始节点出发,一定达不到目标节点。
第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
(搜索推理技术-与或树搜索)

7、无判断起始节点1可解
8、从OPEN中删除含有可解先辈节点的节点
删除
OPEN= { B, C, t1, 10, 11, 12, A, t2, t3 }
CLOSED= { 1, 2, 3, 4, 5, 6, 7, 8, 9 } OPEN= {t1, 10, 11, 12, t2, t3}
CLOSED= {1, 2, 3, 4, 5, 6, 7, 8, 9} 说明:对于OPEN表中的叶节点直接移到 CLOSED表,不作任何处理
OPEN= {9, B, C, t1, 10, 11, 12, A} CLOSED= {1, 2, 3, 4, 5, 6, 7, 8}
第九大循环(3、4、5、6、7、8步): 3、从OPEN表中取出节点9,并送到CLOSED表 4、扩展节点9,生成后继节点 t2、t3,并送到 OPEN表的末端 5、有叶节点 6、实现可解标志过程(可以判断节点9、4、2可解)
即OPEN是堆栈
注意
由于深度限制,深度优先搜索算法有可能找不 到解
例:
深度界限为4
√
2
1
√
√
6
√
3
Ⅹ A √ √
7 √
C
Ⅹ
4
5
8
t
√
Ⅹ B
t
t
t
t
√
√
√
√
注:后生成的节点画在左边
课堂练习:用宽度和深度优先搜索算法找出解树
提示:对于宽度优先搜索,先生成的节点画在左;
对于深度优先搜索,后生成的节点画在左
CLOSED= { 1, 2, 3, 4, 5, 6, 7, 8, 9, t1, 10 }
搜索过程演示
√
人工智能课件-搜索推理技术

1
3.4 消解原理
(4) (x){~P(x)∨{(y)[~P(y)∨P(f(x,y))]
∧[Q(x,g(x))∧~P(g(x))]}}
式中,w=g(x)為一Skolem函數。
(4) 消去存在量詞
以Skolem函數代替存在量詞內的約束變數,
❖ 實質
❖ 把一棵根部有NIL的反演樹變換為根部帶有回 答 語句的一棵證明樹。
1
3.5 規則演繹系統
—— g是g*的估計 ,h是h*的估計
❖ A*演算法的定義:
定義1 在GRAPHSEARCH過程中,如果第8步的重排OPEN表
是依據f(x)=g(x)+h(x)進行的,則稱該過程為A演算法。
定義2 在A演算法中,如果對所有的x存在h(x)≤h*(x),則稱h(x)
為h*(x)的下界,它表示某種偏於保守的估計。
子句(4) {a/x,b/y}
子句(7) ~M(b)
子句(5)
圖3.12 儲蓄問題反演樹
NIL
1
3.4 消解原理
❖ 反演求解過程 ❖從反演樹求取答案步驟
❖把由目標公式的否定產生的每個子句添加到目 標公式否定之否定的子句中去。
❖按照反演樹,執行和以前相同的消解,直至在 根部得到某個子句止。
❖用根部的子句作為一個回答語句。
❖ 種類:有序搜索、A*演算法等
3.3.1 啟發式搜索策略和估價函數
❖盲目搜索可能帶來組合爆炸 ❖啟發式資訊
用來加速搜索過程的有關問題領域的特徵資訊。
1
3.3 啟發式搜索
❖ 估價函數 為獲得某些節點“希望”的啟發資訊,提供一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
④ 扩展节点 n 。如果没有后继节点,则转向第 ②步
⑤ 把 n 的所有后继节点放到OPEN表的末端,
并提供从这些后继节点回到 n 的指针
⑥ 如果 n 的任一个后继节点是个目标节点,则 找到一个解(反向追踪得到从目标节点到起始 节点的路径),成功退出,否则转向第②步
说明:
OPEN 表是存放待扩展的节点,从数据结构 上来说,它是一个先进先出的队列
CLOSED 表是存放已被扩展过的节点(包括 有后继节点的非端节点和无后继节点的端节
点)
流程图
注意几点:
①搜索过程产生的节点和指针构成一棵隐式定义的 状态空间树的子树,称之为搜索树
② 宽度优先搜索方法能够保证在搜索树中找到 一条通向目标节点的最短途径(所用操作符
最少)
例:八数码问题
初始状态 2 8 3 1 7 6 4 5 目标状态 1 2 3 8 7 2 操作符: 1 空 3 4 6 4 5
状态:长度为9的一维数组
( q 1 , q2 , … , q 9 )
其中,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
Q
X
X
Q
Q Q
Q
假设,每个节点的分支数为10;10000节点/秒; 1000字节/节点
P+3
空格移动规则
顺序
规则
左移
前提条件
应用结果
P 位置与 P-1 位置上的元素互换
1
P≠1,4,7
2
3
上移
下移
P≠1,2,3
P≠7,8,9
P-3
P+3
4
右移
P≠3,6,9
P+1 P-3
1 4 7
2 5 8
3 6 9
P-1
P
P+3
P+1
为了记录后继节点与父节点之间的指针,我们将
长度为 9 的数组扩大到长度为 11 的数组,其中 一个元素记录该节点的父节点标志,另一个元素
3.2 盲目搜索
盲目搜索是指无问题先验信息的搜索技术
特点:
OPEN表中节点的排列是人为规定的 一般只适合于求解比较简单的一些问题
图的盲目搜索技术分成: 宽度优先搜索技术
深度优先搜索技术
等代价(代价优先)搜索技术
3.2.1 宽度优先搜索
宽度优先搜索:以接近起始节点的程度依次扩展 节点的搜索技术(即:离起始节点近的节点先被
王A:寿命47,有儿子王B1、王B3、王B2 王B1:寿命77,有儿子王C1、王C2
王B3:寿命52,有儿子王D1
王B2:寿命65,有儿子王E1、王E2 王F1:寿命32
王G1:寿命96
王C2:寿命87,有儿子王F1 王D1:寿命77,没有儿子
王E1:寿命57,有儿子王G1
王E2:寿命92,有儿子王H1 王C1:寿命27,没有儿子 王H1:寿命51
8 1
3 4 5
1
2 8
3 4 5
2 1 7
3 8 6
4
2
8 6
3 4 5
2 1 7
8 6 5
3
2 1 4 6
8 3 5
2 1 7
8 4
3 5 6
7
6
5
1
7
4
7
8
1
3
8 2
3 1 4
2
8
3
2 7
8 1
3 4
1
2
3
1 8
2
3 4
2
7 6
4
5
7
6 1
4
5
7
8
6
4
5
7
6
5
6
5
7
6
5
目标 节点
生成后继节 点的顺序
5 5 5 5 5 5 5 5 5
10 11
4
1
2
8
3
1
6
4
0
7
5
4
5 5 6 7
4
2 3 4 4
2
2 2 8 2
8
8 8 0 8
3
0 3 3 3
1
1 1 2 7
6
4 4 1 1
4
3 5 4 4
7
7 7 7 6
5
5 6 6 0
0
0 0 5 5
12
13
14
15 16
目标节点
8
16
3
4
1
1
2
2
3
3
0
8
2
3
2
8
3
7
1
4
0
6
5
…………………. 一直继续下去,而且不产生已经产生过的节点 (状态),防止死循环。在程序中每一个新产 生的节点必须与 OPEN 和 CLOSED 表中状态
进行比较,判断是否已经产生过,只保留从未
产生过的节点
最后的OPEN表:
9 10 11 12 3 3 2 1 2 2 2 2 3 8 8 0 4 3 3 8 1 0 1 1 8 6 6 4 0 4 0 3 7 1 7 7 6 7 5 6 5 5 4 5
13
14
1
4
2
8
8
3
3
0
1
2
4
1
5
4
7
8
7
2
3 4
14 15 15
16 16
3 2 4
3 4
8 2 2
1 1
1 8 8
2 2
3 3 3
3 3
2 7 7
7 8
0 0 1
8 0
4 4 4
4 4
7 6 6
0 7
6 1 5
6 6
5 5 0
5 5
6
5
目标节点
最后的CLOSED表:
1 2 3 4 5 6 7 8 9
图搜索中的两个重要记号(符号):
OPEN 表:
存放待扩展的节点
CLOSED 表:存放已扩展的节点 注意:在与或树搜索中也要用到这两张表
数据结构中图的遍及:从图某一个节点出发, 访问遍图中其余节点,且每一个节点仅仅被访问 一次。 当前图的搜索技术中,有两个特殊之处: 搜索前,图并没有生成好,需要边生成图边搜索 搜索从起始节点(初始状态)开始,到目标节点 (目标状态)结束,不需要搜索所有可能的节点
扩展)
扩展节点的原则:先扩展出来的节点随后优先被 扩展(生成其所有的后继节点)
宽度优先搜索算法:
① 把起始节点放到 OPEN 表中(如果该起始节点 为一目标节点,则得到解) ② 如果 OPEN 是个空表,则无解,失败退出; 否则继续下一步
③ 把第一个节点(记作节点 n )从 OPEN 表移出, 并把它放入 CLOSED 的已扩展节点表中
节点n 3 1 0 4 7 6 5
④ 扩展节点n
0 0 2 8 3 1 扩 展 0 4 7 6 5
2 8 3 1 4 7 6 5
2
2 2 2
8
0 8 8
3
3 3 3
0
1 1 1
1
8 6 4
4
4 4 0
7
7 7 7
6
6 0 6
5
5 5 5
⑤ 将节点 n 的所有后继节点放到 OPEN 表的末
端,并提供这些后继节点回到 n 的指针 OPEN表 1 1 1 1 2 3 2 2 2 0 8 0 8 0 2 3 3 3 0 1 1 8 1 8 6 3 4 4 4 1 7 7 7 0 CLOSED 4 7 6 5 6 6 0 5 5 5
若X=57,下面讨论一种可通用的图搜索策略求解此问
题。 如果是一个N代的家族表中找其寿命为X的人,我 们最可能用的手工方法是从家族表的开始往下,例中 还要求所找的人是某人的后代,就比较复杂了。如果
用图来表示,就很容易了。图中把姓氏省去,每个成
员的后代按例子中给出名字的先后顺序。图示为:
3.1 图搜索策略
CLOSED表
1 0 0 2 8 3 1 0 4 7 6 5
节 点 n
2 1
1
2
8
3
0
1
4
7
6
5
④ 扩展节点 n 1 1 2 8 3 0 1 4
2 8 3 1 4 7 6 5 7 6 5
0
2
8
8
3
3
2
7
1
1
4
4
7
0
6
6
5
5
⑤ 将节点 n 的所有后继节点放到 OPEN 表的末 端,并提供这些后继节点回到 n 的指针 OPEN表 1 1 1 2 2 3 4 2 2 2 2 0 0 8 8 8 3 3 3 3 1 1 1 2 8 6 4 1 4 4 0 4 7 7 7 7 6 0 6 6 5 5 5 5
1 1 1 1 2 2 3 3
1 2 3 4 2 3 1 4
2 2 2 2 2 0 2 0 2
8 8 0 8 8 8 8 2 3
3 3 3 3 3 3 3 3 0
1 0 1 1 1 2 7 1 1
0 1 8 6 4 1 1 8 8
4 4 4 4 0 4 4 4 4
7 7 7 7 7 7 0 7 7
6 6 6 0 6 6 6 6 6
8
0
4
4