Чому більші розміри вводу означають складніші випадки?


12

Нижче, припустимо, ми працюємо з нескінченною стрічковою машиною Тюрінга.

Коли я пояснював комусь поняття часової складності та чому його вимірюють відносно вхідного розміру примірника, я натрапив на таке твердження:

[..] Наприклад, природно, що вам потрібно буде більше кроків для множення двох цілих чисел на 100000 біт, ніж, скажімо, множення двох цілих чисел на 3 біта.

Претензія переконлива, але якось махає руками. У всіх алгоритмах, з якими я стикався, чим більший розмір вводу, тим більше кроків вам потрібно. Точніше кажучи, часова складність є монотонно зростаючою функцією вхідного розміру.

Чи буває так, що часова складність - це завжди зростаюча функція в розмірі введення? Якщо так, то чому так? Чи є докази тому, що не махає руками?


"Прямо пропорційний" має специфічне математичне значення, яке означає, по суті, лінійний час. Іншими словами, якщо ваш вхід має розмір , якщо час прямо пропорційний, алгоритм працює в time . Я думаю, це не те, що ви маєте на увазі, оскільки багато алгоритмів не працюють в лінійний час, тобто сортування. Чи можете ви пояснити далі? ncn
СамМ

Отже, ви запитуєте про алгоритм, який працює в час? означає, що алгоритм працює в один і той же час незалежно від розміру вводу, означає, що він працює швидше, коли вхід збільшується. Я не можу придумати той, який працює в цей час у верхній частині моєї голови, але позначення є досить поширеними, оскільки алгоритм часто запускається у щось на кшталт часу - в іншому слова, це займає час , і є деякі інші терміни, які зменшуються, коли вхід стає більшим. o(1)O(1)o(1)O(n2)+o(1)O(n2)
СамМ

Хороше питання. Як щодо протиприкладу обчислення простих коефіцієнтів для деякого великого (це лише зростаюча функція для )? @ Зауважте, що зростаюча функція говорить про те, що час повинен зменшуватися в деяку точку вздовж реальної прямої (тобтоc/ncncf(b)<f(a),a<b ).
Кейсі Кубалл

@Darthfett Боюсь, я не дотримуюсь цього. Не всі функції, що збільшуються, зменшуються в якийсь момент по реальній лінії.
СамМ

@ Дженіфер Так, я розумію, це має сенс. Я рекомендую використовувати термін оскільки він має значення, яке ви шукаєте. І я хотів би переосмислити, що пряма пропорційність передбачає лінійність; Я бачу, на що ви стикаєтесь, але це може бентежити тих, хто читає питання вперше. o(1)
СамМ

Відповіді:


13

Чи буває так, що часова складність - це завжди зростаюча функція в розмірі введення? Якщо так, то чому так?

Ні. Розглянемо машину Тюрінга, яка зупиняється після кроків, коли розмір вводу n парний, і зупиняється після n 2 кроків, коли n непарних.nnn2n

Якщо ви маєте на увазі складність проблеми , відповідь все одно - ні. Складність тестування первинності набагато менша для парних чисел, ніж для непарних чисел.


4

Чи буває так, що часова складність - це завжди зростаюча функція в розмірі введення? Якщо так, то чому так? Чи є докази тому, що не махає руками?

Нехай позначає вхідний розмір. Щоб прочитати весь вхід, машині Turing вже потрібно n кроків. Отже, якщо ви припускаєте, що алгоритм повинен зчитувати його весь вхід (або n / c для деякої постійної с ), ви завжди закінчите принаймні лінійний час виконання.nnn/cc


Проблема з визначенням алгоритмів з "монотонно зменшуваною функцією часу виконання" полягає в тому, що вам потрібно якось визначити час виконання для . Ви повинні встановити його на деяке кінцеве значення. Але існують нескінченно можливі значення для n > 1 , тож ви закінчуєте функцію, яка є постійною для нескінченної кількості значень.n=1n>1


Можливо, для вас цікавлять підлінійні алгоритми , які не читають весь вхід. Див., Наприклад, http://www.dcs.warwick.ac.uk/~czumaj/PUBLICATIONS/DRAFTS/Sublinear-time-Survey-BEATCS.pdf .


O(logn)o(1)

@Sam: Вибачте, я не побачив ваш коментар до мого редагування (додавання підлінійних алгоритмів).
Крістофер

зовсім навпаки; Я не бачив вашої редакції, перш ніж додавати коментар. Я б його видалив, але другий тайм все ще застосовується, і додаткове посилання не може зашкодити OP
SamM

1
f(x)=0

1

(N,)Ω(1)

Тим НЕ менше, в середньому час автономної роботи може містити тих, хто вагається компоненти, наприклад , сортування злиттям .


Я не бачу, як ця відповідь пов'язана з питанням.
А.Шульц

@ A.Schulz Це дає доказ головного питання "Чи буває так, що часова складність - це завжди зростаюча функція в розмірі введення?", Читаючи "збільшення" як "не зменшується", тобто не обов'язково строго збільшується.
Рафаель

1

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