3搜索问题-盲目搜索

合集下载

人工智能[第五章状态空间搜索策略]山东大学期末考试知识点复习

人工智能[第五章状态空间搜索策略]山东大学期末考试知识点复习

第五章状态空间搜索策略搜索是人工智能的一个基本问题,是推理不可分割的一部分。

搜索是求解问题的一种方法,是根据问题的实际情况,按照一定的策略或规则,从知识库中寻找可利用的知识,从而构造出一条使问题获得解决的推理路线的过程。

搜索包含两层含义:一层含义是要找到从初始事实到问题最终答案的一条推理路线;另一层含义是找到的这条路线是时间和空间复杂度最小的求解路线。

搜索可分为盲目搜索和启发式搜索两种。

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中的节点,确定是否需要修改通向它们后继节点的指针。

盲目搜索

盲目搜索

盲目搜索搜索的含义依问题的实际情况寻找可利用的知识,构造代价较少的推理路径从而解决问题的过程离散的问题通常没有统一的求解方法搜索策略的优劣涉及能否找到最好的解、计算时间、存储空间等搜索分为盲目搜索和启发式搜索盲目搜索:按预定的策略进行搜索,未用问题相关的或中间信息改进搜索。

效率不高,难求解复杂问题,但不失可用性启发式搜索:搜索中加入问题相关的信息加速问题求解,效率较高,但启发式函数不易构造盲目搜索也叫无信息搜索,只适合用于求解比较简单的问题。

我们没有指定问题的任何推理信息,例如要搜索这一部分而不是另一部分,就像到目前为止的只要发现一条到目标的路径即可。

这种过程被称为是盲目的。

盲目搜索过程只把算子应用到节点,它没有使用问题领域的任何特殊知识(除了关于什么动作是合法的知识外)。

最简单的盲目搜索过程就是广度优先搜索。

该过程把所有的算子应用到开始节点以产生一个显式的状态空间图,再把所有可能的算子应用到开始节点的所有直接后继,再到后继的后继,等等。

搜索过程一律从开始节点向外扩展。

由于每一步将所有可能的算子应用到一个节点,因此可把它们组成一个叫后继函数的函数。

当把后继函数应用到一个节点时,产生一个节点集,该节点集就是把所有能应用到那个节点的算子应用到该节点而产生的。

一个节点的后继函数的每一次应用称为节点的扩展相同代价搜索是广度优先搜索的一种变体,在该方法中,节点从开始节点顺着代价等高点向外扩展,而不是顺着相同深度等高线。

如果图中所有弧的代价相同,那么相同代价搜索就和广度优先搜索一致。

反过来,相同代价搜索可以看作是下一章要讲的启发式搜索的一个特殊情况。

广度优先和相同代价搜索方法的简要描述只给出了它们的主要思想,但是要解决其他复杂的情况则需要技术改进深度优先搜索一次对节点应用一个算子以产生该节点的一个后继。

每一个节点都留下一个标记,用来指示如果需要时所必需的附加算子。

对每一个节点,必须有一个决策来决定哪个算子先用,哪个次之等等。

盲目搜索与探索

盲目搜索与探索

24
3.1.3 深度优先搜索
2020/6/26
25
有界深度优先搜索
定义节点的深度如下: (1) 起始节点(即根节点)的深度为0。 (2) 任何其它节点的深度等于其父辈节点深度加上1。
• 对于许多问题,其状态空间搜索树的深度可能为无限深, 或者可能至少要比某个可接受的解答序列的已知深度上限 还要深。为了避免考虑太长的路径(防止搜索过程沿着无 益的路径扩展下去),往往给出一个节点扩展的最大深 度——深度界限。任何节点如果达到了深度界限,那么都 将把它们作为没有后继节点处理。值得说明的是,即使应 用了深度界限的规定,所求得的解答路径并不一定就是最 短的路径。
失败 成功
一、盲目搜索
盲目搜索又叫做无信息搜索,一般只适用于求解比较简 单的问题。主要包括宽度优先搜索、等深度优先搜索等。 特点:
1)搜索按规定的路线进行,不使用与问题有关的启发性 信息。
2)适用于其状态空间图是树状结构的一类问题。
13
1、 宽度优先搜索
定义:如果搜索是以接近起始节点的程度依次扩展节点的, 那么这种搜索就叫做宽度优先搜索(breadth-first search)。
2020/6/26
29
八数码难题的深度优先搜索树
2020/6/26
30
二、 启发式搜索
盲目搜索的不足:
效率低,耗费过多的计算空间与时间。 宽度优先搜索、深度优先搜索,或等代价搜索算法,是按事
先规定的路线进行搜索,或按已经付出的代价决定下一步 要搜索的节点,其主要差别是OPEN表中待扩展节点的顺 序问题。如果找到一种方法用于排列待扩展节点的顺序, 即选择最有希望的节点加以扩展,那么,搜索效率将会大 为提高。
基本思想:

