Приклад алгоритму, коли термін низького порядку домінує під час виконання будь-якого практичного введення?


10

Нотація Big-O приховує постійні фактори, тому існують деякі алгоритми , які не піддаються будь-якому розумному розміру вводу, оскільки коефіцієнт на n терміні настільки величезний.O(n)n

Чи є відомі алгоритми, час виконання яких але з деяким величезним терміном o ( f ( n ) ), який настільки величезний, що при розумних розмірах вводу він повністю домінує під час виконання? Я хотів би використовувати такий алгоритм, як приклад в курсі алгоритмів, оскільки це дає вагому причину, чому нотація big-O не є нічим.O(f(n))o(f(n))

Дякую!


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

Я чув, що лінійне програмування таке. Симплекс експоненціальний, але швидший, ніж поліноміальні алгоритми на практиці.
jmite

1
Я не знаю жодного алгоритму, який би відповідав вашим потребам, але я б шукав те, що має максимум лінійний час роботи, оскільки поза цим я б дуже сумнівався, що менші терміни можуть домінувати у ведучому терміні для найбільш розумних даних. Але, можливо, k-шлях об'єднання відповідає вашим потребам, коли використовується для сортування великих даних? Проблема в тому, щоб мінімізувати доступ до вторинної пам'яті, оскільки вони коштують величезної кількості часу - хоча я не зовсім впевнений, що це буде відповідним прикладом для того, що ви хочете продемонструвати, і я не думаю, що це досить просто бути ілюстративним.
Г. Бах

Відповіді:


2

Криптографія - це приклад, якщо вироджений. Наприклад, порушення AES-шифрування - це - все, що вам потрібно зробити, - це знайти потрібний ключ серед кінцевого числа, 2 128 або 2 192 або 2 256, залежно від розміру ключа (припустимо, що відомо, що достатньо простого тексту визначити ключ однозначно). Однак навіть 2 128 операцій зайняли б усі комп’ютери сьогодні (мільярд або більше, кожен робить приблизно мільярд операцій на один сценарій) більше, ніж тривалість життя Всесвіту (близько мільярда мільярдів секунд).О(1)2128219222562128


Трохи інший спосіб проілюструвати, чому big-O - це не все - зауважити, що ми іноді використовуємо інший алгоритм для невеликих розмірів вводу. Наприклад, візьміть кікспорт. При правильному виборі стрижня (що є хитрою справою!), Це . Quicksort оперує діленням і перемогою: кожен екземпляр передбачає робити багато сортування малих масивів. Для малих масивів квадратичні методи, такі як сортування вставки, працюють краще. Таким чином, для найкращої продуктивності швидкий вибір великого масиву передбачає безліч циклів сортування вставки для невеликих розмірів.О(нlgн)


Я не вважаю, що порушення шифрування є розумним прикладом тут; одне полягає в тому, що щоб проаналізувати проблему пошуку правильного ключа асимптотично, нам доведеться розглянути теоретично доступні версії Rijndael з непостійним розміром ключа, тобто розбиття ключа для клавіш розміру . В іншому випадку ми можемо так само сказати, що будь-який алгоритм, який завершується, виконує в O ( 1 ) для введення фіксованого розміру. нО(1)
Г. Бах

@ G.Bach Суть цього прикладу полягає в тому, що це нездійсненно (теорія складності асоціюється з високою складністю), навіть якщо це постійний час (з точки зору розміру шифротексту).
Жил "ТАК - перестань бути злим"

2
Я не думаю, що твій перший приклад працює. Оскільки для перевірки є лише обмежено багато варіантів, час виконання алгоритму становить , тому не існує терміна o ( 1 ) низького порядку, який би припадає на повний час виконання. О(1)о(1)
templatetypedef

1
@templatetypedef Порушення шифрування повідомлення, зашифрованого AES, є з точки зору довжини повідомлення . О(1)
Жил "ТАК - перестань бути злим"

1

Два приклади приходять на думку з області параметризованої складності та алгоритмів FPT. Це може бути не саме те, що ви шукаєте, але ось ідеться.

Розглянемо проблему з графіком, наприклад, 3-КОЛОРИНГ або HAM-CYCLE Обидві проблеми можуть бути виражені в монадійній логіці другого порядку, і тому їх можна вирішити в лінійному часі графіків з обмеженою шириною ширини. Це результат Bruno Courcelle , але отриманий алгоритм далеко не практичний.

О(p9p/2)LО(p2pL)pL


2
О(н)о(н)

0

дещо пов’язані з вашим питанням - це алгоритми, які, як відомо, теоретично мають хороші показники, але не використовуються для реальних проблем через непрактичність на менших випадках. іншими словами, як ви запитуєте, "рекламована ефективність" можлива лише для великих вкладів теоретично, але їх не можна побачити в практичних програмах. це іноді відображається в оцінках Біг-О, в інші часи не зовсім так. деякі алгоритми мають хорошу теоретичну "продуктивність", але є дуже логічно складними і ніколи не були реалізовані ким-небудь, тому "продуктивність" практичних розмірів екземплярів навіть не відома, наприклад, як з проблемою "Максимальний потік" .


Але чи недоцільні вони через те, що переважають умови низького порядку або тому, що константи в умовах високого порядку погані?
Девід Річербі

або, або їх комбінацію, важко було б виділити в кожному випадку. ефективно / практично його однаковий ефект.
vzn

-1

Це свого роду жарт, але він має серйозну сторону ...

О(нжурналн)О(н2)


1
Ні, це інакше. Quicksort корисний на практиці, оскільки не існує квадратичного терміна для типового введення, незалежно від того, наскільки великий розмір. Якщо вибір матриці поганий для компонування даних, квакіссор проявляє квадратичну поведінку навіть при невеликому введенні.
Жил "ТАК - перестань бути злим"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.