摘要:
line void LC(tree T,float cost) {//为找一个答案结点检索T0 if(T是答案结点) {输出T;return;}1 E=T; //E-结点2 将活结点表初始化为空;3 while(1) {4 for(E的每个子结点X) {5 if(X是答案结点) {输出从X到T的路径;6 return;7 };//endif8 Add(X); //X是新的活结点9 Parent(X)=E; //指示到根的路径10 };//for11 if(不再有活结点) { print(‘no answer node’);12 stop;13 };//if14 Least(E) ;15 } / 阅读全文
摘要:
问题:检索4-皇后问题的状态空间树如下图的基本过程。(4-皇后问题解空间的树结构,结点按深度优先检索编号) 如果按序扩展这些结点,则下一个E-结点就是结点2。扩展结点2后生成结点3,8和13。利用限界函数(同行、列、对角线上只能放置1个皇后),结点3(放在第二列)立即被杀死。于是,仅将结点8和13加到活结点队列。结点18变成下一个E-结点,生成结点19(放在第一列),24(放在第三列)和29(放在第四列),限界函数杀死结点19和24,结点29被加到活结点队列。下一个E-结点是34,…。 下图显示了由FIFO分枝_限界检索生成图7.1所示的树的一部分(由FIFO分枝-限界法生成的4-皇后问题.. 阅读全文
摘要:
定义:分支定界 (branch and bound) 算法是一种在问题的解空间树上搜索问题的解的方法。但与回溯算法不同,分支定界算法采用广度优先或最小耗费优先的方法搜索解空间树,并且,在分支定界算法中,每一个活结点只有一次机会成为扩展结点。利用分支定界算法对问题的解空间树进行搜索,它的搜索策略是: 1 .产生当前扩展结点的所有孩子结点; 2 .在产生的孩子结点中,抛弃那些不可能产生可行解(或最优解)的结点; 3 .将其余的孩子结点加入活结点表; 4 .从活结点表中选择下一个活结点作为新的扩展结点。如此循环,直到找到问题的可行解(最优解)或活结点表为空。分支限界法的思想是:首先确定目标值... 阅读全文