Branch and Bound - 存储啥

Posted

技术标签:

【中文标题】Branch and Bound - 存储啥【英文标题】:Branch and Bound - what to storeBranch and Bound - 存储什么 【发布时间】:2012-12-14 23:20:55 【问题描述】:

我读过不止一本书(包括 Wolsey),在实现分支定界算法时,不需要存储整个树,只需要存储活动节点的列表(据我所知,叶节点)。

问题是,如果我没有每个祖先的界限,我无法理解如何在分支后计算出新界限。

我们将不胜感激。

【问题讨论】:

【参考方案1】:

好的,让我们举个例子。假设您正在实现一个相当幼稚的整数程序求解器,它试图通过求解其 LP 松弛来求解二进制整数程序,如果它没有得到整数解,则在某个变量上分支。假设您有一个最大化问题。

让我们考虑一下恰好在一个分支之后会发生什么。你解决了根子问题,假设它给你一个目标值为 10 的分数解。然后你在一个变量上分支,给你一个最优目标值为 9 的左子问题和一个最优目标值为 8 的右子问题。

我们从根子问题中得到了 10 的全局边界。我们还知道每个积分解都存在于左子问题或右子问题中,并且我们知道左子问题没有优于 9 的解,右子问题没有优于 8 的子问题。那么没有优于 9 的解到根子问题,即使根 LP 松弛不足以告诉我们这一点。

一般来说,您的最佳全局界限是任何活动子问题的最差界限。深思熟虑的子问题是无关紧要的,因为它们不能包含比您的现任者具有更好的客观价值的可行解决方案。已分支的子问题无关紧要,因为它们的边界应该由其子问题中最弱的边界支配。

【讨论】:

以上是关于Branch and Bound - 存储啥的主要内容,如果未能解决你的问题,请参考以下文章

分支界定( BRANCH-AND-BOUND)

分支界定法 branch-and-bound 分析与实现)(转载)

有啥方法可以将所有 git 分支变成存储库的文件夹?

Git配置文件中的fetch和branch有啥区别

Subversion 存储库布局,为啥? [复制]

Firebase 存储中的“getBytes()”和“getStream()”方法有啥区别?