寻找旅行商解决方案的最佳成本

时间:2010-12-08 06:34:40

标签: algorithm binary-search traveling-salesman

我正在解决这个问题:

TSP:
Input: A matrix of distances; a budget b
Output: A tour which passes through all the cities and has length <= b, 
if such a tour exists.

TSP-OPT
Input: A matrix of distances
Output: The shortest tour which passes through all the cities.

表明如果TSP可以在多项式时间内求解,那么TSP-OPT也可以解决。

现在,首先想到的是,如果我知道最佳解决方案的成本,我可以将b设置为那个和瞧。而且,你不知道吗,在我的书的其他地方,它包含了这个问题的提示:

  

我们如何找到最优成本?简单:通过二分搜索。

我想我可能在这里误解了一些非常糟糕的事情。二进制搜索旨在查找已排序列表中给定项目的位置。这究竟能帮我找到最优的成本吗?我真的很困惑。不幸的是,作者没有进一步阐述。

我可能想到的另一个解决这个问题的方法是证明它们都会减少到NP完全的另一个问题,我可能最终会这样做,但仍然......这让我感到烦恼。

1 个答案:

答案 0 :(得分:3)

假设您有一些下限l(例如0)和上限u(例如所有边权重的总和)。首先,尝试找到总成本&lt; =(l + u)/ 2的解决方案。如果您成功,请再次尝试较低的值:(3l + u)/ 4;如果没有,请尝试更高的值:(l + 3u)/ 4.

我称之为二分法(Wikipedia)而不是二分搜索,但这个想法是一样的。我们想在某个范围内搜索最佳值,所以我们从中间开始,如果我们太低则向上移动,如果我们太高则向下移动。