人工智能 一种现代方法 第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章 用搜索树对问题求解相关推荐

  1. 两种不同的人工智能观:工程观点和科学观点

    来源:人机与认知实验室 作者按:人工智能是作为工程还是科学,这个问题是一个很严肃的问题,如果从工程技术角度来看人工智能,那么认知科学尤其是认知心理学.神经生理学对人类这样的生物智能的原理性认识,就不需 ...

  2. 人工智能是用计算机模拟人的智能特别是模拟,张钹院士:人工智能是让计算机模拟人的三种功能...

    张钹院士:人工智能是让计算机模拟人的三种功能 现在人工智能为什么这么热,大家热情这么高,我觉得一个重要的原因是需求很旺盛,不管是第一产业.第二产业(制造业)或者第三产业(服务业)都存在智能化的需求.目 ...

  3. python人工智能算法的方式_人工智能及数学运算的基础方法

    一.人工智能的五大核心技术 人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 人工 ...

  4. 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂

    Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...

  5. 人工智能导论第一次作业(人工智能有哪些研究途径与方法?它们的关系如何?人工智能有哪些研究内容?人工智能领域有哪些分支领域和研究方向?现在人工智能有哪些学派?它们的认知观是什么?......)

    人工智能有哪些研究途径与方法?它们的关系如何? (1)研究途径与方法 "心理模拟.符号推演" 心理学派.逻辑学派和符号主义的基于"心理模拟和符号推演"的人工智能 ...

  6. ai物流智能调度 效率对比_人工智能在物流中:人工智能改变物流的5种方式

    ai物流智能调度 效率对比 A man who has been sleeping for twenty years and woke up in 2020 would find himself in ...

  7. 【论文笔记】李盟, et al. 一种恶意代码特征选取和建模方法. 计算机应用与软件 08(2015):272-277.

    前言 论文笔记. 论文笔记 出处及年份 <计算机应用与软件 Computer Applications and SoftwareVol.>第32卷第8期2015年8月 论文标题 一种恶意代 ...

  8. JNI开发笔记(六)--一种更规范的so库生成方法

    一种更规范的JNI工程写法 引 前言 1. MainActivity中的两个重要的语句 2. 建立Util类来替代MainActivity 3. 在MainActivity中验证JNI工程并生成so库 ...

  9. python 人工智能编程_最适合人工智能开发的5种编程语言

    自从去年,AlphaGo打遍天下棋手无对手,人工智能的风头就一直无人能及.在刚刚过去的IT领袖峰会上,BAT三位大佬都看好人工智能的未来发展.今年年初,百度就做了一个大动作,在医疗方面押宝人工智能,所 ...

  10. python人工智能入门书籍推荐-最适合人工智能开发的5种编程语言 附人工智能入门书籍...

    人工智能是一个很广阔的领域,很多编程语言都可以用于人工智能开发,所以很难说人工智能必须用哪一种语言来开发.选择多也意味着会有优劣之分,并不是每种编程语言都能够为开发人员节省时间及精力.所以我们整理了5 ...

最新文章

  1. 数据库开发基本操作-关于sql server 2005 未开放1433端口的问题
  2. 第一百三十节,JavaScript,封装库--连缀
  3. 1390: 队列问题(1)(vector模拟)
  4. RDS使用只读副本和多AZ的区别在于数据复制的机制
  5. python查漏补缺--抽象类和接口以及Overrides、函数重载
  6. 知乎万赞:哪一刻你发现年轻人正在悄悄改变社会?
  7. Android工程Gradle仓库配置及说明
  8. Open Graphics Library初步_搭建环境_GLUT
  9. 计算机系统安装要点,电脑重新装系统要注意哪些要点 重装系统时的六大事项...
  10. 内核功能导致重启_错误信息:VS2010 Profiler导致Win7重启
  11. 适合新手绘制房间布置图的电脑软件
  12. 开源代码检测FOSSID
  13. 社区电商平台有哪些运营模式
  14. 一文看懂 Theorem Theory Proposition Lemma Corollary Claim 的区别
  15. MDN Web Docs
  16. 使用CAS部署SSO服务的简单实现
  17. shell查mysql_通过shell检查mysql主机和数据库,生成html报表的脚本
  18. 2023年市场规模将超147亿美元,中国人工智能产业的“风口”来了吗?
  19. 机器学习 鸢尾花分类的原理和实现(一)
  20. GRE_verbal

热门文章

  1. 商城网站前台html模板,网上购物商城前台模板HTML源码
  2. 三星 c5 pro android 7,三星C5 Pro安卓8.0系统内测开启
  3. GIS离线地图的下载与发布
  4. Java 将Excel转为OFD
  5. 在vc中实现获取汉字拼音的首字母
  6. LINUX 使用ssh客户端
  7. Anaconda下载、安装及配置教程
  8. Java读取数据库中的数据
  9. 计算机度分秒在线,角度计算器度分秒在线
  10. JAVA分布式快速开发基础平台iBase4J