Які існують нетривіальні проблеми, коли ми знаємо, що поточний алгоритм є асимптотично оптимальним? (Для машин для твердіння)
І як це доведено?
Які існують нетривіальні проблеми, коли ми знаємо, що поточний алгоритм є асимптотично оптимальним? (Для машин для твердіння)
І як це доведено?
Відповіді:
Будь-який алгоритм, який займає лінійний час і повинен читати весь його вхід, повинен бути асимптотично оптимальним. Аналогічно, як зауважує Рафаель, оптимальним є будь-який алгоритм, час виконання якого є таким же порядком, як розмір виводу.
Якщо міра складності, яку ви розглядаєте, - це складність запиту, тобто кількість разів, коли машина повинна подивитися на вхід для вирішення певної проблеми, то існує багато проблем, для яких у нас є оптимальні алгоритми. Причиною цього є те, що нижчі межі складності запиту досягаються легше, ніж нижчі за часовою чи просторовою складністю, завдяки деяким популярним методам, включаючи метод противника .
Мінусом є, однак, що ця міра складності майже виправдано використовується при квантовій обробці інформації, оскільки забезпечує простий спосіб довести розрив між квантовою та класичною обчислювальною потужністю. Найвідоміший квантовий алгоритм у цій структурі - алгоритм Гровера . З огляду на двійкову рядок для якої існує одинарна i така, що x i = n , вам потрібно знайти i . Класично (без квантового комп'ютера) оптимальним є найтривіальніший алгоритм: вам потрібно запитувати цю рядок в середньому n / 2 рази, щоб знайти . Гровер надав квантовий алгоритм, який робить це в O ( √запити до рядка. Це також було доведено оптимальним.
Порівняльне сортування за допомогою порівняння (сортування злиття, щоб назвати одне) є оптимальним, доказ включає просто обчислення висоти дерева з n ! листя.
Припускаючи, що створено унікальну гру Ігор, Кхот, Кіндлер, Моссел та Оодоннел показали, що наблизити до максимального кроку краще NP-алгоритм Goemans та Williamson. Так що в цьому сенсі G&W є оптимальним (якщо припустити також, що ).
Деякі розподілені алгоритми можуть бути оптимальними щодо деяких умов (наприклад, частка протиборчих процесорів), але оскільки ви згадали машини Тьюрінга, я думаю, це не той тип прикладів, який ви шукаєте.
Припустимо , ви отримуєте вхід і просять вирішити , якщо RAM машина M Завершує на вході х після т кроків. За теоремою ієрархії часу оптимальним алгоритмом для вирішення цього є моделювання виконання M ( x ) для t кроків, що можна зробити за час O ( t ) .
(Примітка. Для машин Тьюрінга моделювання виконання виконує дії O ( t log t ) ; ми знаємо лише нижню межу Ω ( t ) . Отже, це не зовсім оптимально для машин Тьюрінга).
Є деякі інші проблеми, які містять версію проблеми зупинки як підзаговорку. Наприклад, для вирішення того, чи є пропозиція наслідком WS1S, потрібен час 2 ↑ ↑ O ( | θ | ), і це оптимально.
Якщо ви дозволяєте динамічні проблеми структури даних, ми знаємо деякі суперлінійні оптимальні алгоритми часу. Це в моделі зондової комірки, яка настільки ж сильна, як слово RAM, тобто це не так обмежена модель, наприклад, алгебраїчні дерева рішень.
Один із прикладів - зберігання префіксальних сум під динамічним оновленням. Почнемо з масиву чисел , а мета - зберегти структуру даних, яка дозволяє виконувати наступні операції:
Ви можете легко підтримувати обидві операції в час зі структурою даних на основі доповненого бінарного дерева з A [ i ] на листках. Патраску та Демейне показали, що це оптимально: для будь-якої структури даних існує послідовність з n доповнень та префіксів суми запитів, які повинні приймати загальний час Ω ( n log n ) .
Іншим прикладом є об'єднання пошуку : почніть з розділу на одиночні кнопки та збережіть структуру даних, яка дозволяє виконувати дві операції:
Тарджан показав, що класична роз'єднана множина лісових структур даних із об'єднанням евристики стиснення за рангом і трактом займає час на операцію, де α - обернена функція Акермана. Фредман і Сакс показали, що це оптимально: для будь-якої структури даних існує послідовність n об'єднань і пошуку операцій, які повинні зайняти час Ω ( n α ( n ) ) .
Є два дещо схожі алгоритми пошуку, які [наскільки я розумію] є оптимальними на основі певних обмежень впорядкування / розподілу введення. однак презентація алгоритмів, як правило, не підкреслює цю оптимальність.
золотий розріз пошуку для знаходження максимуму чи мінімуму (екстремуму) одномодальної функції. передбачає, що введення - це унімодальна функція. знаходить його в логарифмічному часі в середньому. наскільки я пам'ятаю, можливо, в книзі « Структура та інтерпретація комп’ютерних програм abelson & sussman» було підтверджено оптимальність .
двійковий пошук знаходить точку в логарифмічному часі в середньому в відсортованому списку, але вимагає сортування введення.
Я цитую вище вікіпедію, але у неї немає доказів того, що вони оптимальні, можливо, деякі інші посилання, які підтверджують оптимальність, можуть бути знайдені аудиторією.
Багато алгоритмів підлінійного часу мають верхні межі, що відповідають їх нижнім.