我正在解决这个问题:
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完全的另一个问题,我可能最终会这样做,但仍然......这让我感到烦恼。
答案 0 :(得分:3)
假设您有一些下限l(例如0)和上限u(例如所有边权重的总和)。首先,尝试找到总成本&lt; =(l + u)/ 2的解决方案。如果您成功,请再次尝试较低的值:(3l + u)/ 4;如果没有,请尝试更高的值:(l + 3u)/ 4.
我称之为二分法(Wikipedia)而不是二分搜索,但这个想法是一样的。我们想在某个范围内搜索最佳值,所以我们从中间开始,如果我们太低则向上移动,如果我们太高则向下移动。