第五章人工智能教程以及答案.ppt
文本预览下载声明
第五章 状态空间搜索 第五章 状态空间搜索 第一节 状态空间搜索 例5-1 梵塔问题 三盘片梵塔状态空间图 例5-2 传教士和野人问题 问题解决 二 状态空间的穷搜索法 三 启发式搜索法 第二节 问题归约法 一 问题归约描述 二 与或图表示 三 AO*算法 AO*算法要能处理与图,它应找出一条路径,即从该图的开始结点出 发到达代表解状态的一组结点。注意,可能需要到达多个解状态,因为 一与弧的每条臂要引至它自身的结点。 在扩展搜索一与或图时,每步需做三件事; (1)遍历图,从初始结点开始,顺沿当前最短路径,积累在此路径上但未扩展的结点集。 (2)从这些未扩展结点中选择一个并扩展之。将其后继结点加入图中,计算每一后继结点的f值(只需计算h,不管g)。图5-14 AO*算法的运行。 (3)改变最新扩展结点的f估值,以反映由其后继结点提供的新信息。将这种改变往后回传至整个图。在往后回攀图时,每到一结点就判断其后继路径中哪一条最有希望,并将它标 记为目前可能解图的一部分。这样可能引起目前最短路 的变动。 AO*算法描述 (i)从S中挑选一个结点,该结点在G中的子孙均不在S中出现(换句话说,保证对于每一正在处理的结点,是在处理其任一祖先之前来处理该结点的),称此结点为CURRENT并把它从S中去掉。 (ii)计算始于CURRENT的每条弧的耗费。每条弧的耗费等于在该弧末端每一结点的h值之知和加上该弧身的耗费。从刚刚计算过的始于CURRENT的所有弧费中选出极小耗费作为CURRENT的新h值。 (iii)把在上一步计算出来的带极小耗费的弧标记出始于CURRENT的最佳路径。 (iv)如果穿过新的带标记弧与CURRENT连接的所有结点均标为SOLVEO,则把CURRENT标为SOLVED。图5-16 逆向传播 (v)若CURRENT已标为SOLVED,或CURRENT的耗费刚才已经改变,那么应把其新状态往回传至图。因此,要把CURRENT的所有祖先加到S 中。 第三节 博弈树搜索 具体例子 一 极大极小过程 用一字棋来具体说明一下极大极小过程,不失一般,设只进行两层,即 每方只走一步(实际上,多看一步增加大量的计算和存储)。 评价函数e(p)规定如下: 1.若格局P对任何一方都不是获胜的,则 e(p)=(所有空格都放上MAX的棋子之后,MAX的三个棋子所组成的行、列及对角线的总数)—(所有空格都放上MIN的棋子后,MIN三个棋子所组成的行、列及对角线的总数) 2.若p是MAX获胜,则 3.若p是MIN获胜,则 二 过程 * * 问题归约法 博弈树搜索 Click to add title in here 状态空间搜索 1 2 3 Contents S是状态集合,状态是某种事实的符号或数据,问题的初始状态是S 的非空子集 1 三元组(S,O,G) G也是S的非空子集,表示目标状态集。它可以是若干具体的状态, 也可以是对某些状态性质的描述 O是操作算子集,利用它将一个状态转化为另一个状态 一 问题的状态空间表示 起源于印度传说的梵塔问题是:有三根针和n个大小不同的盘片。开始盘片都是叠在第一根针上,从下到上按由大到小的顺序串叠。要求每次只移动最顶上的一个盘片到另一根针上,且大盘不得压在小盘上,直到把所有盘片移到第三根针上。以三圆盘为例,如图5-1所示。 图5-1 三盘片梵塔 用状态(i, j, k)表示最大盘片C在第i根针上,盘片B在第j根 针上,最小盘片A在第k根针上。如果同一根针有二片以上的 盘片,则假设较大的在下面。 如(1,1,2)表示C和B在第1根针上,且B在C的上面,而A在 第2根针上。 用M(N,i, j)表示操作算子,即把盘片N从第I根针移到 j根针上。如M(A,1,2)实现的操作是把盘片A从第1根针 移到第2根针上,即使状态(1,1,1)变成状态(1,1 ,2)。而不允许接着进行M(B,1,2)操作,使状态(1, 1,2)变为状态(1,2,2),因为这违反了小片必须在大 片上的规则。 图5-2 设有三个传教士和三个野人来到河边,打算乘一只船从右岸渡到左岸去。该船的负载能力为两人。在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过河去? 问 题 问题状态以三元组(m, c, b)表示,m为传教士在左岸或船上的实际人数,c为野人在左岸或船上的实际人数,b指示船是否在左岸(1,0) 在船上人数不得超过载重限量2个人,任何时刻(包括两岸、船上)野人数目不得超过传教士的安全约束 图5-3 深度优先搜索算法 广度优先搜索算法 启发式搜索法的基本思想是在搜索路径的控制信息中增加关于
显示全部