【发布时间】:2010-12-08 06:34:40
【问题描述】:
我正在解决这个问题:
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 完全问题,我可能最终会这样做,但仍然......这让我很烦恼。
【问题讨论】:
-
如果您告诉我们教科书是什么,可能会有所帮助。
-
有趣的是,cseweb.ucsd.edu/classes/wi08/cse101/hw/hw7soln.pdf 有一个相当清晰的解释。 (这也解释了为什么二进制搜索不会产生伪多项式时间算法)。
-
@j_random_hacker:我相信术语“最小边缘的分辨率”实际上是“边缘权重表示的分辨率”(否则,关于用 logK 位表示 K 的点不有意义)。如果权重是实数,那么二分搜索可能不起作用,除非 TSP 实际搜索长度为
-
即使是浮点数也有最小(非零)分辨率(对应于最小的非规范化数字),并且在一些最小分辨率下,参数仍然有效(步数只是增加一个常数因素——基本上对数取不同的底数),所以它仍然是一种可以接受的方法。请注意,该参数不假定特定的最大边权重(它只是假定有限最大边权重)。
-
啊!这就说得通了。所以这是因为使用浮点表示会导致长度 n 的最大可表示数的形式为 k^(k^n) 而不是 k^n。好的同意。而我 3 cmets 前的评论是错误的。这假设总和的表示精度高于边缘权重。如果我们还必须使用相同的表示来表示总和,手动波动,感觉表示空间被平均分割的二进制搜索的变体仍然可以工作。
标签: algorithm binary-search traveling-salesman