第六章 分支限界法 2021/2/21 计算机算法设计与分析
2021/2/21 计算机算法设计与分析 1 第六章 分支限界法
分支限界法是最佳优先搜索法 分支限界法就是最佳优先(包括广度优先在内) 的搜索法 ■分支限界法将要搜索的结点按评价函数的优劣 排序,让好的结点优先搜索,将坏的结点剪去。 所以准确说,此方法应称为界限剪支法。 分支限界法中有两个要点 ■(1)评价函数的构造; (2搜索路径的构造。 2021/221 计算机算法设计与分析 2
2021/2/21 计算机算法设计与分析 2 分支限界法是最佳优先搜索法 ◼ 分支限界法就是最佳优先(包括广度优先在内) 的搜索法。 ◼ 分支限界法将要搜索的结点按评价函数的优劣 排序,让好的结点优先搜索,将坏的结点剪去。 所以准确说,此方法应称为界限剪支法。 ◼ 分支限界法中有两个要点: ◼ (1)评价函数的构造; ◼ (2)搜索路径的构造
评价函数的构造 ■评价函数要能够提供一个评定候选扩展结点的 方法,以便确定哪个结点最有可能在通往目标 的最佳路径上。 个评价函数f(d通常可以由两个部分构成: (1)从开始结点到结点d的已有耗损值g(d),和(2) 再从结点d到达目标的期望耗损值h(d)。即: f(d)=g(d)+h(d) 通常g(d)的构造较易,h(d)的构造较难 2021/22 计算机算法设计与分析 3
2021/2/21 计算机算法设计与分析 3 评价函数的构造 ◼ 评价函数要能够提供一个评定候选扩展结点的 方法,以便确定哪个结点最有可能在通往目标 的最佳路径上。 ◼ 一个评价函数f(d)通常可以由两个部分构成: ⑴从开始结点到结点d的已有耗损值g(d),和⑵ 再从结点d到达目标的期望耗损值h(d)。即: f(d) = g(d) + h(d) ◼ 通常g(d)的构造较易,h(d)的构造较难
搜索路径的构造 ■粧锄溯展的缚敚儐栲个条愍径,因 而只需要构造这点路径即可:前进时 记下相应筠点約溯删去最末尾结点 的记录a这啪稼瘠易滤针 ■桷支溏称,趔南蹇粪罐係路 ,磲礬撇索踯郤曜 ■用一个表保存已搜索过的结点,称为 Closed表。 2021/22 计算机算法设计与分析
2021/2/21 计算机算法设计与分析 4 搜索路径的构造 ◼ 在回溯法中,每次仅考察一条路径,因 而只需要构造这一条路径即可:前进时 记下相应结点,回溯时删去最末尾结点 的记录。这比较容易实现。 ◼ 在分支限界法中,是同时考察若干条路 径,那么又该如何构造搜索的路径呢? ◼ 对每一个扩展的结点,建立三个信息: ◼ (1)该结点的名称; ◼ (2)它的评价函数值; ◼ (3)指向其前驱的指针; ◼ 这样一旦找到目标,即可逆向构造其路径。 ◼ 用一个表保存准备扩展的结点,称为Open表。 ◼ 用一个表保存已搜索过的结点,称为Closed表
分支限界法的一般算法 ()计算初始结点s的f(s);s,f(s),ni放入Open; (2)whle(Open约){ (3)从Open中取出[p,fp),x](p)为最小) (4)将[p,fp),x放入 Closed; (⑤5)若p是目标,则成功返回;否则 (6){产生p的后继d并计算f(d);对每个后继d ■(7){若([d,f(d),p]∈ Closed[d,f(d),p]∈Open) &&f(d)<f(d),则删去旧结点并将[d,fd),p] 重新插入到Open中;否则 (8)将[d,f(d),p插入到open中}} 2021/221 计算机算法设计与分析 5
2021/2/21 计算机算法设计与分析 5 分支限界法的一般算法 ◼ ⑴计算初始结点s的f(s); [s, f(s), nil]放入Open; ◼ ⑵while (Open ≠Φ) { ◼ ⑶ 从Open中取出[p, f(p), x](f(p)为最小); ◼ ⑷ 将[p, f(p), x]放入Closed; ◼ ⑸ 若p是目标,则成功返回;否则 ◼ ⑹ { 产生p的后继d并计算f(d) ;对每个后继d 有二种情况:①dClosed || d Open; ②dOpen && dClosed。 ◼ ⑺ {若([d, f’(d), p]Closed || [d, f’(d), p]Open) && f(d)<f’(d),则删去旧结点并将[d, f(d), p] 重新插入到Open中; 否则 ◼ ⑻ 将[d, f(d), p] 插入到Open中}}}