约束满足问题(Constraint Satisfaction Problem, 简称CSP) 包含一组变量与一组变量间的约束。变量表示领域参数,每个变量都有一个固定的值域。变量的值域可能是有限的,例如一个布尔变量的值域包含两个值;也可能是离散无限的,如整数域;也可能是连续的,如实数域。

现实生活中的CSP

赋值问题: e.g., who teaches what class

时间安排: e.g., which class is offered when and where?

(1)约束可用于描述领域对象的性质、相互关系、任务要求、目标等。
(2)约束满足问题的目标就是找到所有变量的一个(或多个)赋值,使所有约束都得到满足。
(3)目前约束推理的研究主要集中在两个方面:
                       约束搜索:约束搜索主要研究有限域上的约束满足。对有限域而言,约束满足问题一般情况下是 一个 NP问题。现有方法:

回溯法
                                     约束传播
                                     智能回溯与真值维护
                                     可变次序例示
                                     局部修正法
                       约束语言:

CONSTRAINTS: 一种面向电路描述的约束表示语言。

CHIP:是简便、灵活而有效地解决一大类组合问题
                                     COPS:利用面向对象技术,将说明性约束表达与类型层次结合起来。

在实际应用中,算法的表现形式千变万化,但是算法的情况也和数据结构类似。常用的算法大致有如下一些: 贪心法、分治法(如二分法检索)、回溯法、动态规划法、局部搜索法、分支限界法

穷尽搜索方法:产生所有可能的树,然后根据评价标准选择一棵最优的树。

Exhaustive-Search-Top(P) {where P is a CSP of the  form(V,D,C)}
                                    1.   f:= the null assignment
                                    2.   return Exhaustive-Search(f, P)

Exhaustive-Search(f,P)
                                     1.    if f is a total assignment of the variables in P
                                     2.          if f satisfies the constraints in P
                                     3.                answer := f

4.          else 
                                     5.                 answer := Unsat
                                     6.     else 
                                     7.           v := some variable in P that is not yet assigned a value by f
                                     8.           answer := Unsat
                                     9.           for each value x while answer = Unsat
                                    10.                 f(v) := x
                                    11.                 answer := Exhaustive-Search(f, P)
                                    12.   return answer

贪心法:① 构造可行解的工作分阶段来完成;② 在各个阶段,选择那些在某些意义下是局部最优的方案,期望各阶段的局部最优的选择带来整体最优。

例:Dijkstra的最短路径算法、Kruskal的求最小生成树算法、信号灯问题

回溯算法:回溯法可以去掉一些不存在解的分支,从而大大减少搜索的次数。如八皇后问题、迷宫问题、深度优先周游树或图

Backtracking-Top(P)
                                    1    f := the null assignment
                                    2    return Backtracking(f,P)

Backtracking(f,P)
                                    1    if f is a total assignment of the variables in P
                                    2          answer := f
                                    3    else 
                                    4          v :=  some variable in P that is not yet assigned a value  by f
                                    5          answer := Unsat
                                    6          for each value x  while answer = Unsat
                                    7                  f(v) := x
                                    8                  if f  satisfies the constraints in P
                                    9                         answer := Backtracking(f,P)
                                   10   return answer

高级人工智能—约束推理(学习)相关推荐

  1. 【课程学习】(中国大学MOOC)武汉理工大学高级人工智能原理与技术课后习题笔记(1-5章)

    关于 拾年之璐 微信公众号:知行校园汇,点击查看,欢迎关注 其他平台(点击蓝字可访问): GitHub | Gitee | 哔哩哔哩 | 语雀 | 简书 | 微信小程序 | 知行达摩院 本文专栏:研究 ...

  2. 【课程学习】(中国大学MOOC)武汉理工大学高级人工智能原理与技术课后习题笔记(6-9章)

    关于 拾年之璐 微信公众号:知行校园汇,点击查看,欢迎关注 其他平台(点击蓝字可访问): GitHub | Gitee | 哔哩哔哩 | 语雀 | 简书 | 微信小程序 | 知行达摩院 本文专栏:研究 ...

  3. 高级人工智能 读书笔记

    高级人工智能 史忠植 3ed 教学园地 有该书 ppt  值得阅读,写得不错 参考书: Artificial Intelligence: Foundations of Computational Ag ...

  4. python开发需要掌握哪些知识-人工智能需要学习哪些专业课程知识?

    原标题:人工智能需要学习哪些专业课程知识? 谈到人工智能,相信大家已经不陌生了,人工智能技术在近两年已经火得人尽皆知,跟互联网技术火的时候一样,那时行业和产品只要跟互联网相结合,就能在这个风口分得一杯 ...

  5. 人工智能不是计算机领域能学么,华南理工大学《高级人工智能》考试真题1

    华南理工大学<高级人工智能>复习资料 第1部分绪论 1-1.什么是人工智能?试从学科和能力两方面加以说明. 人工智能是用计算机来表示和执行人类的智能活动, 人工智能(学科):是计算机科学中 ...

  6. AI前沿 | Gartner曲线5大趋势:传感和移动、超能人类、自动机器人、高级人工智能…...

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :新智元 [人工智能资源(书 ...

  7. 人工智能需要学习哪些编程语言?学人工智能要学python吗?

    人工智能(Artificial Intelligence,AI)需要学习的编程语言与其他领域相比略有不同,主要需要掌握以下几种编程语言: 人工智能需要学习哪些编程语言? Python:Python是人 ...

  8. [人工智能-深度学习-5]:神经网络基础 - 生物神经系统与神经元细胞简介

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:[人工智能-深度学习-4]:生物神经系统与神经元细胞简介_文火冰糖(王文兵)的博客-CSDN博客 ...

  9. [人工智能-综述-5]:人工智能课程学习的10大基本问题与学习方法的建议

    作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing 本文网址:https://blog.csdn.net/HiWangWenBing/article ...

最新文章

  1. BlockChain:《区块链世界简明生存指南(一块听听)》2017-06-06 李笑来—听课笔记分享(2)
  2. leetcode214. 最短回文串
  3. 阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7)
  4. Node.js log4js日志记录
  5. 用C语言解“计算圆周率”题
  6. Franka Emika机械臂快速入门教程
  7. Kali 2020.4下载安装详细教程
  8. 360董事长周鸿祎:网络攻击损害不亚于杀伤性武器
  9. WEB测试和App测试、Android和IOS测试区别
  10. 系统集成项目管理工程师计算题(沟通渠道)
  11. HTML网页下,在div标签中嵌套其他html页面
  12. 嵌入式linux 网络唤醒,GotoHTTP
  13. [特别篇] 评中国药学家距诺贝尔奖一步之遥
  14. python操作无界面的chrome浏览器(转)
  15. 企业信息安全注意事项
  16. 把圆形放入矩形的Packing问题
  17. 阿里云服务器在哪?阿里云服务器最新可选地域分享
  18. 不用root卸载手机系统软件
  19. JavaWeb_script
  20. 计算机管理器用户怎么打开,电脑设备管理器在哪里打开【图文】

热门文章

  1. 运维之道 | Kickstart+DHCP+FTP+TFTP+PXE 无人值守批量 Linux(Centos7)服务器安装
  2. 2018年个人年度规划
  3. LINUX--shell 脚本的应用
  4. 2021.1.25写写日记
  5. java 线程的说法_以下关于Java线程的说法,正确的是
  6. C语言学习笔记——printf
  7. iOS:你会如何设计一个框架,给别人使用!
  8. Snort规则入门学习
  9. FPGA设计——正弦信号发生器
  10. 开源公司IPO热潮已到来?市值153亿美元的HashiCorp带来了哪些启示?