缺少元素问题的时空权衡
这是一个众所周知的问题。 给定正整数数组A[1…n]A[1…n]A[1\dots n],输出不在数组中的最小正整数。 该问题可以在空间和时间中解决:读取数组,在空间中跟踪是否发生,扫描最小的元素。O(n)O(n)O(n)O(n)O(n)O(n)1,2,…,n+11,2,…,n+11,2,\dots,n+1 我注意到您可以为时间交换空间。如果仅具有内存,则可以进行轮操作,并获得时间。在特殊情况下,显然存在恒定空间二次时间算法。O(nk)O(nk)O(\frac{n}{k})kkkO(kn)O(kn)O(k n) 我的问题是: 这是最佳的折衷方案,即吗?一般来说,如何证明这种界限?time⋅space=Ω(n2)time⋅space=Ω(n2)\operatorname{time} \cdot \operatorname{space} = \Omega(n^2) 假设RAM模型具有有限算法,并且可以随机访问O(1)中的数组。 这个问题的启示:在单带模型中回文的时空折衷(例如,请参见此处)。