1 / 132

AI: 问题求解

AI: 问题求解. 基本理论与方法. 内容提要. 搜索的定义 具体问题的形式化 盲信 息搜索 有 信息搜索 / 启发式搜索 优化问题的搜索算法 联机 / 在线搜索. 搜索的定义. 三国华容道. 找出 : 一个移动序列,放出 曹操. 8. 2. 1. 1. 1. 2. 2. 2. 3. 3. 3. 4. 4. 4. 3. 4. 7. 5. 5. 5. 6. 6. 6. 7. 7. 7. 8. 8. 8. 5. 1. 6. 9. 9. 9. 10. 10. 10. 11. 11. 11.

Download Presentation

AI: 问题求解

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AI: 问题求解 基本理论与方法

  2. 内容提要 • 搜索的定义 • 具体问题的形式化 • 盲信息搜索 • 有信息搜索/启发式搜索 • 优化问题的搜索算法 • 联机/在线搜索

  3. 搜索的定义

  4. 三国华容道 找出: 一个移动序列,放出曹操

  5. 8 2 1 1 1 2 2 2 3 3 3 4 4 4 3 4 7 5 5 5 6 6 6 7 7 7 8 8 8 5 1 6 9 9 9 10 10 10 11 11 11 12 12 12 ? 13 13 13 15 14 14 15 15 14 类似游戏:数码(8,15,…, n2-1,…) Introduced in 1878 by Sam Loyd, who dubbed himself “America’s greatest puzzle-expert” .... =$1000

  6. 三国华容道 不同的初始布局

  7. 编程求解三国华容道 状态:每个“局面” 行动:可行的“移动” 实现问题:如何在计算机内表示“状态”和“行动”

  8. 1 2 3 定义一个“搜索”问题 S • State space S • Successor function: x  S  SUCCESSORS(x)  2S • Initial state s0 • Goal test: xS GOAL?(x) =T or F • Arc cost,路径耗散

  9. State space S ==〉 State graph • 每个节点表示一个状态 • 弧及其两个端点表示后继函数 • 可能包括多个不连通的分量

  10. 搜索问题的“解” 解:从初始节点“I” 到任何目标节点“G”的一条路径(沿箭头方向) G 解是路径,可能存在多条从I到G的路径,最优解就是路径耗散(路径上cost之和)最小的路径 最短路径问题? I

  11. 搜索问题的“解” • 无解 • 解就是连通源点和目标点的路径 I G

  12. 构建好的状态空间 存在大量“不可达/违背约束”的状态!

  13. 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 10 6 6 7 7 7 8 8 8 9 9 9 10 6 10 11 11 11 12 12 12 ? 13 13 13 14 15 14 14 15 15 n2-1 数码问题的状态空间 • 逆序值(每个数被逆序的次数之和)的奇偶性,将整个状态图分为两个不联通的分量 • 所以Sam Loyd不用担心他的钱被领走!!! 如何证明? n2 = 0 n3 = 0 n4 = 0 n5 = 0 n6 = 0 n7 = 1 n8 = 1 n9 = 1 n10 = 4 n11 = 0 n12 = 0 n13 = 0 n14 = 0 n15 = 0  逆序值 = 7

  14. 什么是“好的”状态空间 • 所有状态?所有“可达的”状态? • “不可达”状态的判断,在无解时非常重要! • 状态数目: 少,越少越好?最少?状态数目一般情形下,太多!(无法全部在计算机内表示出来<存储空间受限>,或者遍历一次<计算时间受限>) • 状态空间/状态图的设计和后继函数密切相关!

  15. 0.036 sec ~ 55 hours > 109 years 我们的搜索问题是寻找一个“状态”迁移的序列,为什么搜索状态空间大小个状态就一定可以完成搜索任务? 数码问题的搜索时间 8-puzzle  362,880 states 15-puzzle  2.09 x1013 states 24-puzzle  1025 states 100 millions states/sec

  16. 基准算法:搜索整个状态图 • 图的宽度优先搜索算法 • 生成树 Search tree

  17. 我们关心的搜索算法 空间大小/解的数量为N,则搜索过的部分是log(N)的多项式函数 • 仅仅搜索整个状态空间的一小部分 • 相同点:(与基准算法比) • 算法大框架 • 所有的解(可行+不可行)构成的集合 • 不同点: • 从状态图中选择的子集S不一样 • S构成的状态图(弧)不一样,后继函数

  18. 获得状态空间/状态图后,执行“搜索” • 8皇后问题和n2-1数码问题的求解方法的异同! • 8皇后问题,简单的解法就是在空棋盘上不停添加皇后,其解是“构造”出来,构造出一个状态,然后对状态进行目标测试,不同状态之间不迁移,相邻两次目标测试之间的“动作序列”是“后继函数”!(深度优先?) • n2-1数码问题,求解过程是从初态出发,不停地在不同状态之间迁移,直到到达目标状态

  19. 状态的解释 • 事物可能的抽象表示,关键属性上相同,不重要细节的影响可以忽略不计 • 比如棋盘的布局,棋子偏移1毫米,对布局/状态没有影响 • 状态空间是离散的,有限或者无限

  20. 后继函数的解释 • 数独求解器的例子。 • 每个状态可行的所有“行动”的集合 • 函数的返回值,行动的结果(后继状态)和行动的代价(cost) • 后继函数是算法设计的“关键”!最复杂的部分

  21. 路径耗散/代价 • 路径耗散/代价是沿着某条边/弧,转移到下一个状态,执行动作的代价(后继函数执行的代价),一般总是正数; • 数码问题,每移动一次,代价为1 • N皇后问题,每放置/撤回一个皇后,代价为1,从一个状态转移到下一个状态,花费的代价<=2N • 我们总是假设,任何一条边/弧的路径耗散/代价c总是大于等于某个正常数ε,即c>= ε >0 Why?

  22. 目标状态 • 可以是一个被精确定义的状态 • 可以是满足某些条件的状态 • 可以是满足某些条件的状态集合

  23. 搜索问题 • 状态/状态空间/状态图 • 后继函数/状态转移 • 目标状态 • 初始状态 • 路径耗散/代价 • 解 • 形式化搜索问题,设计算法求解

  24. 具体问题的形式化

  25. 例子:8皇后问题 • 国际象棋棋盘上放置8个皇后,彼此间不能吃掉对方 正确的解 错误的解

  26. 形式化8皇后问题:方法一 • 状态,任何0,1,2,……,8个皇后在棋盘上时的布局代表一个状态 • 初始状态:0个皇后在棋盘上 • 目标测试/目标状态:8个皇后在棋盘上,彼此间不互吃 • 路径耗散:放置一个皇后,代价为1 • 后继函数:在一个空的格子上放置一个皇后,得到一个新状态 • 高度为9的64-叉树  ~ 64x63x...x57 ~ 3x1014 states

  27. 形式化8皇后问题:方法二 • 状态,任何0,1,2,……,8个皇后在棋盘左侧,且互不攻击时代表一个状态;所谓棋盘左侧互不攻击,就是前k列每列一个皇后,互不攻击; • 初始状态:0个皇后在棋盘上 • 目标测试/目标状态:8个皇后在棋盘上 • 路径耗散:放置一个皇后,代价为1 • 后继函数:在k+1列放置第k+1个皇后到一个不受攻击的位置 • 状态数目急剧减少!  2,057 states

  28. N皇后问题 • “解”是一个状态,而非从初始态到目标状态的序列;这类搜索问题,一般称为“设计问题” • 上述形式化方法二是否能“简单”求解N皇后问题? • 8皇后 2057个状态 • 100皇后  1052个状态 • 能否有算法能快速求解N皇后问题? • 问题特点:很多个解,解的分布较好(较均匀)

  29. 路径规划问题 • 状态空间是什么?如何形式化? 禁止触碰障碍物

  30. 路径规划问题的形式化:方法一 • 网格化地图 • 令小网格边长为1,则对角线距离为√2

  31. 路径规划问题的形式化:方法一 • 最优解,仅仅是网格化的离散空间中的最优解 • 解释一个序列

  32. 扫描线 路径规划问题的形式化:方法二 • 假设垂直扫描线从左到右进行扫描; • 遇到障碍物的顶点(不妨设障碍物为多边形)则暂停,标记 • 标记方法:对两次暂停之间的被扫描区域染上不同的颜色 • 被障碍物割裂的扫描线获得不同颜色的区域

  33. 路径规划问题的形式化:方法二

  34. 路径规划问题的形式化:方法二 • 每个染色区域用其重心点表示 • 每个重心点代表一个状态,获得状态空间

  35. 路径规划问题的形式化:方法二 • 后继函数:具有相邻边界线的色块之间互为后继 • 获得状态图 • 边/弧的路径耗散/代价为状态点之间的距离

  36. 路径规划问题的形式化:方法二 • 解为一条路径 • 路径需要通过特定的边界点 • 最优路径需要进一步优化和平滑

  37. 路径规划问题的形式化:方法三 • 取障碍物(不妨设为多边形)的顶点以及初始地点和目标地点构成图的顶点; • 对任何顶点,连接其可视顶点(没有被障碍物阻挡),获得后继函数 • 路径耗散/代价:边/弧的长度,顶点间的距离

  38. 路径规划问题的形式化:方法三 • 最优解是连续的

  39. 搜索与AI • AI系统中搜索无处不在 • 路径搜索与导航 • 打包/邮件分发 • 超大规模集成电路布局设计 • 蛋白质比对和折叠 • 制药 • 电脑游戏 • ……

  40. 无信息搜索/盲搜索(Un-informed Search)

  41. 状态图和搜索树 • 某些节点可能会被重复访问!!! State graph Search tree

  42. 8 8 2 2 8 2 7 3 3 4 4 7 7 3 4 1 1 1 5 5 6 6 5 6 8 2 8 4 3 4 7 8 2 2 3 4 7 3 7 1 5 6 5 1 6 5 1 6 搜索节点和状态 同样的状态,在树中可能有多个节点表示,我们先暂时认为“不同的节点代表不同的状态”,也就是说“节点”和“状态”暂时是同义词 如果状态允许被重复访问,则即使状态有限,搜索树也可能是无限的

  43. 父节点 8 2 3 4 7 状态 1 5 6 子节点 ... 搜索算法设计细节:节点数据结构 存储信息 Depth 3 Path-Cost 3 yes Expanded 节点N的Depth = 从根到N的路径长度 (根的深度为0)

  44. 8 2 8 4 3 4 7 8 8 2 2 2 3 3 7 3 4 7 4 7 1 5 6 5 1 6 5 1 6 5 1 6 搜索算法设计细节:节点扩展 • 节点N的扩展,包括的处理: • 评估状态/节点N的后继函数 • 对后继函数返回的所有状态,在搜索树上产生一个子节点 N • 节点产生  节点扩展

  45. 8 2 8 2 8 2 7 7 3 3 4 4 7 3 4 5 1 6 5 1 6 5 1 6 8 2 8 4 3 4 7 8 2 2 3 3 7 4 7 5 1 6 5 1 6 5 1 6 搜索算法设计细节:搜索树的边界 • 搜索树的边界:未被扩展的节点集合,可能在排队等待扩展! 注意与叶节点进行区别!!

  46. 搜索算法设计细节:搜索策略 • 搜索树的边界实际就是等待扩展的节点集合! • 等待扩展的节点用“优先队列”FRINGE来实现 • INSERT(node, FRINGE) • REMOVE(FRINGE) • 等待扩展节点的优先次序我们称之为“搜索策略”

  47. 搜索算法设计细节:算法框架(基准算法) • if (GOAL?(S0) ==T ) then return S0 • INSERT(S0, FRINGE) • Repeat: • if (empty(FRINGE)==T) then return failure • s REMOVE(FRINGE) • For every state s’ in SUCCESSORS(s) • If (GOAL?(s’) ==T ) then return path or goal state • INSERT(s’,FRINGE) 节点/状态扩展

  48. 度量算法求解问题的性能 • 完备性:问题有解时,算法能否保证返回一个解?问题无解时,算法能否保证返回failure? • 最优性:能否找到最优解?返回代价/路径耗散最小的路径? • 复杂性:算法需求的时间和内存 • 状态图的大小:初态和后继函数决定,影响因素:分支因子(后继的最大个数),最前目标状态的深度,路径的最大长度 • 时间复杂度:访问过的节点数目 • 空间复杂度:同时保存在内存中节点数目的最大值

  49. 我们研究搜索算法的目标 • 很多搜索问题是NP-hard,比如TSP,数码问题 • 因此,别期望能在多项式时间内(时间复杂度是问题规模的多项式函数)求解出问题的所有实例(instances),没有通用算法! • 没有免费的午餐 • 算法设计的意义:对每个instance/每类instances找到其最有效(尽可能高效)的求解算法

  50. 无信息搜索和有信息搜索的差异 Uninformed/Blind Informed/Heuristic Q:如何排序或者 判断优先扩展节点?

More Related