第七章 分支限界法_new.ppt

第七章 分支限界法_new.ppt

ID:49096327

大小:528.50 KB

页数:27页

时间:2020-01-31

第七章 分支限界法_new.ppt_第1页
第七章 分支限界法_new.ppt_第2页
第七章 分支限界法_new.ppt_第3页
第七章 分支限界法_new.ppt_第4页
第七章 分支限界法_new.ppt_第5页
资源描述:

《第七章 分支限界法_new.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机算法设计与分析NorthChinaElectricPowerUniversityComputerAlgorithmsDesign&Analysis华北电力大学计算机科学与工程系Dept.ofComputerScience&EngineeringofNorthChinaElectricPowerUniversity第七章分支限界法★分支限界法的基本思想★单源最短路径问题★布线问题NorthChinaElectricPowerUniversity★方格调整问题§1分支限界法的基本思想分支限界法类似于回溯算法,也是一种在问题的解空间树T上搜索问题的解的算法。和回溯法的区别:1.求解目标不同:回

2、溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。2.结点的扩展方式不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或最小耗费优先的方式搜索解空间树,在扩展结点处,先生成所有的儿子结点,然后再从当前的扩展结点表中选择下一个扩展结点。3.活结点成为扩展结点的机会不同:在回溯法中每个结点可能有多次机会成为扩展结点,而分支限界法中每个活结点只有一次机会成为扩展结点。NorthChinaElectricPowerUniversity分支限界法以广度优

3、先或最小耗费优先的方式搜索问题的解空间树。在搜索问题的解空间树时,每一个活结点只有一次机会称为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有的儿子结点。在这些儿子结点中,那些导致不可行解或非最优解的儿子结点被舍弃,其余的儿子结点被加入活结点表中。此后,从活结点表中选择下一个结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。分支限界法的搜索策略:NorthChinaElectricPowerUniversity根据从活结点表中选择下一结点的不同方式,分支限界法分为两类:1)队列式分支限界法队列式分支限界法将活结点表组织成一个队列,并按照队列的

4、先进先出的原则选取下一个结点称为当前结点。2)优先队列式分支限界法优先队列式分支限界法将活结点表组织成一个优先队列,并按照优先队列中规定的优先级选取优先级最高的下一结点成为当前扩展结点。在算法实现时,通常用一个最大堆来实现最大优先队列,用最小堆来实现最小优先队列。用优先队列法解具体问题时,应根据具体问题的特点选用最大优先队列活最小优先队列来表示解空间的活结点表。ABCDEFGHIJLKMNOx1=1x1=0x2=1x2=0x3=1x3=0x3=1x3=0x2=1x2=0x3=1x3=0x3=1x3=0例:0-1背包问题n=3,C=20,(p1,p2,p3)=(20,15,25)(w1,w2,w

5、3)=(10,5,15),求X=(x1,x2,x3)使背包价值最大?(10,20)(15,35)(15,35)(10,20)(10,20)(5,15)(20,40)(15,35)(5,15)(20,40)(0,0)(0,0)(15,25)(20,40)(20,40)(0,0)(20,40)当前最优解可行解中间计算结果ABCDEFGHIJLKMNO10101010101010解空间树T例:0-1背包问题n=3,C=20,(p1,p2,p3)=(20,15,25)(w1,w2,w3)=(10,5,15),求X=(x1,x2,x3)使背包价值最大?B1020C00D1535E1020F515G00I

6、1535当前最优解K1020M515N1525O00L2040当前最优解(10,20)(15,35)(10,20)(5,15)(0,0)(0,0)堆是满足下列性质的数列{R1,R2,…,Rn}:或若将此数列看成是一棵完全二叉树,则堆或是空树或是满足下列特性的完全二叉树:其左、右子树分别是堆,并且当左、右子树不空时,根结点的值小于(或大于)左、右子树根结点的值。堆的补充知识1.堆的定义2.最小堆的C++描述templateclassMinHeap{Arrayarray;intcount;public:MinHeap(unsignedintn);~Min

7、Heap();EnQueue(Object&object);Object&DeleteMin();}3.最小堆的插入和删除1)插入34675插入23467534675346752voidMinHeap::EnQueue(Object&object){if(count==array.Length())throwdomain_error(“priorityqueueisfull”);++count;u

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。