分支界限法.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

武汉理工大学

算法设计与分析论文题目:分支限界法应用研究

目录

摘要 (1)

1.绪论 (2)

2分支限界法的内容 (3)

2.1 分支限界法基本思想 (3)

2.2 两种分支限界法 (3)

2.3 分支限界法的设计思路 (4)

2.4分支限界法与回溯法区别 ............... 错误!未定义书签。

3 分支限界法应用 (5)

3.1批处理作业问题 (5)

3.2 旅行售货员问题 (6)

3.3单源最短路径问题 (12)

3.4 01背包问题 (12)

4.总结 (24)

5.参考文献 (25)

摘要

分支限界法常以广度优先或以最小耗费优先的方式搜索问题的解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。

本文讲述了分支限界法的含义、基本思路及实现过程,分支限界法的核心、基本性质、特点及其存在的问题。并通过分支限界法的特点,举例列出了以往研究过的几个经典问题,对于实际应用中的问题,也希望通过分支限界法的特点来解决。

关键词:分支限界法;解空间树;最优解;

1.绪论

为了解决各种实际问题,计算机算法学得到了飞速的发展,线性规划、动态规划、分支限界法等一系列运筹学模型纷纷运用到计算机算法学中,产生了解决各种现实问题的有效算法。虽然设计一个好的求解算法更像是一门艺术而不像是技术 ,但仍然存在一些行之有效的、能够用于解决许多问题的算法设计方法 ,你可以使用这些方法来设计算法 ,并观察这些算法是如何工作的。一般情况下,为了获得较好的性能,必须对算法进行细致的调整。但是在某些情况下,算法经过调整之后性能仍无法达到要求,这时就必须寻求另外的方法来求解该问题。分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。

2分支限界法的内容

2.1 分支限界法基本思想

分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。

此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。

2.2 两种分支限界法

(1)队列式(FIFO)分支限界法

按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。

(2)优先队列式分支限界法

按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点

2.3分支限界法的设计思路

设求解最大化问题,解向量为X=(x1,…,xn),xi的取值范围为Si,|Si|=ri。在使用分支限界搜索问题的解空间树时,先根据限界函数估算目标函数的界[down, up],然后从根结点出发,扩展根结点的r1个孩子结点,从而构成分量x1的r1种可能的取值方式。对这r1个孩子结点分别估算可能的目标函数bound(x1),其含义:以该结点为根的子树所有可能的取值不大于bound(x1),即:

bound(x1)≥bound(x1,x2)≥…≥ bound(x1,…,xn)

若某孩子结点的目标函数值超出目标函数的下界,则将该孩子结点丢弃;否则,将该孩子结点保存在待处理结点表PT中。再取PT表中目标函数极大值结点作为扩展的根结点,重复上述。直到一个叶子结点时的可行解X=(x1,…,xn),及目标函数值bound(x1,…,xn)。

2.4分支限界法与回溯法区别

(1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。

(2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。

3分支限界法应用

3.1批处理作业问题

(1)问题提出。

给定n 个作业的集合J={J1,J2,…,Jn}。每一个作业Ji 都有2项任务要分别在2台机器上完成。每一个作业必须先由机器1处理,然后再由机器2处理。作业Ji 需要机器j 的处理时间为tji ,i=1,2,…,n ;j=1,2。对于一个确定的作业调度,设是Fji 是作业i 在机器j 上完成处理的时间。则所有作业在机器2上完成处理的时间和

称为该作业调度的完成时间和。

批处理作业调度问题要求对于给定的n 个作业,制定最佳作业调度方案,使其完成时间和达到最小。 (2)算法分析。

在结点E 处相应子树中叶结点完成时间和的下界是:

注意到如果选择Pk ,使t1pk 在k>=r+1时依非减序排列,S1则取得极小值。同理如果选择Pk 使t2pk 依非减序排列,则S2取得极小值。

这可以作为优先队列式分支限界法中的限界函数。 (3)主要算法介绍。 do {

if (enode.s == n ) { if (enode.sf2 < bestc) { bestc = enode.sf2;

for (int i = 0; i < n; i++) bestx[i] = enode.x[i]; } } else

for (int i = enode.s; i < n; i++) {

∑==n

i i F f 12}

,max{212S S F f M

i i +≥∑∈}ˆ,ˆmax{2

12S S F

f M

i i

+≥

∑∈

相关文档
最新文档