第二章问题归约法ProblemReductionRepresentation问题归约法问题归约(ProblemReduction)是另外一种基于状态空间的问题描述与求解方法已知问题的描述,通过一系列变换把此问题变为一个子问题集合这些子问题的解可以直接得到(本原问题),从而解决了初始问题问题归约法问题归约法的组成部分一个初始问题描述;一套把问题变换为子问题的操作符;一套本原问题描述。(本原问题:不能再分解或变换且直接可解的子问题)问题归约的实质:从目标(要解决的问题)出发逆向推理,建立子问题以及子问题的子问题,直到最后把初始问题归约为一个本原问题集合。问题归约法问题归约法举例:汉诺塔问题(Hanoi)从1移到3每次移动一个盘子大盘在下小盘在上123CBA初始状态(111)目标状态(333)CBA汉诺塔问题原始问题可以归约为下列3个子问题:子问题1:移动圆盘A和B至柱子2(借助柱子3)子问题2:移动圆盘C至柱子3子问题3:把圆盘A和B移至柱子3(借助柱子1)汉诺塔问题归约过程(3个圆盘)汉诺塔问题汉诺塔问题归约图本原问题本原问题与或图CBA梵塔问题的答案一圆盘问题要走几步,两圆盘问题要走几步?三个、四个、…、六十四个圆盘呢?圆盘个数移动圆盘次数11222-1=3323-1=7……64264-1问题264-1=18446744073709551615一年=365*24*60*60=31536000秒18446744073709551615÷31536000≈584942417355年问题归约法与或图表示:用一个类似于图的结构来表示把问题归约为后继问题的替换集合。与图:把一个复杂问题分解为若干个较为简单的子问题,形成“与”树。或图:把原问题变换为若干个较为容易求解的新问题,形成“或”树。问题归约法与或图表示:BCDEFGAHMBCDEFGAN子问题替代集合结构图与或图问题归约法一些关于与或图的术语起始节点对应于原始问题描述终叶节点对应于本原问题问题归约法与或图的构成规则1)与或图中的每个节点代表一个要解决的单一问题或问题集合。图中所含起始节点对应于原始问题A。2)对应于本原问题的节点称为终叶节点,它没有后继节点。3)对于把算符应用于问题A的每种可能情况,都把问题变换为一个子问题集合;有向弧线自A指向后继节点表示所求得的子问题集合。HMBCDEFGAN问题归约法与或图的构成规则4)一般对于代表两个或两个以上子问题集合的每个节点,有向弧线从此节点指向次子问题集合中的各个节点。由于只有当集合中所有项都有解时,这个子问题的集合才能获得解答,所以这些子问题节点叫做与节点。5)特殊情况下,当只有一个算符可应用于问题A,而且这个算符产生具有一个以上子问题的某个集合时,由上述规则3)和规则4)所产生的图可以得到简化。MDEFAADEF简化问题归约法与或图的搜索:目的在于表明起始节点是有解的。可解节点终叶节点是可解节点(对应于本原问题)。如果某个非终叶节点含有或后继节点,那么只要当其后继节点至少有一个是可解的时,此非终叶节点才是可解的。如果某个非终叶节点含有与后继节点,那么只有当其后继节点全部为可解时,此非终叶节点才是可解的。问题归约法不可解节点没有后裔的非终叶节点为不可解节点。如果某个非终叶节点含有或后继节点,那么只有当其全部后裔为不可解时,此非终叶节点才是不可解的。如果某个非终叶节点含有与后继节点,那么只要当其后裔至少有一个为不可解时,此非终叶节点才是不可解的。解树由可解节点所构成,并且由这些可解节点可推出初始节点为可解节点的子树称为解树。解树中一定包含初始节点,它对应于原始问题。问题归约法ttttttttt有解节点无解节点终叶节点与或图例子作业利用问题归约法求四个盘子的梵塔问题。要求:画出归约图