第二章 人工智能搜索

第二章 人工智能搜索

搜索法中的问题表示
• 对问题进行形式化描述,便于计算机处理。 • 描叙方法对搜索效率有很大的影响。 • 一般用状态空间来表示待求解的问题。
状态空间法(1)
• 找到一个数,该数大于等于13548并且能够被
• • •
13547整除。 问题的论域为【13548,+∞】,为了计算机处 理,可以选择一个足够大的数。 因此,问题的状态空间可以定义为【13548, 1E20】。所有的状态空间构成一个连续自然数序 列。 用状态空间表示法描叙问题时,要定义状态空间, 表示问题的全部可能状态和相互关系。
能找到 • 搜索的效率,避免生成或扩展无用的点。 • 控制开销。即控制策略的开销要尽可能小。
• 几个目标之间有冲突,在以上几个目标中
寻求平衡。
1.1 回溯策略
• 例:皇后问题
Q Q Q Q
()
Q ()
((1,1))
Q () Q
((1,1))
((1,1) (2,3))
Q ()
((1,1))
((1,1) (2,3))
搜索图与搜索树的比较
• 如果采用广度优先搜索算法,优点为实现
简单,但是有可能需要重复处理多次。 • 如果采用深度优先搜索算法,有可能陷入 死循环。需要采用一定的策略避免。 • 图搜索需要额外的计算去检查下一个节点 是否已经生成过。(可以使用广度或深度 优先来遍历图产生生成树)
搜索算法的衡量标准
• 搜索算法的完备性,即只要有解,就一定
– 盲目搜索 – 启发式搜索
• 关键问题:
如何利用知识,尽可能有效地找到问题 的解(最佳解)。
搜索问题(续2)
• 讨论的问题:
– 有哪些常用的搜索算法。 – 问题有解时能否找到解。 – 找到的解是最佳的吗? – 什么情况下可以找到最佳解? – 求解的效率如何。

6第六讲 第三章(盲目、启发搜索)

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 启发式搜索
盲目搜索的不足:效率低,耗费空间与时间。 启发式搜索:利用问题本身特性信息(启发信息) 指导搜索过程。是有序搜索。 一、启发式搜索策略 启发式信息主要用途:

人工智能ch3 盲目搜索

人工智能ch3 盲目搜索
– 扩展某节点时图G已保存了从初始节点到该节点的搜索树。 – G中每个节点(S除外)有且仅有一个指向G中一个父节点的 指针。 – OPEN表中节点都是搜索图上未被扩展的端节点。 – CLOSED 表中节点,是已被扩展但没有生成后继节点的端 节点, 或是搜索树的非端节点。
3.1 一般搜索过程
三、几点说明
代价树的宽度优先搜索算法
3.3 宽度优先搜索
3.4 代价树的宽度优先搜索算法
例:城市交通问题。 设有5个城市, 它们之间的交 通路线如图所示,图中的数字 表示两个城市之间的交通费用,
即代价。
求从A市出发到E市,费用最 小的交通路线。 结论:在搜索树中给每条边 都标上代价。
3.4 代价树的宽度优先搜索
第3章 盲目搜索
3.1 一般搜索过程
3.2 回溯策略 3.3 宽度(广度)优先搜索 3.4 代价树的宽度优先搜索 3.5 深度优先搜索
搜索、推理与人工智能
搜索是人工智能中的一个基本问题,是推理不可分 割的一部分,它直接关系到智能系统的性能与运行效率, 尼尔逊把它列为人工智能研究中的核心问题之一。
搜索的基本问题:
一、代价树生成方法
从初始节点A开始,把与A直接 相邻的节点作为子节点。 对其他节点作相同处理。 若一个节点已是某节点的直系 先辈节点,就不能再作为该节点的 子节点。 除 A 外,其它节点可能在代价 树中多次出现。为便于区分,用下 标1, 2, ……标出。
3.4 代价树的宽度优先搜索
二、代价的定义
3.2 回溯策略
回溯策略的几点说明
各种合适的推理规则或其他问题求解操作都可以应用于 PS,得到一些新的子节点有序集; 为避免死循环,若有序集中的子节点已在 3张表的任一表 中,说明它已被搜索过,不需要再考虑;

