找到找到k对的时间复杂度的下限

时间:2016-10-07 02:33:01

标签: algorithm asymptotic-complexity

我们给出了n个不同尺寸的螺栓和螺母,每个螺栓与一个螺母完全匹配。我们的目标是为每个螺栓找到匹配的螺母。螺母和螺栓太相似,无法直接比较;但是,我们可以测试任何螺母是否太大,太小或与任何螺栓尺寸相同。

证明在最坏的情况下需要使用Ω(n + k log n)螺母 - 螺栓比较来找到k个匹配对。

我完全难以理解如何做到这一点,我想出了一个3-ary决策树,因为这需要n ^ k个节点,因此给出klog(n)树的高度,但我不能找出+ n的来源。

1 个答案:

答案 0 :(得分:0)

这是一个非常宽松的答案,可能构成适当证据的基础:

假设你每次想要测试一个新螺母或一个新螺栓时都要问我(你的对手)我给你一个新螺母或一个新螺栓。在开始之前,我将螺母和螺栓分成匹配的对,然后将这对分成两个堆,每个堆的大小为n / 2。对于前n / 2步,我会从第一个堆中取出一个螺母,或者从第二个堆中取出一个螺栓,具体取决于您的要求。所以我总是可以推迟你找到任何匹配,直到你做了至少n / 2次匹配尝试,因为在我用完其中一个堆之前,你永远不会得到一个匹配的螺母和螺栓。

如果我按照尺寸标记螺栓,你的生活就不会变得更难,因为你总是可以选择忽略这些信息。现在,如果你能找到时间小于k log n的k匹配,对于所有可能的k和n> = k,那么你可以解决仅使用比较对n个数字进行排序的问题,其中数字已知为集合{ 1,2,3,...,N}。事实上,即使你有一个只适用于例如k< = 3和所有n,您仍然可以通过在剩余的(未标记的)螺母组和(标记的)螺栓之间重复找到3个匹配来进行低比较排序。因此,如果您可以找到比较少于k log n的匹配,则可以使用少于n log n的比较对已知为{1,2 ... n}的数字进行排序 - 但排序数字的通常信息理论下限仍然存在在这里举行。所以你需要至少k log n比较。

所以现在我们有一个下限max(n / 2,k log n)。我们不关心因素,所以让我们有max(n,k log n)。但是(a + b)/ 2< = max(a,b)< = a + b代表a,b> = 0所以再次忽略因素我们可以把它变成n + k log n。

相关问题