算法第九章详解.ppt
《算法第九章详解.ppt》由会员分享,可在线阅读,更多相关《算法第九章详解.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第九章第九章分支分支-限界法限界法29.1 一般方法一般方法9.1.1 LC-检索检索9.1.2 15-谜谜9.1.3 LC-检索的抽象化控制检索的抽象化控制9.1.4 LC-检索的特性检索的特性9.1.5 分支分支-限界算法限界算法39.1 一般方法一般方法p分支分支-限界法类似于回溯法,也是一种在问题的解空限界法类似于回溯法,也是一种在问题的解空间树上搜索问题解的算法。但二者间树上搜索问题解的算法。但二者搜索方式搜索方式不同。不同。p以四皇后问题的解空间树为例以四皇后问题的解空间树为例1456743341011129424214151617323220212223434325262728
2、411430313233311338133419242913421834503424-皇后问题的解空间树皇后问题的解空间树x1=1x2=2结点编号结点编号按深度优先次序按深度优先次序5回溯法回溯法使用限界函数的使用限界函数的深度优先深度优先结点生成方法结点生成方法当前的当前的E-结点一旦生成一个新儿子结点一旦生成一个新儿子C,C就变成新就变成新的的E-结点。结点。6kill31x4=318x1=213x2=415x4=313x2=22x1=1kill11x3=49x3=2killkill8x2=314x3=216x3=3kill19x2=124x2=3killkill29x2=430 x3=1
3、用回溯法解决四皇后问题用回溯法解决四皇后问题回溯法一共处理了回溯法一共处理了16个结点,到达一个答案结点(结点个结点,到达一个答案结点(结点31)7分支分支-限界法限界法p分支分支-限界法限界法生成当前生成当前E-结点全部儿子结点全部儿子之后,才从活结点表中选一个之后,才从活结点表中选一个活结点作为新的活结点作为新的E-结点,结点,使用使用限界函数限界函数帮助帮助避免生成不包含答案结点子树避免生成不包含答案结点子树的状态的状态空间空间89.1 一般方法一般方法p根据对状态空间树中根据对状态空间树中结点检索次序结点检索次序的不同,分支的不同,分支-限限界可以采用不同的活结点表:界可以采用不同的活
4、结点表:nFIFO检索,活结点采用一张先进先出表(队列)检索,活结点采用一张先进先出表(队列)nLIFO检索,活结点采用一张后进先出表(堆栈)检索,活结点采用一张后进先出表(堆栈)9例例9.1 FIFO分枝限界法检索四皇后问题的状态分枝限界法检索四皇后问题的状态空间树空间树p4-皇后问题的状态空间树皇后问题的状态空间树(图图8.2-P195)192429910111138137863445051832213540451213145156611516172 183450 3 8 13192429354045515661活结点表活结点表1019242991011113813786153014162
5、1201991118344505183223540451213145156611516173 8 13192429354045515661B9 111416BB30322322303238362425BB3638275254265254595728295759BBB15B313131B B答案节点答案节点分枝限界法一共处理了分枝限界法一共处理了31个节点。个节点。回溯法一共处理了回溯法一共处理了16个节点个节点(P198 图图8.6)。119.1.1 LC-检索检索(least cost)pLC-检索的问题检索的问题:只有这两种活结点表吗?只有这两种活结点表吗?n 队列实现的活结点表队列实现的
6、活结点表FIFOn 堆栈实现的活结点表堆栈实现的活结点表LIFOn 对下一个对下一个E-节点的选择规则相当节点的选择规则相当死板死板,在某种意,在某种意义上是义上是盲目盲目的。对于可能快速检索到答案结点的的。对于可能快速检索到答案结点的结点结点没有给出任何优先权没有给出任何优先权。12515661151617B19242991011113813786153014162120199111834450518322354045121314BB3032232238362425BB2752542659572829BBBB3131B B答案节点答案节点在上例中,尽管在生成结点在上例中,尽管在生成结点30后
7、,该结点只要走一步就后,该结点只要走一步就可到达答案结点可到达答案结点31;但死板的但死板的FIFO规则却要求先扩展已生成的其他活结点规则却要求先扩展已生成的其他活结点能否根据某个优先级,使得结点能否根据某个优先级,使得结点31比其他活结点具有更高的优先级,比其他活结点具有更高的优先级,从而被快速得到?从而被快速得到?139.1.1 LC-检索检索(least cost)p解决解决:对活结点使用一个对活结点使用一个“有智力的有智力的”排序函数排序函数c(.)来选取下来选取下一个一个E-结点,往往可以加快到达一答案结点的速度。结点,往往可以加快到达一答案结点的速度。14p要对活结点计算优先次序,
8、必然要附加计算工作,即付出代价。要对活结点计算优先次序,必然要附加计算工作,即付出代价。对于任意结点对于任意结点X,要付出的代价可以用两种标准来度量:,要付出的代价可以用两种标准来度量:1n生成一个答案结点之前,子树生成一个答案结点之前,子树X需需要要生成的结点数生成的结点数;n在子树在子树X中,离中,离X最近的那个答案最近的那个答案结点结点到到X的路径长度的路径长度。43213450182192429303231总是生成最小数目的结点。总是生成最小数目的结点。那条路径上的结点会成为那条路径上的结点会成为E-结点。结点。答案结点答案结点结点结点1代价是代价是4;18.3;292;30115结点
9、成本函数结点成本函数cp“有智力的有智力的”排序函数排序函数c也称为结点成本函数也称为结点成本函数n如果如果X是答案结点是答案结点,则,则c(X)是由状态空间树的根是由状态空间树的根节点到节点到X的成本的成本(即所用的代价,可以是级数、计即所用的代价,可以是级数、计算复杂度等算复杂度等);n如果如果X不是答案结点且子树不是答案结点且子树X不包含任何答案结不包含任何答案结点点,则,则c(X)=;n如果如果X不是答案结点,但子树不是答案结点,但子树X中包含答案结点中包含答案结点,则则c(X)等于子树等于子树X中具有最小成本的答案结点的中具有最小成本的答案结点的成本成本。16函数函数c的计算工作量的
10、计算工作量结点成本函数结点成本函数c的计算工作量往往的计算工作量往往与原问题具有相同的复杂度。与原问题具有相同的复杂度。计算一个节点计算一个节点X的成本通常需要检索的成本通常需要检索以以X为根结点的整个子树才能确定。为根结点的整个子树才能确定。要得到精确的成本函要得到精确的成本函数并不现实,一般大数并不现实,一般大致估计结点成本。致估计结点成本。17估估计计函数函数(X)p设设(X)是由是由X到达一个答案到达一个答案结点所需做的附加工点所需做的附加工作的作的估估计函数函数。n假假设子子树X中有中有答案答案结结点点;n设设X的儿子的儿子结结点是点是Y,应应有有(Y)(X),因,因为为Y到达答案到
11、达答案结结点的成本肯定比点的成本肯定比X到达答案到达答案结结点点的成本小;的成本小;18用用(X)给给活活结结点排序是否合适?点排序是否合适?p若若X是当前是当前E-结点点n说明在活明在活结点表中,点表中,(X)最小,即最小,即(X)(其他活其他活结结点点)p生成生成X的儿子的儿子结结点点Y,并放入活,并放入活结结点表点表p则则有有Y成成为为当前当前E-结点点n因因为(Y)(X)(其他活其他活结结点点),故故Y在在X之后成之后成为为新的新的E-结点点。p该过程直到子程直到子树X全部全部检检索完索完毕毕才可能生成才可能生成子子树树X以外的以外的结结点。点。19(X)分析分析p只用只用(X)为结为
12、结点排序是否适合点排序是否适合?n不适合不适合,只考只考虑虑未来的可能的代价未来的可能的代价,导致算法偏向于纵深导致算法偏向于纵深方向检索。方向检索。理想理想:)如果如果(X)=c(X)总成立总成立,那,那么问题可以用最小成本到么问题可以用最小成本到达离根最近的答案结点。达离根最近的答案结点。乐观的冒进乐观的冒进现实现实:(但通常情况下,但通常情况下,(X)只是只是精精确成本的一个估计值确成本的一个估计值,因此,因此偏于纵深检查可能会丢失掉偏于纵深检查可能会丢失掉更靠近根的答案结点。导致更靠近根的答案结点。导致结果不理想。结果不理想。(X)是对未来可能发生的成本估计是对未来可能发生的成本估计2
13、0结点成本估计函数结点成本估计函数p考虑结点考虑结点X到一个答案结点的估计成本到一个答案结点的估计成本(X);p考虑根结点到结点考虑根结点到结点X的成本的成本h(X);(X)=f(h(X)+(X)X(X)h(X)算法对活结点表进行检索时,优先选择算法对活结点表进行检索时,优先选择更靠近答案结更靠近答案结点且又离根结点较近点且又离根结点较近的结点。的结点。函数函数f是一个非降函数。不妨将是一个非降函数。不妨将f的作用理的作用理解为调整解为调整h和和在成本估计函数在成本估计函数中的影响中的影响比例。比例。21LC-检检索索pLC-检索检索(Least Cost search):选取成本估:选取成本
14、估计函数计函数的的值最小的活结点作为下一个值最小的活结点作为下一个E-结点。结点。p伴有限界函数的伴有限界函数的LC-检索称为检索称为LC分枝分枝-限界检索限界检索。pf(h(X)=结点结点X的级数,的级数,(X)=0时,则变为时,则变为BFS检索检索。(队列实现的广度优先检索)。(队列实现的广度优先检索)pf(h(X)=0,且每当,且每当Y是是X的一个儿子时总有的一个儿子时总有(X)(Y)时,则变为时,则变为D-检索检索。(堆栈实现)。(堆栈实现)(X)=f(h(X)+(X)BFS和和D检索是检索是LC-检索的特殊情况检索的特殊情况221712345678910 11121314 15161
15、8202324 25192122262728 2930 31x1=1x1=0 x2=1x3=1101010 x2=0 x3=0 x3=1x3=0 x2=1x2=0 x3=1x3=0 x3=1x3=01010101010子集和数问题的解空间树子集和数问题的解空间树2注注:结点按结点按D-检索方式编号检索方式编号239.1.2 15-谜问题谜问题134152512761114891013123456789101112131415 a 初始排列初始排列p 问题描述问题描述在一个分成在一个分成16格的方形棋盘上,放有格的方形棋盘上,放有15块编了号码的块编了号码的牌。对这些牌给定一种初始排列,要求通过
16、一系列的牌。对这些牌给定一种初始排列,要求通过一系列的合法移动合法移动将这一初始排列转换成目标排列。将这一初始排列转换成目标排列。b 目标排列目标排列邻接空格的牌邻接空格的牌移到空格移到空格249.1.2 15-谜问题谜问题 每移动一次,就产生一种新的排列。这些排列称为这每移动一次,就产生一种新的排列。这些排列称为这个个谜问题的状态谜问题的状态。初始排列称为初始排列称为初始状态初始状态,目标排列称为目标排列称为目标状态目标状态。若由初始状态到某状态存在一系列合法的移动,则称若由初始状态到某状态存在一系列合法的移动,则称该状态可由初始状态到达该状态可由初始状态到达。一个初始状态的一个初始状态的状
17、态空间状态空间,由所有由所有可从初始状态到达可从初始状态到达的状态的状态构成。构成。1341525127611148910131341525127611 148910 13相当庞大,有必要在具相当庞大,有必要在具体求解之前,判断目标体求解之前,判断目标状态是否在这个初始状状态是否在这个初始状态的状态空间中态的状态空间中259.1.2 15-谜问题谜问题12345678910 11 1213 14 15 在具体求解问题之前判定:在具体求解问题之前判定:目标状态是否在目标状态是否在这个初始状态的状态空间中这个初始状态的状态空间中。方法:方法:对棋盘的对棋盘的方格位置方格位置编上编上116的号码。的
18、号码。位置位置i 是在右图的目标排列中放是在右图的目标排列中放i 号牌的方格位号牌的方格位置,位置置,位置16是空格的位置。是空格的位置。假设假设POSITION(i)是编号为是编号为i的那块牌在初始状的那块牌在初始状态下的位置号,态下的位置号,1 i 16;POSITION(16)表示空格的位置。表示空格的位置。对于任意一种状态,对于任意一种状态,LESS(i)是使是使牌牌j 牌牌i,且且POSITION(j)POSITION(i)的的j的数目的数目。初始状态下,如果空格在右图的初始状态下,如果空格在右图的阴影位置阴影位置中的中的某一格处,则令某一格处,则令X=1;否则;否则X=0。1341
19、525127611 148910 13LESS(1)=0LESS(4)=1LESS(12)=626定理定理9.1:当且仅当:当且仅当 LESS(i)+X是偶数是偶数时,图时,图b b所示所示的目标状态可由此初始状态到达。的目标状态可由此初始状态到达。15-谜的状态空间树谜的状态空间树 结点:棋盘的状态结点:棋盘的状态 每个结点的儿子:状态每个结点的儿子:状态X通过通过一次一次合法的移动可到合法的移动可到达的状态达的状态 移动牌与移动空格等效移动牌与移动空格等效:“上上”、“右右”、“下下”、“左左”的顺序的顺序9.1.2 15-谜问题谜问题1 i 16判定目标状态是判定目标状态是否在初始状态的
20、否在初始状态的状态空间中状态空间中27求解方法求解方法p法法1:宽度优先:宽度优先FIFO检索检索p法法2:深度优先检索:深度优先检索p法法3:LC检索检索2812345689 10 71113 14 15 1212456389 10 71113 14 15 1212345689 10 71113 14 15 12123456789 101113 14 15 1212345689 10 71113 14 15 1212456389 10 71113 14 15 1212456389 10 71113 14 15 1212356849 10 71113 14 15 121234568119 10
21、 713 14 15 12123456789 10 1113 14 15 12123456789 10 15 1113 141212345678910 1113 14 15 1212345 10 68971113 14 15 1212345689 10 71113 14 15 1213452689 10 71113 14 15 1212485639 10 71113 14 15 1216245389 10 71113 14 15 1212456389 10 71113 14 15 1212356849 10 71113 14 15 121234568119 107 1213 14 151234
22、568119 10713 14 15 1212345679 10 11813 14 15 12123456789 10 11 1213 14 15上上右右下下左左右右左左上上下下右右下下左左上上下下左左下下下下左左左左下下左左上上下下宽度优先宽度优先FIFO检索检索1234567891011121314151617181920212223离根结点最近离根结点最近的答案结点。的答案结点。上、右、下、左上、右、下、左29求解方法求解方法p法法1:宽度优先:宽度优先FIFO检索检索n不管开局如何(不关心问题的具体实例),总不管开局如何(不关心问题的具体实例),总是按千篇一律的顺序移动。是按千篇一律的
23、顺序移动。p法法2:深度优先检索:深度优先检索p法法3:LC检索检索30深度优先深度优先12345689 10 71113 14 15 12112456389 10 71113 14 15 122上上12456389 10 71113 14 15 12右右312485639 10 71113 14 15 1241281156491031213 147151285641191031213 147151285641191031213 1471512485611910 3 1213 14 7 151248563119101213 14 7 1512485631191071213 1415124856
24、311910 713 14 15 12下下下下512485631191071213 14 15下下6左左7上、右、下、左上、右、下、左8上上9上上上上10右右11下下1231求解方法求解方法p法法1:宽度优先:宽度优先FIFO检索检索n能找到离根最近的答案结点能找到离根最近的答案结点,但不管开局如何但不管开局如何(不关心问题的具体实例不关心问题的具体实例),总是按千篇一律的,总是按千篇一律的顺序移动。顺序移动。p法法2:深度优先检索:深度优先检索n不管开局如何(不关心问题的具体实例),总不管开局如何(不关心问题的具体实例),总是采取由根开始的最左路径,呆板而盲目。搜是采取由根开始的最左路径,呆
25、板而盲目。搜索过程中索过程中有可能远离目标有可能远离目标。p法法3:LC检索检索32LC检索检索p给状态空间树的每个节点给状态空间树的每个节点X赋予一定的成本赋予一定的成本c(X)。n将根结点到最近目标结点路径上的每个结点的成本设置为将根结点到最近目标结点路径上的每个结点的成本设置为这条路径这条路径的长度的长度。n其余结点成本赋值为其余结点成本赋值为。p在宽度优先搜索方式下,首先将根结点作为在宽度优先搜索方式下,首先将根结点作为E-结点,结点,将成将成本为本为的子结点统统杀掉,只保留与根结点成本相同的子的子结点统统杀掉,只保留与根结点成本相同的子结点结点,并使其成为下一个,并使其成为下一个E-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 第九 详解
限制150内