高级人工智能—约束推理(学习)
2013-12-05 10:14
330 查看
约束满足问题(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
现实生活中的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
相关文章推荐
- [转载] 高级人工智能——第3章 约束推理
- Unity人工智能学习—高级随机运动
- Python数据挖掘,AI人工智能,机器学习,深度学习,高级项目实战
- Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例
- 机器学习与人工智能学习资源导引(转自刘未鹏)
- 算法学习--高级数据结构
- 如何探索一门未知领域新技术?看腾讯前端高级工程师的学习历程
- Python学习-高级特性
- python学习--高级篇
- python高级-------python2.7教程学习【廖雪峰版】(四)
- 尚观第6天学习笔记高级命令篇
- Linux学习第七篇--linux文件存放约束
- Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定的方法
- Python学习入门基础教程(learning Python)--6.3 Python的list切片高级
- 高级sql学习——相关子查询和非相关子查询!!!
- 人工智能深度学习神经网络在双色球彩票中的应用研究(一)
- javascript高级程序设计--学习笔记2 (第三章补充和第四章补充)
- 漫画:如何学习人工智能?
- 【原创】《Linux设备驱动程序》学习之循序渐进 --- 高级字符驱动程序操作
- 学习sqlite3(四)---SQLite中的高级SQL