约束空间的选择算法?


11

有一种众所周知的最坏情况选择算法,可以找到整数数组中的第k个最大元素。它使用中位数中位数方法找到足够好的枢轴,将输入数组划分为适当的位置,然后递归继续搜索第k个最大元素。O(n) kk

如果不允许我们触摸输入数组,那么要找到O n 时间中的第个最大元素,需要多少额外空间呢?我们能否在O 1 )的额外空间中找到第k个最大元素,并且仍然保持运行时O n ?例如,查找最大或最小元素需要O n 时间和O 1 空间。 kO(n)kO(1)O(n)O(n)O(1)

凭直觉,我无法想象我们可以做得比空间更好,但是有证据吗?O(n)

可有人点到基准或拿出一个说法,为什么 “个元素将需要Ø ñ 空间中找到Ø ñ 的时间?n/2O(n)O(n)


2
我不是专家,但是这些论文可能对您有所帮助:基于比较的时空下限用于选择时空权衡以及程序模型中的一阶问题
Vor 2012年

Answers:


13

如果您可以选择时间和O 1 )个额外的存储单元而不更改输入(请参见此处),则是一个开放的问题。但是您可以非常接近此。O(n)O(1)

O(n1+ε)O(1/ε)ε>0

O(n)pp

pA(k)ε=1/kA(k)A(k1)A(1)算法。正确的块大小(并进行数学计算)可为您提供如上所述的运行时间和空间要求。

顺便说一句,您正在寻找的算法最近被称为恒定工作空间算法

我不知道任何下限。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.