- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 求解方法 法1:宽度优先FIFO检索 能找到离根最近的答案结点,但不管开局如何(不关心问题的具体实例),总是按千篇一律的顺序移动。 法2:深度优先检索 不管开局如何(不关心问题的具体实例),总是采取由根开始的最左路径,呆板而盲目。搜索过程中有可能远离目标。 法3:LC检索 * LC检索 给状态空间树的每个节点X赋予一定的成本c(X)。 将根结点到最近目标结点路径上的每个结点的成本设置为这条路径的长度。 其余结点成本赋值为∞。 在宽度优先搜索方式下,首先将根结点作为E-结点,将成本为∞的子结点统统杀掉,只保留与根结点成本相同的子结点,并使其成为下一个E-结点。该策略重复进行,直到找到目标结点为止。 P221 图9.3(a) c(1)=c(4)=c(10)=c(23)=3 理想状态下 很不实际,基本不可能得到这样的函数c。 * 便于计算成本估计值的函数: f(X)是由根到结点X路径的长度; ?(X)是以X为根的子树中由X到目标状态的一条最短路径长度的估计值。 ?(X)=f(X)+?(X) 定义:?(X)=不在其目标位置的非空白棋牌数目 1 2 3 4 5 6 8 9 10 11 12 13 14 15 7 ?(X)是c(X)的下界 最小移动数 ?(X)=1 12 15 14 13 11 7 10 9 8 6 5 4 3 2 1 12 15 14 13 11 7 10 9 8 3 6 5 4 2 1 12 15 14 13 11 7 10 9 8 6 5 4 3 2 1 12 15 14 13 11 10 9 8 7 6 5 4 3 2 1 12 15 14 13 11 7 10 9 8 6 5 4 3 2 1 上 右 下 左 1 2 3 4 5 ?(2)=1+4 {3,7,11,12} ?(3)=1+4 {7,8,11,12} ?(4)=1+2 {11,12} ?(5)=1+4 {6,7,11,12} * 1 2 3 4 5 6 8 9 10 7 11 13 14 15 12 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12 下 1 4 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12 1 2 3 4 5 6 7 8 9 10 15 11 13 14 12 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12 右 下 左 10 11 12 ?(10)=2+1 ?(11)=2+3 ?(12)=2+3 1 2 3 4 5 6 7 9 10 11 8 13 14 15 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 上 下 22 23 当前实例下,LC-检索几乎和使用精确函数c一样有效,LC-检索的选择性比很多检索方法强很多。 * 45-46学时 * 结点成本函数c “有智力的”排序函数c也称为结点成本函数 如果X是答案结点,则c(X)是由状态空间树的根节点到X的成本(即所用的代价,可以是级数、计算复杂度等); 如果X不是答案结点且子树X不包含任何答案结点,则c(X)=∞; 如果X不是答案结点,但子树X中包含答案结点,则c(X)等于子树X中具有最小成本的答案结点的成本。 回顾 C(X)是结点X的客观存在的真实成本,但是很难事先得到 * 9.1.3 LC-检索的抽象化控制 T是一棵状态空间树 c是T中结点的成本函数 c(X)是根为X的子树中答案结点的最小成本。 c(T)是T中最小成本答案结点的成本。 找到这样一个易于计算的c是很难的。 用启发函数?来代替 易于计算 如果X是一个答案结点或者是一个叶结点,则c(X)= ?(X) * 抽象化控制思想 如果根结点T是答案结点,输出该节点,操作结束;否则,令T是当前的E-结点,此时活结点表为空。 判断E的每个子结点X:如果X是答案结点,输出从X到T的路径,操作结束;否则,将X添加到活结点表中。 如果活结点表中不再有结点,操作结束;否则从中选择一个函数值?最小的结点作为当前新的E-结点,重复步骤2。 ADD(X) LEAST(X) * 算法9.1 LC-检索 Line procedure LC(T,?) if T是答案结点 then { 输出T; return; } end if E?T // E-结点 // 将活结点表初始化为空 loop for E 的每个儿子X do if X是答案结点 then 输出从X到T的那条路径 return; end if call ADD(X) // X是新的活结点 // PARENT(X)?E repeat if 不再有活结点 then pri
文档评论(0)