人工智能课件第2章3.pptVIP

  • 13
  • 0
  • 约7.78千字
  • 约 75页
  • 2019-04-17 发布于贵州
  • 举报
在不仅考虑搜索节点的多少,而且还要考虑搜索节点被搜索的次数的时候,则当h(n)过低估计h*(n)时,有时会显出很高的复杂性。 例题:走迷宫算法 假设某个精灵从A点走到B点,而A,B点之间隔着半堵墙。如下图所示,左边的浅色方块代表起点A,右边的浅色方块代表终点B,正中间的深灰色填充区域代表墙。 求从A点到B点的一条(最短)路径 算法总结 (1)添加起始位置到OpenList中 (2)重复下面的步骤: (2.1).在OpenList中寻找F值最低的节点,这个节点称为当前位置。 (2.2) 把当前位置交换到CloseList中,即从OpenList中删除该节点并添加到CloseList中。 (2.3) 对于当前位置的8个邻域,操作如下: 如果该区域走不通或该区域已经在CloseList中,则忽略该区域。否则做下面的操作。 如果该区域不在OpenList中,则把该区域添加到OpenList中,并使该区域的父指针指向当前位置。 如果该区域已经在OpenList中,则计算一下当前区域到该区域的G累加值。如果这个G值比原来该区域的G值还小,则说明这条路径很好。如果是这样,将该区域的父指针指向当前区域,并重新计算该区域的G值和F值。如果OpenList是按F值排序的,则现在需要重新排序。 (2.4) 当下面任意一个条件满足时,停止搜索。 目标区域已经被加入到OpenList中,即路径找到了。 没有找到目标区域,并且OpenList已经为空,即没有可达路径。 (3) 保存路径。利用父指针从目标区域往回走直到回到起始点。 2.5 问题归约与AO*算法 2.5.1 问题归约求解方法与“与/或图” 在问题求解过程中, 将一个大的问题变换成若干子问题, 子问题又可分解成更小的子问题,这样一直分解到可以直接求解为止, 全部子问题的解即为大的问题的解,这样的过程称为问题的规约(Problem Reduction)。并称大的问题为初始问题,可直接求解的问题为本原问题。 一般说来,归约方法求解问题需要三大要素: 1.? 初试问题的描述。 2. 一组将问题变换成子问题的变换规则。 3.? 一组本原问题的描述。 例2.13 符号积分问题 分解时有三种可能: 1.?????? and 2.?????? or 3.?????? and, or 都有 从初始问题出发, 建立子问题以及子问题的子问题, 直至把初始问题规约为一个本原问题的集合, 这就是问题规约的实质。 2.5.2 与/或图搜索 将问题求解归约为与/或图的时,作如下规定: 1.与或图中始点(根)为原始问题描述; 与或图中对应于本原问题的节点为终叶节点。 2.可解节点为: 2.1 终叶节点是可解节点; 2.2 若n为一非终叶节点,且含有“或”后继节点,则只有当后继节点中至少有一个是可解节点时,n才可解; 2.3 若n为一非终叶节点,且含“与”后继节点,则只有当后继节点全部可解时,n才可解。 3. 不可解节点: 3.1 没有后继节点的非终叶节点为不可解; 3.2 若n为一非叶节点含有“或”后继节点,则仅当全部后继节点为不可解时,n不可解。 3.3 若n为一非叶节点含有“与”后继节点,则只要有一个后继节点为不可解时,n为不可解。 4.与或图中搜索费用的计算:设从当前节点n到目标集Sg费用估计为h(n). 4.1 若n∈Sg, 则h(n)=0; 4.2 若n有一组由“与”弧连接的后继节点{n1,n2,…ni} 则h(n)=c1+c2…+ci+…+h(n1)+h(n2)+…+h(ni)。其中ci为n到ni弧的费用。 4.3 若n既有“与”又有“或”弧,则“与”弧算作一个“或”后继,再取各or弧后继中费用最小者为n的费用。 2.5.3 与/或图搜索的特点 1.与/或图搜索搜索费用的估计 对与/或图则不同,其费用计算的规则是: ?? n未生成后继节点时,费用由n本身决定; n已生成后继节点时,费用由n的后继节点的费用决定。 因为后继节点代表分解的子问题, 子问题的难易程度决定原问题求解的难易程度,所以不再考虑n本身的难易程度。因此当决定了某个路径时,要将后继节点的估计值往回传送。 例2.14 图2-35为一个与/或图的搜索过程。 第一步,A是唯一节点; 第二步,扩展A后,得到节点B,C和D, 因为B,C的耗费为9,D的耗费为6,所以把列D的弧标志为出自A最有希望的弧; 第三步,选择对D的扩展,得到E和F的与弧,其耗费估计值为10。此时回退一步后,发现与弧BC比D更好,所以将弧BC标志为目前最佳路径;

文档评论(0)

1亿VIP精品文档

相关文档