人工智能答案终极版

人工智能复习参考(2015工程硕士)第1章绪论1-1.什么是人工智能?它的研究目标是什么?人工智能(Artificial Intelligence),简称AI,又称机器智能(Machine Intelligence,MI),主要研究用人工的方法和技术开发智能机器或智能系统,以模仿、延伸和扩展人的智能、生物智能、自然智能,实现机器的智能行为。

近期目标:人工智能的近期目标是实现机器智能。

即先部分地或某种程度地实现机器智能,从而使现有的计算机更灵活好用和更聪明有用。

远期目标:人工智能的远期目标是要制造智能机器。

具体讲就是使计算机具有看、听、说、写等感知和交互能力,具有联想、学习、推理、理解、学习等高级思维能力,还要有分析问题解决问题和发明创造的能力。

1-2.人工智能有哪些研究方法和途径?简单描述它们的特点。

一、传统划分法1.符号主义:以人脑的心理模型为依据,将问题或知识表示成某种符号,采用符号推演的方法,宏观上模拟人脑的推理、联想、学习、计算等功能,实现人工智能。

2.连接主义:不仅要求机器产生的智能和人相同,产生的过程和机理也应该相同。

人或某些动物所具有的智能皆源自于大脑,通过对大脑微观结构的模拟达到对智能的模拟,这是一条很自然的研究人工智能的途径。

3.行为主义:模拟人在控制过程中的智能活动和行为特性,如自适应,自寻优、自学习、自组织等,以此来研究和实现人工智能。

二、现代划分法1.符号智能:是对智能和人工智能持狭义的观点,侧重于研究任何利用计算机软件来模拟人的抽象思维过程,并把思维过程看成是一个抽象的符号处理过程。

2.计算智能:计算机智能又重新回到依靠数值计算解决问题的轨道上来,它是对符号智能中符号推演的再次否定。

3.群体智能:它认同智能同样可以表现在群体的整体特性上,群体中每个个体的智能虽然很有限,但通过个体之间的分工协作和相互竞争,可以表现出很高的智能。

1-3.为什么能够用机器(计算机)模仿人的智能?假设:任何一个系统,如果它能够表现出智能,那么它就必定能够执行上述6种功能:输入符号;输出符号;存储符号;复制符号;建立符号结构;条件性迁移:反之,任何系统如果具有这6种功能,那么它就能够表现出智能,这种智能指的是人类所具有的那种智能。

搜索介绍


状态空间表示法: 状态空间表示法是用“ 状态” 状态空间表示法 : 状态空间表示法是用 “ 状态 ” 和 算符”来表示问题的一种方法。 “算符”来表示问题的一种方法。 状态: ● 状态:状态是描述问题求解过程中任一时刻状 况的数据结构。 况的数据结构。 算符:引起状态的某些分量变化, ● 算符:引起状态的某些分量变化,从而使问题 从一个状态变为另一个状态的操作称为算符。 从一个状态变为另一个状态的操作称为算符。 状态空间: ● 状态空间:问题的全部状态和一切算符所构成 的集合成为状态空间。 的集合成为状态空间。
struct tnode{ .... }state[maxn]; void init(); bool extend(); bool repeat(); bool find() void outs(); void printpath(); //定义一个结点数据类型 定义一个结点数据类型 //根据具体问题确定所需的数据类型 根据具体问题确定所需的数据类型 //定义 定义tnode类型的数组作为存储结点的队列 定义 类型的数组作为存储结点的队列 //初始化函数 初始化函数 //判断结点是否能扩展,如果能则产生新结点 判断结点是否能扩展, 判断结点是否能扩展 //检查新结点是否在队列中已经出现 检查新结点是否在队列中已经出现 //检查新结点是否目标结点 检查新结点是否目标结点 //输出结点状态 输出结点状态 //输出路径 输出路径
搜索技术
要解决的问题大多数是结构不良或者非结构的问题, 要解决的问题大多数是结构不良或者非结构的问题, 对这样的问题一般不存在成熟的求解算法, 对这样的问题一般不存在成熟的求解算法,而只能利 用已有的知识一步步地摸索着前进。在这个过程中, 用已有的知识一步步地摸索着前进。在这个过程中, 存在着如何寻找一条推理路线, 存在着如何寻找一条推理路线,使得付出的代价尽可 能地少,而问题又能够得到解决。 能地少,而问题又能够得到解决。我们称寻找这样路 线的过程为搜索。 线的过程为搜索。

