算法设计与分析基础(十五)

算法设计与分析基础(十五):回溯法与分支界限法

要求了解即可!

它对于求解问题的全部解或某些优化问题,往往是比较有效,其基本策略不同于穷举法的搜索。这种方法适用于解一些组合数相当大的问题。

回溯法

八皇后问题

在一个 88 的国际象棋棋盘上放八个皇后,要求没有两个皇后被放在同一行,同一列,或同一对角线上。

image-20211215005909566

image-20211215005957921

第一级顶点(1, X,X, X ),(2, X,X, X),(3,X,X, X ),(4, X,X, X)分别表示第一个皇后放在第一列、第二列、第三列、第四列,他们都表示棋盘上已有了一个皇后。 依次类推,第二级顶点表示棋盘上已有了两个皇后,…,树的叶结点表示四个皇后均已放在棋盘上。

image-20211215010138671

image-20211215010151015

回溯法的一般框架:

image-20211215010227749

例题

image-20211215010530686

分支界限法

分派问题

对每一种分派可估算其目标函数值的下界

根节点对应还没有进行分派, 其下界自然是: 每个人都在做最省时的工作, 而不考虑是否满足约束条件。 下界为 2+3+1+4=10

  • 对每一个节点, 计算其对应的下界。
    第一层: 考察 a 被安排做每一项工作的情况

image-20211215011110647

image-20211215011128196

image-20211215011143654

image-20211215011156098

image-20211215011205661

image-20211215011216506

分枝界限法总结

与回溯法类似,分枝界限法是用向量(x1, x2,…, xn)表示解的形式,其求解过程是相应地生成一颗状态树,树中每个分枝代表部分向量(x1, x2,…, xk, …), 解由树叶表示。

在树中每个内点上给出一个值,它表示由部分解出发导出的全部可行解的目标函数值的一个下界,从树根开始,逐步生成状态树,并从中选取具有最小界限函数值的一个子节点进行扩展,同时计算界限函数值。

重复上述过程,直到到达某片树叶(x1, x2,…, xn) ,得到一个可行解;依据可行解的值,更新活节点集合,删除没有必要再进行扩展的点;

在活节点集中, 每次选择下界值最小的节点进行扩展;当活节点集合为空时, 算法终止。此时求得的一个可行解,其目标函数值已小于所有“活”顶点上的界限函数值时,则该可行解便是最优解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值