news 2026/5/30 21:13:11

[算法设计与分析-从入门到入土] 分支限界法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[算法设计与分析-从入门到入土] 分支限界法

[算法设计与分析-从入门到入土] 分支限界法

个人导航

知乎:https://www.zhihu.com/people/byzh_rc

CSDN:https://blog.csdn.net/qq_54636039

注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码

参考文章:各方资料

文章目录

  • [算法设计与分析-从入门到入土] 分支限界法
  • 个人导航
  • 分支限界法branch and bound
        • 1.旅行商问题TSP

分支限界法branch and bound

分支限界法与回溯法均会生成搜索树并寻找解, 但:

  • 回溯法:搜索满足特定性质的解(可多个)
  • 分支限界法:通常专注于对给定函数进行最大化或最小化计算(核心目标是最优解)

分支限界法的关键在于“界限计算”与“剪枝”:

  1. 在搜索树的每个节点x处,计算一个界限:该界限代表以x为根的子树后续可能生成的解的取值范围
  2. 剪枝规则:若当前节点x的界限比已找到的最优界限更差,则剪去以x为根的子树
    (不再继续搜索该分支,减少无效计算)

若算法目标是最小化代价函数,该函数需满足以下单调性:

对于所有的部分解( x 1 , x 2 , … , x k − 1 ) (x_1, x_2, \dots, x_{k-1})(x1,x2,,xk1)及其扩展解( x 1 , x 2 , … , x k ) (x_1, x_2, \dots, x_k)(x1,x2,,xk),必须满足:
cost ( x 1 , x 2 , … , x k − 1 ) ≤ cost ( x 1 , x 2 , … , x k ) \text{cost}(x_1, x_2, \dots, x_{k-1}) \leq \text{cost}(x_1, x_2, \dots, x_k)cost(x1,x2,,xk1)cost(x1,x2,,xk)

  • 若某个部分解( x 1 , x 2 , … , x k ) (x_1, x_2, \dots, x_k)(x1,x2,,xk)的代价 ≥ 之前已计算出的最优解代价,则直接舍弃该部分解
  • 若已找到代价为c的最优解,任何代价≥c的部分解都无需继续扩展
1.旅行商问题TSP

TSP: Travelling Salesman Problem

给定一组城市,以及每对城市之间的代价函数(可表示距离、时间、费用等),要求找出一条最小代价的回路
该回路需满足“恰好访问每个城市一次,最终回到起点”

下界计算(约减代价矩阵):

对于TSP的任意完整回路,其代价对应代价矩阵中“每一行、每一列各取一个元素”的总和(即每个城市出发和到达各一次)

若从代价矩阵A的任意一行或一列的所有元素中减去一个常数r,则新矩阵中任意回路的代价,比原矩阵A中同一回路的代价恰好减少r

基于此,可通过行/列减常数的操作,构造“约减代价矩阵”——使矩阵的每一行、每一列至少包含一个值为0的元素(简化后续计算)

  • A为n×n的原始代价矩阵
  • ( r 1 , r 2 , . . . , r n ) (r_1, r_2, ..., r_n)(r1,r2,...,rn)为从矩阵第1行到第n行分别减去的常数
  • ( c 1 , c 2 , . . . , c n ) (c_1, c_2, ..., c_n)(c1,c2,...,cn)为从矩阵第1列到第n列分别减去的常数

则任意完整回路代价的一个下界y为:
y = ∑ i = 1 n r i + ∑ i = 1 n c i y = \sum_{i=1}^{n} r_i + \sum_{i=1}^{n} c_iy=i=1nri+i=1nci
例子:

先将代价矩阵化为约减代价矩阵:

再逐步决策, 更新矩阵:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 21:23:59

YOLO目标检测支持字段投影?减少GPU数据传输

YOLO目标检测支持字段投影?减少GPU数据传输 在智能工厂的质检流水线上,摄像头每秒捕捉数百帧高清图像,YOLO模型飞速识别缺陷产品。但你是否想过——这些画面中真正需要分析的区域,可能只占整个画面的不到30%?其余部分&…

作者头像 李华
网站建设 2026/5/28 22:07:26

YOLO模型支持OpenVINO?Intel GPU部署指南

YOLO模型支持OpenVINO?Intel GPU部署指南 在智能制造车间的高速流水线上,每分钟数百件产品飞速流转,视觉系统必须在毫秒级内完成缺陷检测并触发分拣动作。传统基于CPU的目标检测方案常常因延迟过高而错过关键帧,导致漏检率上升&am…

作者头像 李华
网站建设 2026/5/29 22:01:09

YOLO开源项目贡献指南:提交代码前先用GPU测试

YOLO开源项目贡献指南:提交代码前先用GPU测试 在现代计算机视觉开发中,向主流目标检测框架如YOLO提交代码,早已不是“写完能跑”那么简单。尤其当你修改的是模型结构、训练逻辑或数据流时,一个看似无害的改动——比如忘记把某个张…

作者头像 李华
网站建设 2026/5/28 12:12:35

YOLO开源项目Star破万!背后是强大的GPU支持

YOLO开源项目Star破万!背后是强大的GPU支持 在工业质检线上,一台摄像头正以每秒60帧的速度捕捉零件图像。传统视觉系统还在为光照变化和遮挡问题焦头烂额时,搭载YOLO模型的工控机已经完成了上千次推理——从缺陷识别到报警触发,整…

作者头像 李华
网站建设 2026/5/28 15:20:07

[Linux外设驱动详解]RK3588 U-Boot Recovery 功能详解

RK3588 U-Boot Recovery 功能详解 目录 概述 核心数据结构 启动模式定义 Recovery 触发方式 启动模式检测机制 Recovery 启动流程 RockUSB 下载模式 相关文件清单 概述 RK3588 平台的 U-Boot Recovery 功能是 Android 系统恢复机制的重要组成部分。它支持通过多种方式进入 re…

作者头像 李华
网站建设 2026/5/28 21:22:06

面试官:如何在 Kafka 中实现延迟消息?

今天我们来聊一个消息队列问题,“如何在 Kafka 中实现延迟消息?” 这其实是一道非常见功底的题目。为什么这么说?因为 Kafka 原生并不支持延迟消息,这是它的基因决定的——它是一个追加写的日志系统(Append-only Log&…

作者头像 李华