当前位置:首页 > 技术分析 > 正文内容

基本算法——分支定界法(分支定界法是谁提出的)

ruisui884个月前 (02-03)技术分析18

“分枝界限法”把问题的可行解展开如树的分枝,再经由各个分枝中寻找最佳解。

采用广度优先产生状态空间树的结点,并使用剪枝函数的方法称为分枝限界法。
所谓“
分支”是采用广度优先的策略,依次生成扩展结点的所有分支(即:儿子结点)。
所谓“
限界”是在结点扩展过程中,计算结点的上界(或下界),边搜索边减掉搜索树的某些分支,从而提高搜索效率。

分支定界法设计思想:

  • 先确定一个合理的定界函数
  • 由定界函数确定目标函数的界【down,up】
  • 仍以穷举法的解空间树为基础,但以广度优先的原理搜索该节点的所有孩子节点,分别估算这些孩子节点的目标函数的可能取值决定取舍
  • 如果某孩子节点的目标函数可能取值超出目标函数的界,则将其丢弃,因为从这个节点生成的解不会比目前已经得到的解更好;否则,将其加入待处理节点表(PT表,简称活节点表)
  • 一次从PT表中选取使目标函数取极值的节点成为当前扩展的节点,重复上述过程,直到找到最优解。

目标函数的界【down,up】的确定:

  • 对最大化问题

up由定界函数确定,down由眸子启发方式得到,如贪心算法

  • 对最小化问题

donw由定界函数得到,up由某种启发方式得到,如贪心算法

分支定界法复杂性:

  • 一个更好的定界函数,通常需要花费更多的时间计算相应的目标函数值,而且对于具体的问题实例,通常需要进行大量的实验,才能确定一个好的定界函数;
  • 由于分支定界法对解空间树中节点的处理是跳跃式的,因此,在搜索到某个叶子节点得到最优解时,为了从该叶子节点求出对应的最优解中的各个分量,需要对每个扩展节点保存该节点到根节点的路径
  • 算法需要维护一个待处理节点PT表,并且需要在PT表中快速查找取得极值的节点,等等。这都需要较大的存储空间,在最坏的情况下,分支定界法需要的空间复杂性是指数级的。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1265.html

分享给朋友:

“基本算法——分支定界法(分支定界法是谁提出的)” 的相关文章

Vue页面传参详解

一、两种方式方法1:name跳转页面this.$router.push({name:'anotherPage',params:{id:1}})另一页面接收参数方式:this.$route.params.id示例:控制台展示:方法2:path跳转页面this.$router.push(...

FANUC PMC设计与编程-机床控制信号

一、机床控制信号1.控制装置准备完成信号MA(machine ready)电源接通及CNC控制软件正常运行准备完成后,该信号为1,通知上级控制装置电源已经接通,该信号可以作为常开信号使用。2.伺服准备完成信号SA(servo ready)紧急停止解除及伺服系统准备完成后,该信号为1。3.紧急停止信号...

在SpringBoot+Vue3项目中通过Nginx代理WebSocket实现跨域通信

引言在现代Web开发中,实时数据交互变得越来越重要,而WebSocket作为HTML5标准的一部分,提供了一种全双工、长连接的通信方式,使得服务器与客户端可以进行双向实时通信。但在实际应用中,由于浏览器同源策略的限制,前端应用直接访问后端WebSocket服务可能会受到阻碍,尤其是在前后端部署不在同...

一篇文章说清 webpack、vite、vue-cli、create-vue 的区别

webpack、vite、vue-cli、create-vue 这些都是什么?看着有点晕,不要怕,我们一起来分辨一下。先看这个表格:脚手架vue-clicreate-vue构建项目vite打包代码webpackrollup脚手架:创建项目,选择性安装需要的插件,指定统一的风格,生成demo。构建项目...

使用vue-cli(vue脚手架)快速搭建项目

前段时间,总有人私信小编Echa哥,用vue-cli 如何快速搭建项目,有没有相关案例教程?我想了想,Vue 都发布了这么久的时间了,连基本的vue-cli 都不会灵活运用,那怎么玩VUE 项目呢?后面我换位思考了一下,有必要整理一篇关于vue-cli 快速搭建项目(要考虑到新手入门),废话少说,进...

小程序学习日志8:swiper滑动轮播组件(轮播图)(上)

导读经过这段时间的学习,大家对小程序的编程和代码掌握的如何了呢?今天我们来讲小程序里实现轮播图的方法,大家要专心看哦。<swiper>组件这个组件叫做滑块组件,嗯,听起来还挺形象的,你看滑动轮播图的时候是不是就像滑动一个个方框的一样?首先,按着老规矩,我们需要先打开微信小程序开发者文档,...