人工智能导论(5)——搜索策略(Search Strategy)
文章目录
- 一、 概述
- 二、 重点内容
- 三、 思维导图
- 四、 重点知识笔记
- 1. 概述
- 1.1 基本概念
- 1.2 状态空间图表示
- 2. 搜索过程及回溯策略
- 3. 盲目搜索
- 3.1 宽度优先搜索
- 3.1 深度优先搜索
- 4. 启发式搜索
一、 概述
人工智能经典三大基本技术为:知识表示、推理、搜索策略。
其中搜索直接关系到智能系统的性能与运行效率,搜索技术渗透在各种人工智能系统中。专家系统、自然语言理解、自动程序设计、模式识别、机器学习、信息检索和博弈等领域都广泛使用搜索技术。
为方便记忆和回顾,根据个人学习,总结人工智能基础知识和思维导图形成系列。
二、 重点内容
- 基本概念
- 状态空间图表示方法
- 盲目搜索
- 启发式搜索
三、 思维导图
四、 重点知识笔记
1. 概述
1.1 基本概念
求解一个问题时,涉及到两个方面:
- 问题的表示
- 选择一个相对合适的求解方法
问题求解的基本方法:
- 搜索法
- 归约法
- 归结法
- 推理法
- 产生式
搜索就是找到智能系统的操作序列(如下棋走一步棋)的过程,是一种求解问题的一般方法。
1.2 状态空间图表示
概念
人工智能中把描述问题的有向图称为状态空间图,简称状态图。
- 状态图中的结点代表问题的一种格局,一般称为问题的一个状态;
- 边表示两结点之间操作关系
状态2↗操作1╱
状态1——操作2——>状态3╲操作3↘状态4
状态空间表示法
状态空间表示法是指用“状态”和“操作”组成的“状态空间”来表示问题求解的一种方法。
(1)状态state
描述问题求解过程中不同时刻下状况的一组变量或数组。
S=[s1, s2, ...]
例如:三个硬币的正反面状态
- 状态1:
[正,正,正]
- 状态2:
[正,正,反]
- 状态3:
[正,反,反]
- 等共8种状态
(2)操作operator
操作表示引起状态变化的一组关系或函数。
例如:上述示例中的,给某个硬币翻面。
(3)状态空间state space
用状态变量和操作符号,表示系统或问题。
示例:八数空间问题
初始状态:
31257846\color{#888} \begin{array}{|c|c|c|} \hline 3 & 1 & 2 \\ \hline 5 & & 7 \\ \hline 8 & 4 & 6 \\ \hline \end{array} 35814276
目标状态:
12384765\color{#888} \begin{array}{|c|c|c|} \hline 1 & 2 & 3 \\ \hline 8 & & 4 \\ \hline 7 & 6 & 5 \\ \hline \end{array} 18726345
状态集:数字在表格中的所有排法。
操作算子:空格上移、空格左移、空格下移、空格右移。
2. 搜索过程及回溯策略
搜索过程
- 从初始状态出发
- 不断地、试探性地寻找路径
- 达到目的或者“死胡同”
回溯策略
- 遇到“死胡同”,就回溯到路径最近的父节点
- 查看该节点是否还有其他子节点
- 若有,沿着子节点继续搜索
- 若无,继续回溯
- 找到目标就成功退出搜索
回溯搜索算法的术语说明
- PS(path states)表:当前搜索路径的状态。如果找到了目标,PS就是解的路径。
- NPS(new path states)表:新路径状态表。待搜索的状态。
- NSS(no solvable states)表:不可解状态集,即“死胡同”状态表。记录无解的路径,遇到路径上的状态就立即排除。
3. 盲目搜索
盲目搜索是指在问题的求解过程中,不运用启发性知识,需要进行全方位的搜索,而没有选择最优的搜索途径。这种搜索具有盲目性,效率较低,容易出现“组合爆炸”问题。
典型的盲目搜索有深度优先搜索和广度优先搜索。
3.1 宽度优先搜索
宽度优先搜索(Breadth-First Search,BFS)又称为广度优先搜索。
宽度优先搜索是指:
- 从初始结点S0开始
- 向下逐层搜索:在n层结点未搜索完之前,不进入n+1层搜索
搜索路径示意图如下:
宽度优先搜索的复杂度
- 时间复杂度度:O(bn) 指数
- 空间复杂度度:O(bn) 最坏为指数
宽度优先搜索特点
- 时间空间复杂度都比较高
- 搜索效率低
- 可总可以找到目标节点,而且是最短路径节点
3.1 深度优先搜索
深度优先搜索(Depth-First Search,DFS)是一种一直向下的搜索策略:
- 从初始结点S0开始
- 按生成规则生成下一级各子结点
- 逐级“纵向”深入搜索,直至达到目标节点
搜索路径示意图如下:
深度优先搜索的复杂度
- 时间复杂度度:O(bn) 指数
- 空间复杂度度:O(bn) 线性
深度优先搜索特点
- 需要较少的空间(只需要保存搜索树的一部分)
- 可能搜索到了错误的路径(有些问题具有无限的搜索树,可能无法返回正确的路径)
- 最终可能会陷入无限循环,不能给出答案
- 或者找到一个路径很长,且不是最优的答案
有界深度搜索和迭代加深搜索
对于深度比较大的情况,深度优先可能搜索需要很长的运行时间,而且可能得不到解答。一种比较好的问题求解方法是对搜索树的深度进行控制,即有界深度优先搜索方法。
深度优先搜索过程总体上按深度优先算法进行,但对搜索深度需要给出一个深度限制。当深度达到了限制深度时,如果还没有找到解答,就停止对该分支的搜索,换到另一个分支进行搜索。
4. 启发式搜索
利用与问题有关的启发信息进行搜索。
在搜索过程中,关键的一步是如何确定下一个要考察的节点,确定方法不同就形成了不同的搜索策略。如果在确定节点时能利用问题的启发信息,估计出节点的重要性,就可以在搜索时选择重要性高的节点。
估价函数
用于估计节点重要性的函数称为估价函数。其一般形式为:
f(x)=g(x)+h(x)f(x)=g(x)+h(x)f(x)=g(x)+h(x)
- g(x)g(x)g(x)表示从初始节点到节点x,已经实际付出的代价
- h(x)h(x)h(x)表示从节点x到目标节点的最优路径的估计代价
八数码问题的多种估价函数
- 最简单的估价函数:与目标相比,位置不符合的数字数量。
- 较好的估价函数:各数字移动到目的位置所需移动距离的总和。
- 第三种估价函数:对每一对逆转数字乘以一个倍数。
- 第四种估价函数:将位置不符合的数字数目总和与3倍逆转数目相加。
一般启发式图搜索算法(简记为A算法)
待搜索状态表按照f(x)进行排序。
A*算法
- 最小代价函数:f*(x)=g*(x)+h*(x)
- f*(x)——从初始状态到目标状态的最小代价
- g*(x)——从初始状态到x的最小代价
- h*(x)——从x到目标状态的最小代价
- 估价函数f(x)=g(x)+h(x)如果满足以下条件,称为f*(x)的估价函数
- g(x)是g*(x)的估计,且g(x)>0
- h(x)是h*(x)的估计,且有:h(x)≤h*(x)
使用f*(x)的估价函数对待搜索状态表按照f(x)进行排序的算法,称为A*算法。
在A*算法中:
- g(x)笔记容易得到,随着更多搜索信息的获得,g(x)的值呈下降趋势
- h(x)的确定依赖于具体问题领域的启发性信息,其中h(x)≤h*(x)的限制十分重要,它可以保证A*算法都能找到最优解。
个人总结,部分内容进行了简单的处理和归纳,如有谬误,希望大家指出,持续修订更新中。
修订历史版本见:https://github.com/hustlei/AI_Learning_MindMap
人工智能导论(5)——搜索策略(Search Strategy)相关推荐
- 2023 hnust 湖南科技大学 大三下 人工智能导论课程 期中考试复习笔记
前言 ★大概率考 ✦个人推测考点 ※补充内容 没有完全覆盖"人工智能导论复习2023.pdf"的重点 致谢:hwl.lyf.lqx 题型 问答:5*10分 综合:15分 设计:25 ...
- dlut-KFQ人工智能导论答案1
人工智能导论作业,仅对fans开放,不要外传,不一定对,最后两个不要抄!!!!! 定义h=n*k n为已经走的步数,k为不同的数字的个数 基本步骤:编码,群体设定,适应度函数,选择复制,交叉重组,变异 ...
- 人工智能导论--浙江工业大学--王万良
人工智能导论 一.第一讲 人工智能概述 1.一般认为人类智能是知识与智力的总和,其中知识是一切智能行为的基础,而智力是获取知识并应用知识求解问题的能力. true2.人类智能的特征包括().感知能力记 ...
- 人工智能导论丁世飞第三版期末考试复习大纲
人工智能导论期末考试复习大纲 绪论 知识表示 确定性推理 搜索策略 机器学习 专家系统 进化计算 绪论 什么是智能?什么是人工智能? ➊ 智能是知识与智力的总和. ➋ 人工智能是研究开发用于模拟.延伸 ...
- 人工智能导论期末复习
配套教材人工智能导论第五版王万良著 第一章 绪论 了解人工智能的基本概念 P2 P5 智能的特征(4个) P2~4 感知.记忆思维.学习.行为能力 思维(3个)---简答 P3 逻辑. ...
- 人工智能导论系列目录
为方便记忆和回顾,根据个人学习,总结人工智能概论知识和思维导图形成系列. 人工智能导论系列目录 基本概念 经典三大基本技术(符号主义) 知识表示 推理技术 确定性推理 不确定性推理 搜索策略 人工智能 ...
- 人工智能相关名词解释(参考王万良教授《人工智能导论》以及网络博客)
人工智能相关名词解释(参考王万良教授<人工智能导论>以及网络博客) 1.机器学习:机器学习是一门多领域交叉学科,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已 ...
- 人工智能导论罗马尼亚问题实验一搜索算法C++实现详解
人工智能导论搜索算法实验 使用说明 题目要求 开始写代码之前的思考: 建立图 考虑深度优先搜索策略: 给出DFS的代码: 主函数 运行结果如下: 考虑宽度优先搜索策略 实现代码 输出结果: 考虑迭代加 ...
- 山东大学软件学院人工智能导论学习笔记
课程为山东大学软件学院人工智能专业2020年大二下学期的"人工智能导论"课程 目前课程内容:<人工智能导论(第四版)>1.2.3.4.5.6章 本学习笔记采用一种类似框 ...
最新文章
- vmware响应时间过长_性能调优高并发下如何缩短响应时间
- 数据库开发——MySQL——primary key
- Memcache分组和同步机制的实现
- SQLite第九课 sqlite3_set_authorizer案例
- Anormaly_Detection_with_Keras
- 彻底解决pip下载pytorch慢的问题
- django+echarts数据可视化(NBA球队数据可视化01)!
- 洛谷P4158 [SCOI2009]粉刷匠 题解
- android serviceconnection 作用,Android Service服务的相关介绍
- macbook系统占用硬盘大_苹果电脑系统占用硬盘过大,怎么解决
- flink流处理示例开发
- js函数提升和变量提升_关于在js中提升的真相
- PHP之ctype扩展
- VS2005 编译环境,解决 Runtime Error(运行时错误): R6034。
- python的树蕨类型(是数据嘿嘿嘿,打错发现挺好玩的)
- Pulmonary--Detection3
- 案例理解LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法
- HP C7000刀片服务器BIOS/iLO2/OA升级步骤
- CF Round597 Div.2
- 2009年度EXIN中国金牌、银牌、铜牌以及常规授权机构