《人工智能通识》教材主要内容

1、以科学工程案例综合评价模型为指导,进行人工智能基础能力的测评。

能力模型如下:(1)工程思维a、用思维导图表达的能力b、设计草图及利用现有材料进行实现的能力c、对实现结果进行分析和评价的能力d、结构、物理、电子、控制等基础知识掌握程度e、利用现有知识进行工程问题实现的能力(2)计算思维a、数据分析及建立模型的能力b、计算思维应用到不同学科中的能力c、信息筛选及判断的能力d、信息技术及编程能力的掌握程度(3)创造性思维a、辨别信息真伪、偏差及其是否全面b、建立跨学科的知识和视野c、利用知识和创造力去解决复杂的真实问题(4)批判思维和表达能力a、利用现有数据及模型进行推理的能力b、将复杂问题及解决方案用简易图表或语言讲解的能力。

(二)知识点详述1、人工智能知识(1)人工智能及机器人的定义和概念;(2)人工智能及机器人的发展史;(3)人工智能及机器人的应用场景及未来发展趋势;(4)人工智能与机器人的关系;(5)了解百度等人工智能开放平台简单功能;2、图灵测试(1)图灵测试的定义;(2)图灵测试的争议和批评;(3)强人工智能与弱人工智能;(4)启发法;(5)长方体的对角线:解决一个相对简单但相关的问题(6)识别适用人工智能来求解的问题(7)搜索算法和拼图(8)二人博弈(9)自动推理(10)产生式规则和专家系统(11)细胞自动机(12)神经计算(13)遗传算法(14)知识表示(15)不确定性推理(16)博弈(17)专家系统(18)神经计算(19)进化计算(20)自然语言处理(21)生物信息学3.盲目搜索(1)智能系统中的搜索状态空间图生成与测试范式回溯贪婪算法旅行销售员问题盲目搜索算法深度优先搜索广度优先搜索盲目搜索算法的实现和比较实现深度优先搜索实现广度优先搜索问题求解性能的测量指标DFS和BFS的比较4.知情搜索启发法知情搜索(第一部分)——找到任何解爬山法最陡爬坡法最佳优先搜索集束搜索搜索算法的其他指标分支定界法使用低估值的分支定界法采用动态规划的分支定界法知情搜索(第三部分)—高级搜索算法约束满足搜索与或树双向搜索博弈中的搜索博弈树和极小化极大评估启发式评估博弈树的极小化极大评估具有α-剪枝的极小化极大算法极小化极大算法的变体和改进负极大值算法渐进深化法启发式续篇和地平线效应概率游戏和预期极小化极大值算法博弈理论迭代的囚徒困境5.人工智能中的逻辑逻辑和表示命题逻辑命题逻辑—基础命题逻辑中的论证证明命题逻辑论证有效的第二种方法谓词逻辑——简要介绍谓词逻辑中的合一谓词逻辑中的反演将谓词表达式转换为子句形式其他一些逻辑二阶逻辑非单调逻辑模糊逻辑模态逻辑6、知识表示图形草图和人类视窗图和哥尼斯堡桥问题搜索树表示方法的选择产生式系统面向对象框架法脚本和概念依赖系统语义网络关联新近的方法概念地图概念图Baecker的工作智能体:智能或其他智能体的一些历史当代智能体语义网7、产生式系统CARBUYER系统产生式系统和推导方法冲突消解正向链接反向链接产生式系统和细胞自动机随机过程与马尔可夫链8.人工智能中的不确定性模糊集模糊逻辑模糊推理概率理论和不确定性9.专家系统专家系统的特点知识工程知识获取经典的专家系统DENDRALMYCINEMYCINPROSPECTOR模糊知识和贝叶斯规则提高效率的方法守护规则Rete算法基于案例的推理改善就业匹配系统振动故障诊断的专家系统自动牙科识别更多采用案例推理的专家系统10.机器学习机器学习:简要概述机器学习系统中反馈的作用归纳学习利用决策树进行学习适用于决策树的问题熵使用ID3构建决策树11.神经网络麦卡洛克-皮茨网络感知器学习规则增量规则反向传播实现关注点模式分析训练方法离散型霍普菲尔德网络应用领域12.受到自然启发的搜索引言模拟退火遗传算法遗传规划禁忌搜索蚂蚁聚居地优化13.现在和未来机器人技术服务人类、仿效人类、增强人类和替代人类早期机械机器人电影与文学中的机器人机器人的组件运动点机器人的路径规划移动机器人运动学应用:21世纪的机器人14.高级计算机博弈跳棋:从塞缪尔到舍弗尔在跳棋博弈中用于机器学习的启发式方法填鸭式学习与概括签名表评估和棋谱学习含有奇诺克程序的世界跳棋锦标赛彻底解决跳棋游戏国际象棋:人工智能的“果蝇”计算机国际象棋的历史背景编程方法超越地平线效应Deep Thought和Deep Blue与特级大师的比赛(1988—1995年计算机国际象棋对人工智能的贡献在机器中的搜索在搜索方面,人与机器的对比启发式、知识和问题求解15.人工智能应用知识智能助理新闻推荐和新闻撰稿机器视觉AI艺术新一代搜索引擎机器翻译自动驾驶机器人深度学习大数据云计算弱人工智能、强人工智能和超人工智能跨领域推理抽象能力人工智能工作将发生转变场景自动驾驶智慧金融金融行业AI应用案例智慧生活智慧医疗艺术创作人类将如何变革用开放的心态迎接新世界AI将成为国家科技战略的核心。

盲目搜索启发式搜索


2015-3-22
39
有序状态空间搜索算法
(6) 扩展节点i生成其全部后继节点。对于i的每一个后继节点j: – (a) 计算f(j)。 – (b) 如果j既不在OPEN表中,又不在CLOSED表中,则用估 价函数 f 把它添入 OPEN 表。从 j 加一指向其父辈节点 i 的指 针,以便一旦找到目标节点时记住一个解答路径。 – (c) 如果 j 已在 OPEN 表上或 CLOSED 表上,则比较刚刚对 j 计算过的f值和前面计算过的该节点在表中的 f值。如果新 的f值较小,则 (i) 以此新值取代旧值。 (ii) 从j指向i,而不是指向它的父辈节点。 (iii) 如果节点j在CLOSED表中,则把它移回OPEN表 (7) 转向(2),即GO TO(2)。
2015-3-22
24
3.1.3 深度优先搜索
2015-3-22
25
有界深度优先搜索
定义节点的深度如下: (1) 起始节点(即根节点)的深度为0。 (2) 任何其它节点的深度等于其父辈节点深度加上1。 • 对于许多问题,其状态空间搜索树的深度可能为无限深, 或者可能至少要比某个可接受的解答序列的已知深度上限 还要深。为了避免考虑太长的路径(防止搜索过程沿着无 益的路径扩展下去 ) ,往往给出一个节点扩展的最大深 度——深度界限。任何节点如果达到了深度界限,那么都 将把它们作为没有后继节点处理。值得说明的是,即使应 用了深度界限的规定,所求得的解答路径并不一定就是最 短的路径。

CLOSED表变化过程
编号 0 ቤተ መጻሕፍቲ ባይዱ 2 节点号 S0 A B 父节点号 空 S0 S0
图搜索的一般过程
(1) 建立一个只含有起始节点S的搜索图G,把S放到一 个叫做OPEN表的未扩展节点表中。 (2)建立一个叫做CLOSED的已扩展节点表,其初始为 空表。 (3)LOOP:若OPEN表是空表,则失败退出。 (4) 选择OPEN表上的第一个节点,把它从OPEN表移出 并放进CLOSED表中。称此节点为节点n。 (5) 若n为一目标节点,则有解并成功退出,此解是追 踪图G中沿着指针从n到S这条路径而得到的(指针将 在第7步中设置)。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

◦ 以上问题等价于在图中寻找从根节点到某个(或某些)
目标节点的一条(或一组)路径。

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 ()
Q
((1,1))
((1,1) (2,3))
Q ()
((1,1))
((1,1) (2,3))
Q ()
Q
((1,1))
((1,1) (2,3))
((1,1) (2,4))


盲目搜索 只是可以区分出哪个 是目标状态。 一般是按预定的搜索 策略进行搜索。 没有考虑到问题本身 的特性,这种搜索具 有很大的盲目性,效 率不高,不便于复杂 问题的求解。

启发式搜索 是在搜索过程中加入 了与问题有关的启发 式信息,用于指导搜 索朝着最有希望的方 向前进,加速问题的 求解并找到最优解。

可以看出,这种求解过程呈现出递归过程的性质。求解过程在每
个节点上的检查遵循着递归方式。

递归法是回溯策略的一种最直接的实现方法。

例:四皇后问题
◦ 在4×4方格的棋盘内, 放置四个皇后
◦ 使任意两个皇后不在同一 行、同一列、同一对角线 (斜线)上 ◦ 要求:找出所有的摆法

状态描述:
◦ 单个皇后位置的描述: 用(i,j)表示皇后在第i行j 列
内容: 状态空间的搜索问题。 搜索方式:
◦ 盲目搜索 ◦ 启发式搜索

关键问题: 如何利用知识,尽可能有效地找到问题的解(最 佳解)。

2.1.1 图的概念
◦ 图是节点及连接节点的弧的集合。 ◦ 由方向性的弧连接的图是有向图。 ◦ 节点深度的表示:根节点深度为0,其他节点深度dn+1=dn+1。 ◦ 路径:N个有序节点组成的序列中,若每对相邻节点都表示一条弧,则称该 序列为图中长度为N-1的一条路径。 ◦ 路径耗散值:令 C( ni,nj)为节点 ni到节点nj这段路径(或弧线)的耗散 值,一条路径的耗散值等于这条路径上所有弧线耗散值的总和。路径耗散 值可按如下递归公式计算:C(ni,t)=C(ni,nj)+C(nj,t) ◦ 节点的扩展:操作符(规则)作用到节点(对应于某一状态描述)上,生 成其所有后继节点(新状态),并给出弧线的耗散值(相当于使用规则的 代价),这个过程叫做扩展一个节点。
直接返回一个结果。所有递归程序都必须至少拥有一个基线条件,而且必须确保它 们最终会达到某个基线条件;否则,程序永远运行,直到缺少内存或者栈空间。
int ListLenght(LIST *pList) { if (pList == NULL) return 0; else return ListLength(pList->next)+1; }
((1,2))
((1,1) (2,3))
((1,1) (2,4))
((1,2) (2,4))
((1,1) (2,4) (3,2))
Q () Q Q
((1,1))
((1,2))
((1,1) (2,3))
((1,1) (2,4))
((1,2) (2,4))
((1,2) (2,4) (3,1))
((1,1) (2,4) (3,2))



搜索法的主要任务:确定以何种方式选择规则? 求任一解路的搜索策略: backtracking、 Hill Climbing、 Breadth-first、 Depth-first、Beam Search、 Best-first (A). 求最佳解路的搜索策略:Branch and Bound、 Dynamic Programming、Optimal search (A*). 求与或图解图的搜索策略: AO*、 Minimax、Alpha-beta Pruning、 Heuristic Pruning.
Q () Q Q
((1,1))
((1,2))
Q
((1,1) (2,3))
((1,1) (2,4))
((1,2) (2,4))
((1,2) (2,4) (3,1))
((1,1) (2,4) (3,2))
((1,2) (2,4) (3,1) (4,3))
从前有座山……
从前有座山……
从前有座山……
当前状态
18

例: 二阶Hanoi塔问题 已知三个柱子1,2,3和两个盘子A,B(A比B 小)。初始状态下,A和B依次放在1柱上。目标状 态是A和B依次放在3柱上。条件是每次可移动一个 盘子,盘子上方是空项方可移动,而且任何时候都 不允许大盘在小盘之上。
解: 1)定义问题状态的描述形式 设用SK=(SKA,SKB)表示问题的状态,SKA表示盘子 A所在的柱号,SKB表示盘子B所在的柱号。 2)用所定义的状态描述形式把问题的所有可能的状态 都表示出来,并确定出问题的初始状态集合描述和目标 状态集合描述。本问题所有可能的状态共有9种,如下 所示: S0=(1,1) S1=(1,2) S2=(1,3) S3=(2,1) S4=(2,2) S5=(2,3) S6=(3,1) S7=(3,2) S8=(3,3)
至此,该问题的状态空间(S,F,G)构造完成。
1 ,1
2 ,1
3 ,1
2 ,3
3 ,2
3 ,3
1 ,3
1 ,2
2 ,2
为提供对问题的形式描述,需要:
1.
定义状态空间,包含问题相关对象的各种可能排列。对空间 的定义不必枚举所有状态。 规定一个或多个属于该空间的初始状态。该状态用以描述问 题求解过程开始时的状态。 规定一个或多个属于该空间的目标状态。该状态用以判断是 否得到了问题的解。 规定一组规则。描述可使用的操作或算子。 将待求解问题转换成状态空间描述后,使用控制策略对 规则进行选择性的应用,在问题状态空间内进行搜索,直到

