我正在研究我的论文工作中的分支限界和最佳优先搜索,但发现网络上关于这两个概念存在很多矛盾。起初我认为分支限界只是通过剪枝高成本解决方案的分支(使用启发式),并且不优先考虑搜索(在修剪后的树的其余部分上执行简单的DFS或BFS)。然而,后来我发现许多资源也说BB对状态进行排名,并首先考虑具有更高排名的节点(一种优先搜索)。如果是这样,那么BB和最佳优先搜索之间到底有什么区别呢?
这两个概念相关(有时甚至可以将它们结合使用),但您应该专注于它们的基本差异,因为它们的名称所示:分支定界通过对变量进行分支(=测试变量的值)来全面探索搜索空间。这会创建几个子问题,例如在二进制变量上进行分支会创建一个变量=0的问题和一个变量=1的问题。然后,您可以继续递归地解决它们。技术的“边界”方面涉及估计可以在子问题中获得的解决方案的界限。如果子问题只能产生糟糕的解决方案(与先前找到的解决方案相比),则可以放心跳过搜索空间的那部分。最佳优先尝试尽快找到解决方案,首先查看搜索空间的最有趣部分(最有趣=估计)。它不会分割搜索空间,只会尝试尽快达到一个/某个解决方案。这两种方法都尝试跳过搜索空间的部分调查。它们的使用和效率取决于问题设置。最佳优先需要您指定“探索最有趣解决方案”的标准,这有时可能很难/不可能。分支定界仅在您可以对子问题进行有意义/不太宽泛的限制时才有趣。这取决于您考虑的问题...