回溯和分支算法

状态空间图

"图"------状态空间图

  • 例子:农夫过河问题------"图"=状态+操作
  • 例子:n后问题、0-1背包问题、货郎问题(TSP)

用向量表示解,"图"由解向量扩张得到的解空间树。 ------三种图:n叉树、子集树、排序树

剪枝 不满住条件的进行裁剪

优化 剪枝! 回溯:DFS+剪枝;分支限界:BFS+剪枝

实例

  • 0-1背包问题的一个实例

    • 给定n=3种物品和一背包。物品W=<16,15,15>,其价值为V=<45,25,25>, 背包的容量为B=30。问应如何选择装入背包的物品,使得装入背包中物品的 总价值最大?


每一层代表第几件物品装不装,来进行剪纸

  • 货郎问题(TSP)

    • 某售货员要到若干城市去推销商品,一直各城市之间的路程,他要选定一 条从驻地出发,经过每个城市一遍,最后回到住地的路线。目标是使总的 路程最短。
      * 解释:先1 2 3 4 得到BestV = 14 然后在选完2的时候可以选4 但其值加起来大于14 直接舍弃,同理1,3也一样
    • 可以用对称性来做
  • 回溯法小结

    • 1.针对所给问题,定义问题的状态空间图
    • 2.深度优先搜索,并用剪枝策略避免无效搜索

​ ------剪枝策略包括约束函数和限界函数。

​ ------对背包问题,左孩子结点扩张需要检查约束函数,右孩子扩张需要检 查限界函数

➢分支限界

  • 以0-1背包问题例
  • 广度优先,注意剪枝策略

步骤总结

  • 1.针对所给问题,定义问题的状态空间图
  • 2.广度优先搜索,并用剪枝策略避免无效搜索 ------扩展结点,一次性生成她的所有孩子结点。

------需要判断孩子结点是舍弃还是保留,舍弃不可行、不能能最优的孩子 结点,其余的结点进入队列中。这样可以避免不必要的搜索。 ------剪枝策略包括约束函数和限界函数

回溯与分支限界

  • 适用条件------多米诺性质 *
    • 必要条件:多米诺性质
      * 理解:**p(x1,x2,x3,...xn)满足>10 即p(x1,x2,x3,...xn-1)也满足>10 **
  • 主要步骤及递归和迭代的实现
  • 一种效率分析方法------Monte Calo方法
  • 剪枝的进一步细化------以0-1背包问题为例

主要步骤及递归和迭代的实现


  • 子集树

  • 排列树

    ➢ 0-1背包问题的一个实例

  • 给定n种物品的重量价值和一背包,背包的容量为B,每种物品只能装入一次。

  • 问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

  • 记录:已有重量(约束)、已有价值(目标、界)

  • 现在的要点是,继续优化剪枝策略。

  • 还有没有其他的?

  • 引入界函数和代价函数。

➢ 界函数

  • 代表当时已经得到的可行解的目标函数的最大值
  • 界的设定初值可以设为 0
  • 可行解的目标函数值大于当时的界进行更新

➢ 代价函数

  • 函数值以该结点为根的搜索树中的所有可行解的目标函数值的上界
  • 父结点的代价不小于子结点的代价

➢ 搜索中停止分支的依据

  • 不满足约束条件或者其代价函数小于当时的界


  • 已有价值==已有界
  • 代价函数 === 可能的最大的已有价值 代价函数 得变

典型例子

  • 装载问题
    * 实例
  • 图的m着色问题
  • 背包问题
  • 最大团问题
  • 货郎问题(TSP)
  • 圆排列问题
  • 连续邮资问题

明天更新这些问题的解法和思路

相关推荐
渣渣苏6 分钟前
硬核拆解 HNSW:亿级向量如何实现毫秒级召回?(上篇)
人工智能·算法·支持向量机·ai·向量数据库·hnsw·智能体
如竟没有火炬6 分钟前
字符串相乘——int数组转字符串
开发语言·数据结构·python·算法·leetcode·深度优先
吃好睡好便好9 分钟前
在Matlab中绘制三维等高线图
开发语言·python·学习·算法·matlab·信息可视化
项目申报小狂人19 分钟前
一种使用双向长短时记忆网络结合鲸鱼优化算法的类火星矿物元素精确定量分析模型
人工智能·算法·lstm
wangjialelele24 分钟前
【SystemV】基于建造者模式的信号量
linux·c语言·c++·算法·建造者模式
Aaron15881 小时前
RFSOC+VU13P/VU9P+GPU多通道同步一体化解决方案
人工智能·嵌入式硬件·算法·matlab·fpga开发·硬件架构·基带工程
淡海水2 小时前
ComfyUI全面掌握-知识点详解——基础示例:文生图与图生图实操(参数+案例)
大数据·人工智能·算法·comfyui
05候补工程师2 小时前
【硬核干货】用“算法”思维袭英语新题型:集合逆清晰除与降维打击解题法
经验分享·笔记·考研·算法·学习方法
刀法如飞2 小时前
Palantir Ontology 数据结构分析,与ER/OOP/DDD有什么区别?
人工智能·算法·架构
白藏y2 小时前
【数据结构】简单选择排序
数据结构·算法·排序算法