二阶Hanoi塔问题的状态
3)定义一组算符F 定义算符A(i,j)表示把盘子A从第i号柱 子移到第j号柱子上的操作;算符B(i,j)表示把 盘子B从第i号柱子移动到第j号柱子上的操作。这 样共定义了12个算符,分别是:
A(1,2) A(1,3) A(2,1) A(2,3) A(3,1) A(3,2) B(1,2) B(1,3) B(2,1) B(2,3) B(3,1) B(3,2)
((1,1) (2,4) (3,2))
()
((1,1))
((1,1) (2,3))
((1,1) (2,4))((1,1) (2,来自) (3,2))Q ()
((1,1))
((1,2))
((1,1) (2,3))
((1,1) (2,4))
((1,1) (2,4) (3,2))
Q () Q
((1,1))
图是最直观的描述问题状态空间的工具,属于显
式描述。 图中的节点表示问题的状态,图中的弧表示状 态之间的关系。 初始状态对应待求解问题的已知信息,是图的
根节点。

状态空间法将一个待定问题的求解过程定义为若干
算子与搜索的有机结合体。
◦ 算子定义了对状态的操作,求解的目的在于找出从初始 状态转换为某个(或某些)目标状态的一个(或一组) 操作算子序列。
目标状态g
int factorial (int n) { if (n == 1) { return 1; } else { return n * factorial (n - 1); }
}
只要初始值大于零,factorial函数就能够终止。停止的位置称为基线条件
(base case)。基线条件是递归程序的最底层位置,此位置没有必要再进行操作,


回溯策略是一种尝试状态空间中各种不同路径的技术。
回溯搜索从初始状态出发,不停地、试探地寻找路径直到找到目
标节点或“不可解节点”—“死胡同”。
◦ 找到目标节点,退出搜索,返回解路径。 ◦ 遇到不可解节点时,回溯到路径中最近的父节点上,查看该节点是否还有 其他子节点未被扩展,如有则沿这些子节点继续搜索。
2)算符:引起状态中某些分量发生变化, 从而使问题由一个状态变为另一个状态的操作称为 算符。 3)状态空间:由表示一个问题的全部状态 及一切可用算符构成的集合称为该问题的状态空间。 用三元组表示:(S,F,G),其中S表示问题所 有可能的初始状态的集合、F表示算符集合、G表 示目标状态的集合;状态空间的图示形式称为状态 空间图,其中节点表示状态,有向边表示算符。
相关文档
最新文档