南邮《算法分析与设计》期末复习 CH9:分枝限界法
一、分枝限界法
分枝限界法广度优先搜索问题的状态空间树,用剪枝函数(往往是限界函数)进行剪枝,通常求问题的最优解。
二、分枝限界法与回溯法的共同点
都是在问题的状态空间树上搜索问题解的算法,都通过活结点表实现。都用约束函数剪去不含答案结点的分枝,用限界函数剪去不含最优解的分枝。
三、分枝限界法与回溯法的区别
(1)求解目标不同:回溯法的求解目标是找出解空间树中满足约束条件的所有可行解;而分枝限界法的求解目标则是找出满足约束条件的一个可行解,或某种意义下的最优解。
(2)搜索方式不同:回溯法以深度优先的方式搜索解空间树,而分枝限界法则以广度优先的方式搜索解空间树。
(3)对当前扩展结点的扩展方式不同:回溯法中的每个活结点可能多次成为当前扩展结点,纵深方向扩展其一个儿子,然后再回溯后扩展其他儿子;而分枝限界法中每一个活结点只有一次机会成为扩展结点,一次产生所有孩子结点,自身成为死结点,之后无需再返回该结点处。
四、根据活结点表采用的数据结构不同,分枝限界法分类:
- 队列式(FIFO)分枝限界法:将活结点表组织成一个队列,按队列的先进先出(FIFO)原则选取下一个结点为当前扩展结点。
- 堆栈式(LIFO)分枝限界法:将活结点表组织成一个堆栈,按堆栈的后进先出(LIFO)原则选取下一个结点为当前扩展结点。
- 优先队列式(LC)分枝限界法:将活结点表组织成一个优先队列,并按优先队列中规定的结点优先级选取优先级最高的下一个结点为当前扩展结点。
五、检索方法
LC-检索(最小成本检索)
D-检索(LIFO检索)
FIFO检索
六、15谜问题(定理9-1:判定初始状态是否可以到达目标状态)
- FIFO、LIFO、LC分枝限界法
- LC分枝限界法中搜索代价 ^c(x)=f(x)+ ^g(x)
- 补充题(十五谜问题的LC分支限界法求解,生成的状态空间树)
七、上、下界函数——与最优化问题的目标函数有关
- ^c(x) 是代价函数c(X)的下界函数
- u(x) 是代价函数c(X)的上界函数
八、如何用上、下界函数进行剪枝
①(若目标函数取最小值时为最优解)
- 则用上界变量U记录迄今为止已知的最小代价上界(即迄今为止已知的可行解中目标函数最小值),可以确定最小代价答案结点(最优解)的代价值不会超过U。
- 对任意结点,若 ^c(X)≥U,则X子树可以剪枝。
- 为了不至误剪去包含最小代价答案结点的子树,若X代表部分向量,则U=min {u(X)+ε,U};若X是答案结点,则U=min {cost(X),U}。
②(若目标函数取最大值时为最优解)
- 则用下界变量L记录迄今为止已知的最大代价下界(即迄今为止已知的可行解中目标函数最大值),最大代价答案结点(最优解)的代价值不会小于L。
- 对任意结点,若 u(X)≤L,则X子树可以剪枝。
- 为了不至误剪去包含最大代价答案结点的子树,若X代表部分向量,则L=max { ^c(x)-ε,L};若X是答案结点,则L=max {cost(X),L}。
九、带时限的作业排序
- 前提:作业按时限排序,以便判断是否可行。
- 画出JSFIFOBB算法(FIFO分枝限界法)实际生成的状态空间树(目标函数为损失最小)
- 从活结点表中选取扩展结点时,应保证扩展结点满足^c<U ,否则剪枝。
- 扩展结点生成孩子时,应剪去不可行的孩子结点(即:子集内的作业不能在时限内完成)
- 对于可行的孩子结点,进一步计算其损失下界c和损失上界u。当c<U时生成该结点,否则剪枝。
- 每生成一个孩子,需同时检查是否要用u更新上界变量值U。
- 求最优解值(最大作业收益=所有作业收益之和-最优解对应的最小损失)和最优解(入选的作业编号,可变长度解)
- 课后习题9-2
南邮《算法分析与设计》期末复习 CH9:分枝限界法相关推荐
- 南邮操作与系统期末复习重点及习题汇总
文章目录 第一章--操作系统概论 多道批处理系统 概念 第三章--进程管理与调度 进程的状态与转换(三态模型) 概念 进程的三种基本状态 创建状态和终止状态 挂起操作 进程控制块 概念 进程描述信息 ...
- 算法分析与设计期末总结(安徽大学)
目录 前言 一.算法概述 算法与程序 算法复杂度分析 NP完全理论 二.递归与分治策略 递归(自顶向下) 分治策略(自顶向下) 三.动态规划(自底向上) 0-1背包问题:给定n种物品和一背包.物体i的 ...
- NJUPT算法分析与设计期末考试202.12.1
NJUPT算法分析与设计期末考试2021.11.24 判断 简答 1.算法是什么?算法的时间复杂度是什么?衡量的原则,标准,工具 2.分支限界法扩展活节点的方式有哪两种,有什么差别? 3.回溯法搜索子 ...
- 算法分析与设计课程复习之回溯法
算法分析与设计课程复习之回溯法 一.基本思想 1.解空间 设问题的解向量为X=(x1,x2,-,xn) ,xi的取值范围为有穷集Si .把xi的所有可能取值组合,称为问题的解空间.每一个组合是问题的一 ...
- UML2面向对象分析与设计期末复习知识点
UML2期末复习总结-----看完不过!你找我!(( ‵o′)) PS:只是知识点总结,还是要看书的. PS:未经作者允许,严禁转载.违者后果自负. 撰写人:Echo 时间:2020年12月29日16 ...
- 算法分析与设计期末总结
这是我的算法分析与设计课程自己总结的一些知识点,应该不太全,记录一下 算法的特征: 输入,输出,确定性,有穷性,可行性 基本数据结构: 线性,树结构,图结构,集合 递归与分治 1.递归法 使用递归 ...
- 《算法分析与设计》复习笔记
目录 一.算法的基本概念 1.1 算法的定义 1.2 算法的"好坏"如何衡量? 1.3 描述算法的时间复杂度 ⭐ 1.4 如何评价算法 二. 分治法 2.1 分治法的求解步骤 2. ...
- 南邮Android软件设计报告,南京邮电大学软件设计实验报告
南京邮电大学软件设计实验报告 软件设计报告( 2014 / 2015 学年 第 二 学期)课程名称 软件设计 指导老师 赵江 实习时间 第十八周 学生姓名 学号 ____学院______专业软件设计课 ...
- 基于RS485的简单现场总线通信系统设计-南邮自动化课程设计
基于RS485的简单现场总线通信系统设计 指导书 1. 课程设计目的 1) 进一步融合大学期间所学的理论知识和实践技能: 2) 提高学生问题分析能力和实际操作能力: ...
最新文章
- 动态添加控件及将某XML动态加入到Activity显示
- 实验16:使用context:include-filter指定扫描包时要包含的类 实验17:使用context:exclude-filter指定扫描包时不包含的类
- tensorflow从入门到精通100讲(七)-TensorFlow房价预估使用Keras快速构建模型
- eclipse输入中文为繁体字
- Asp.Net Core(.net内核)
- Kinect V2 基础教程之彩色图像
- 推自己的镜像到网易云
- java.lang.OutOfMemoryError: PermGen space 问题解决
- vue webpack打包入口文件是哪个_Vue 学习笔记(二十五):webpack 相关
- mysql group 最大值_MySQL groupwise最大值为字段的长度
- 创建oracle数据库job服务:PlSqlDev操作job
- maya导入abc动画_UE4 Alembic 动画资产流程的整理
- 0基础学RS(二十五)思科OSPF配置
- xlsxwriter去掉网格线_用XlsxWriter设置Excel的表格边框
- java动态表头_easyPOI动态表头
- c++实现排列与组合
- redis击穿,穿透,雪崩以及解决方案
- shaderToy初学笔记(一)(​转载自最简单的ShaderToy入门 - 笑脸渲染_亨利王的博客-CSDN博客_shadertoy)
- CPU四核八线程和四核四线程的区别
- Java虚拟机学习与总结(一)