,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,分支限界法解决,单源最短路径,1.分支限界法根本思想,2.,问题描述,3.,算法思路,分支限界法的根本思想,分支限界法以广度优先或以最小消耗优先的方式搜寻解空间树。,在分支限界法中,每一个活结点只有一次时机成为扩展结点。活结点一旦成为扩展结点,就一次性产生其全部儿子结点。在这些儿子结点中,导致不行行解或导致非最优解的儿子结点被舍弃,其余儿子结点被参加活结点表中。,此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程始终持续到找到所需的解或活结点表为空时为止。,给定带权有向图G=(V,E),其中每条边的权是非负实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到全部其它各顶点的最短路长度。这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。,单源最短路径,S,T,a2,b3,k3,f9,e2,d7,c4,l5,h2,g2,n5,i5,m1,j3,o5,p2,u3,从s点动身到t点,如何找到最短路径?,单源最短路径,q,r2,字母旁边的数字为路长,解题思路:,优先队列式分支限界法,依据优先队列中规定的优先级选取优先级最高的结点成为当前扩展结点。,在本例中,优先级即为各节点的当前路长,当前路长小的节点优先,单源最短路径,剪枝条件:,在算法扩展过程中,一旦觉察一个结点的路径,不小于当前找到的最短路径,则减去以该结点,为根的子树,s,h,f,g,d,e,u,c,b,a,2,5,4,6,12,5,9,4,3,单源路径问题的解空间树,节点旁数字为当前路长,算法从源节点S开头,S被扩展,3个子节点被插,入堆中,计算当前最短路径为2,将当前路径最短的节点,扩展,即走au,ae,ad,计算当前最短路径为3,,将其扩展,走bg,bf,计算当前最短路径为4,,由先进先出原则,走ch.,单源最短路径,s,q,h,f,g,d,e,u,c,b,a,l,m,k,2,5,4,6,12,5,9,4,3,10,6,7,5,当前最短路程为4,将其扩展,即走aeq,aek;,计算最短路程为5,留意:当前结点不小于已找到的最短路程,剪枝:不再扩展,连续,最短路程为5,,将其扩展,即bgm,bgl;,计算最短路径为5.满足剪枝条件,剪枝。,单源最短路径,s,q,h,f,g,d,e,u,c,b,a,l,m,k,r,p,2,5,4,6,12,5,9,4,3,10,6,7,5,8,8,计算当前最短路程6,满足剪枝条件,剪枝,计算当前最短路程,为6,走bgmr,bgmp路径。,当前最短路径为7,扩展得aeko.,当前最短路径为8.算法完毕,单源最短路径,12,总结:,分支限界法,通过目标函数和约束条件削减无效操作,尽早觉察剪枝点。适用于解决满足约束条件的解中找出是目标函数值到达最大或最小的解。,所以单源最短路径很适合用分支限界法解决,单源最短路径,Thank you,