在解决旅行商问题时,分支定界算法如何比蛮力算法更快?

How is the branch and bound algorithm faster than the brute force algorithm when solving the Traveling Salesman Problem?

我了解分支限界算法如何解决旅行商问题,但我无法理解该算法为何比蛮力算法更快。在我看来,你最终会走完所有的路。有人可以举个例子,其中 B&B 算法比暴力破解所有路径更快吗?

假设我们有以下欧几里德 TSP 实例:

0                                                       7
1                                                       6
2                                                       5
3                                                       4

每个数字都是一个顶点,所有节点之间的线段就是边(未画出)。

蛮力方法会检查所有 8 个! = 40320 条可能的路径。

另一方面,分支定界算法可能从路径0→1→2→3→4→5→6→7开始,恰好是最优的,并过滤掉所有其他通过多次在左侧节点和右侧节点之间交替开始的路径。例如,当它考虑部分路径 0→4→1 时,它会发现该前缀的长度已经超过了目前找到的最短路径的长度,因此无需下降并检查以 0→ 开头的每条路径4→1个。仅该前缀就过滤掉了 5 个! = 120 条单独的路径,但是有 96 个这样的交替前缀,累计过滤掉 11520 个可能的解决方案,或解决方案的 29% space.