【笔记】人工智能 一种现代方法 人工智能 一种现代方法 第6章 用搜索树对问题求解
人工智能 一种现代方法 第6章 用搜索树对问题求解
6.1定义约束满足问题(CSP)
变量的集合: X={X1, X2,...Xn}
值域:D={D1, D2...Dn}
约束关系:C
6.1.1地图着色问题
要求相邻区域颜色不同,可把问题形式化为CSP问题。
常规搜索只能问:这个解是目标吗?
CSP一旦发现某部分赋值不满足约束,便可立即剪枝,不再进一步求精。
6.1.2作业调度问题
过程约束:某部分工作需要在其他工作之前完成
洗去约束:几个工作之间不能有时间上的重合
6.1.3CSP的形式化
离散的、连续的、有限值域的、无限值域的
一元约束、二元约束、全局约束
任意有限值域的约束都可以引入约束变量而转换为二元约束
6.2约束传播:CSP中的推理
约束传播可以减小变量的合法取值范围,可以与搜索交替进行,也可以作为搜索前的预处理步骤。
核心思想为局部相容性。
6.2.1结点相容
如果对于单个变量(一个结点),值域(该结点的值域)中的所有取值满足他的一元约束,就称此变量是结点相容的。
运行结点相容可消除一元约束,可将n元约束转换为二元约束。
6.2.2弧相容
如果CSP中某变量值域中的所有取值满足该变量的所有二元约束,则称为弧相容。
AC-3算法:
先把所有弧装入队列
当弧队列不为空时,循环弹出一个弧
如果弧两端的节点满足弧相容,则继续
如果不满足弧相容,即一个结点的值域要变小
保存变小后的值域
把指向该结点的所有弧重新插入队列
6.2.3路径相容
对于{Xi, Xj}的每一个相容赋值,Xm都有合适的取值同时使得{Xi, Xm}和{Xm, Xj}是相容的。
6.2.4 k-相容
对于任一个k-1个变量的相容赋值,第k个变量总能被赋予和前k-1个变量相容的值
1-相容:结点相容
2-相容:弧相容
3-相容:路径相容
6.2.5全局约束
Alldiff约束:每一个变量都不能相同
atmost约束:资源总和受限
6.2.6 数独游戏9*9
一共有27个Alldiff约束,行9列9方框9
6.3 CSP的回溯搜索
可交换性:对于行动的先后顺序对结果没有影响的问题,可以交换行动顺序。从排列变为组合。
回溯搜索:每次为一个变量赋值,当没有合法值时就回溯到上一个有合法值的变量。
6.3.1变量的取值顺序
var <- SELECT-UNASSIGNED-VARIABLE(csp)
选择下一个未安排的节点的顺序对效率有很大影响
最少剩余价值(MRV)启发式:选择合法取值最少的变量。----强有力的指引
也就是选择最少剩余值的变量,通过早期有效剪枝,降低搜索树结点数。
度启发式:选择与其他未赋值变量约束最多的变量来试图降低未来的分支引子。----打破僵局
最少约束值启发式:给邻居变量留下更多的选择。对于只需要找到一个解的问题有效。
6.3.2搜索与推理交错进行
向前检验:只要某个X赋值了,对于动过约束与X相关的未赋值的变量Y,从Y的值域中删除与X不相容的值。
维护弧相容(MAC):能够检测所有的不相容,当变量Xi被赋值后,INFERENCE调用AC-3。
6.3.3智能回溯:向后看
BACKTRACKING-SEARCH
时序回溯:当一个分支上的搜索失败时,退回前一个变量并尝试另一值。
回跳:回溯到冲突集中时间最近的赋值,跳过与当前节点没有冲突的节点。
冲突指导的回跳:先找出当前变量的冲突集,回跳到冲突集中最近的元素,并将新元素的冲突集与原冲突集取并集,在减去新元素,检验是否还有冲突,循环。可以知道要退回多远
【笔记】人工智能 一种现代方法 人工智能 一种现代方法 第6章 用搜索树对问题求解相关推荐
- 两种不同的人工智能观:工程观点和科学观点
来源:人机与认知实验室 作者按:人工智能是作为工程还是科学,这个问题是一个很严肃的问题,如果从工程技术角度来看人工智能,那么认知科学尤其是认知心理学.神经生理学对人类这样的生物智能的原理性认识,就不需 ...
- 人工智能是用计算机模拟人的智能特别是模拟,张钹院士:人工智能是让计算机模拟人的三种功能...
张钹院士:人工智能是让计算机模拟人的三种功能 现在人工智能为什么这么热,大家热情这么高,我觉得一个重要的原因是需求很旺盛,不管是第一产业.第二产业(制造业)或者第三产业(服务业)都存在智能化的需求.目 ...
- python人工智能算法的方式_人工智能及数学运算的基础方法
一.人工智能的五大核心技术 人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 人工 ...
- 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...
- 人工智能导论第一次作业(人工智能有哪些研究途径与方法?它们的关系如何?人工智能有哪些研究内容?人工智能领域有哪些分支领域和研究方向?现在人工智能有哪些学派?它们的认知观是什么?......)
人工智能有哪些研究途径与方法?它们的关系如何? (1)研究途径与方法 "心理模拟.符号推演" 心理学派.逻辑学派和符号主义的基于"心理模拟和符号推演"的人工智能 ...
- ai物流智能调度 效率对比_人工智能在物流中:人工智能改变物流的5种方式
ai物流智能调度 效率对比 A man who has been sleeping for twenty years and woke up in 2020 would find himself in ...
- 【论文笔记】李盟, et al. 一种恶意代码特征选取和建模方法. 计算机应用与软件 08(2015):272-277.
前言 论文笔记. 论文笔记 出处及年份 <计算机应用与软件 Computer Applications and SoftwareVol.>第32卷第8期2015年8月 论文标题 一种恶意代 ...
- JNI开发笔记(六)--一种更规范的so库生成方法
一种更规范的JNI工程写法 引 前言 1. MainActivity中的两个重要的语句 2. 建立Util类来替代MainActivity 3. 在MainActivity中验证JNI工程并生成so库 ...
- python 人工智能编程_最适合人工智能开发的5种编程语言
自从去年,AlphaGo打遍天下棋手无对手,人工智能的风头就一直无人能及.在刚刚过去的IT领袖峰会上,BAT三位大佬都看好人工智能的未来发展.今年年初,百度就做了一个大动作,在医疗方面押宝人工智能,所 ...
- python人工智能入门书籍推荐-最适合人工智能开发的5种编程语言 附人工智能入门书籍...
人工智能是一个很广阔的领域,很多编程语言都可以用于人工智能开发,所以很难说人工智能必须用哪一种语言来开发.选择多也意味着会有优劣之分,并不是每种编程语言都能够为开发人员节省时间及精力.所以我们整理了5 ...
最新文章
- 数据库开发基本操作-关于sql server 2005 未开放1433端口的问题
- 第一百三十节,JavaScript,封装库--连缀
- 1390: 队列问题(1)(vector模拟)
- RDS使用只读副本和多AZ的区别在于数据复制的机制
- python查漏补缺--抽象类和接口以及Overrides、函数重载
- 知乎万赞:哪一刻你发现年轻人正在悄悄改变社会?
- Android工程Gradle仓库配置及说明
- Open Graphics Library初步_搭建环境_GLUT
- 计算机系统安装要点,电脑重新装系统要注意哪些要点 重装系统时的六大事项...
- 内核功能导致重启_错误信息:VS2010 Profiler导致Win7重启
- 适合新手绘制房间布置图的电脑软件
- 开源代码检测FOSSID
- 社区电商平台有哪些运营模式
- 一文看懂 Theorem Theory Proposition Lemma Corollary Claim 的区别
- MDN Web Docs
- 使用CAS部署SSO服务的简单实现
- shell查mysql_通过shell检查mysql主机和数据库,生成html报表的脚本
- 2023年市场规模将超147亿美元,中国人工智能产业的“风口”来了吗?
- 机器学习 鸢尾花分类的原理和实现(一)
- GRE_verbal