Обмежений простір для алгоритму вибору?


11

Існує добре відомий алгоритм вибору найгіршим випадком для пошуку k 'го найбільшого елемента в масиві цілих чисел. Він використовує підхід середньої медіани, щоб знайти достатньо хороший шарнір, розділяє вхідний масив на місце, а потім рекурсивно продовжує пошук його k -го найбільшого елемента.O(n) kk

Що робити, якщо нам не дозволяють торкатися вхідного масиву, скільки зайвого місця знадобиться для того, щоб знайти -й найбільший елемент за O ( n ) час? Чи можемо ми знайти k -й найбільший елемент в O ( 1 ) додаткового простору і все-таки зберегти час виконання O ( n ) ? Наприклад, пошук максимального або мінімального елемента займає O ( n ) час і O ( 1 ) простір. kO(n)kO(1)O(n)O(n)O(1)

Інтуїтивно я не можу уявити, що ми могли б зробити краще, ніж простір, але чи є це докази?O(n)

Чи може хтось вказати на посилання або придумати аргумент, чому елемент 'вимагає, щоб O ( n ) простір був знайдений в О ( n ) час?n/2O(n)O(n)


Відповіді:


13

Це відкрита проблема, якщо ви можете зробити вибір з часом та O ( 1 ) додатковими комірками пам'яті, не змінюючи вхід (див. Тут ). Але ви можете підійти досить близько до цього.O(n)O(1)

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

O(n)pp

pA(k)ε=1/kA(k)A(k1)A(1)алгоритм. Правильний розмір блоку (і виконання математики) дає вам вимоги до часу та простору, як зазначено вище.

Btw, алгоритми, які ви шукаєте, нещодавно були названі алгоритмами постійного робочого простору .

Я не знаю жодної нижньої межі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.