产生式系统的搜索策略讲义课件.pptVIP

  • 12
  • 0
  • 约7.67千字
  • 约 67页
  • 2016-09-14 发布于贵州
  • 举报
* * * * 关于f函数值的意义的讨论 为了调整g和h在h中的作用比例, 设f=g+w*h 1)令w=0 则f=g,此时,A*成为宽度优先算法。特点:可扩大搜索范围便于找到最佳解,但是费用比较大。 2)令w为一个大的整数,则加大了h在f函数中的作用力度。其意义在于:不考虑到目前已经 消耗的费用,只关心当前节点到目标节点剩余的搜索工作量。 * * 本章算法汇总 1.回溯策略 2.图搜索策略 A算法: h(n)=0 g(n)=-d(n) 深度优先 F(n)=g(n)+h(n) g(n)=0 爬山算法 h(n)=0 分支界限算法 各分支 只保留一个 动态规划算法 h(n)=0 g(n)=d(n) 宽度优先算法 A* 算法 。。。。。。。 * * 本章例题汇总 1.四皇后问题 回溯策略 2 积木世界问题 宽度优先 3 八数码问题 A算法 4 八城市s-t 分支界限算法。 5 迷宫问题 A*算法 * * 本章结束!!! * * 4)评价函数:f(n)=g(n)+h(n),其中f,g,h分别是f*,g*,h*的估计值。 通常约定:f(n)按照升序排列。 讨论:有上述定义,得:1)g(n)=g*(n) 2)当h=0且g(n) =d(n) 时,f(n)=d(n)既宽度优先策略,d(n):节点深度。 3)h(n)称为启发函数。 * * 3.1.1A算法 1 G=G0(G0=s),open=(s),closed=() ,f(s)=g(s)+ h(s) //s:初始状态 2 Loop:if open=() then exit(fall) 3 n←first(open)h() 4 if goal(n) then exit(success) 5remove(n,open), add(n,closed) 6{mj} ←expand(n), //mj不含n的先辈节点 计算f(n,mi)=g(n,mi)+h(mi),(自s经过n,mi 到目标节点的耗散值) * * open←add(open,mj) 标记mj到n的指针 (mj不在open,closed中) if f(n, mk)f(mk) then f(mk) ← f(n, mk)标记mk到n的指针(mk在open中) if f(n, mL)f(mL) then f(mL) ← f(n, mL)标记mL到n的指针(mL在closed中) add(mL,open),把mL放回到open中 7 Open中的节点按f值升序排列 8 go loop * * * * 例 八数码问题 令:g(n)=d(n) 节点深度 h(n)=w(n) 不在位的数码个数(启发函数) 则 f(n)=d(n)+w(n) 如初始节点s的f值f(0)=d(0)+w(0)=0+4=4 有4个数码不在位。 * * * * 对于f(n)=g(n)+h(n),如果单独考虑g(n)或者h(n),即, 1) f(n)=g(n) 只考虑搜索过的路径已经耗费的费用;//分支界限算法 2)f(n)=h(n) 只考虑未来的发展趋势//爬山算法 那么可以得到两种特殊的算法:爬山算法和分支界限算法。 * * 3.3.2爬山算法 Procedure Hill _Climbing 1 n=s 2 Loop: if goal(n) then exit(success) 3{mi} ←expangd(n),计算每个h(mi) nextn ← h(mi)最小值的节点 4 if h(n)h(nextn) then exit(fail) 5 n ←nextn 6go loop 优点,缺点 * * 3.3.3分支界限算法f(n)=g(n) Procedure Branch_Bound 1 queue(s-s),g(s)=0 //queue中保存的是从s出发的路径。 2 Loop:ifqueue=0 then exit(fail) 3 path←FIRST(queue),n ←LAST(pATH) //取第一条路径,及该路径的最后节点n 4 if goal(n) then exit(succe

文档评论(0)

1亿VIP精品文档

相关文档