Потужні алгоритми занадто складні для реалізації


67

Які алгоритми законної корисності просто занадто складні для реалізації?

Дозвольте мені зрозуміти: я не шукаю таких алгоритмів, як поточний асимптотичний алгоритм множення оптимальної матриці (Coppersmith-Winograd), який розумно реалізовувати, але має константу, яка робить його марним на практиці. Я шукаю алгоритми, які, правдоподібно, можуть мати практичне значення, але їх настільки важко кодувати, що вони ніколи не були реалізовані, реалізовані лише в надзвичайно штучних налаштуваннях або реалізовані лише для надзвичайно спеціальних додатків.

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


1
що робить це CW, оскільки це може бути довгий список.
Суреш Венкат

4
Чи є показник "майже неможливий для реалізації"? Чи існує теорія, яка її визначає?
Ritwik Bose

@Mechko, можливо, нижня межа розміру найменшої машини Тьюрінга, яка видає опис машини Тьюрінга, яка є реалізацією алгоритму. :)
Раду ГРИГо

@Radu GRIGЦе це прийнята метрика чи та, яку слід розробити? Я припускаю, що (поки що) існує проста, нерухома лінія, яка визначає "мех, не варто" ...: D
Ritwik Bose

4
Мене цікавить пропозиція про те, що Coppersmith-Winograd розумно реалізувати. Хто-небудь бачив реалізацію, записану навіть у псевдо-коді високого рівня, і хтось коли-небудь оцінював константи?
Рафаель

Відповіді:


33

Шазель дав лінійний алгоритм часу для тріангуляції простого многокутника . Скіена писав (с.575, Посібник з дизайну алгоритму), що "достатньо безнадійної реалізації, що вона більше кваліфікується як доказ існування"


3
Чи алгоритм має розумні константи?
jbapple

Це єдиний відомий лінійний алгоритм часу для проблеми?
Томас Ейл

2
@ThomasAhle Я вважаю, що це єдиний відомий детермінований алгоритм лінійного часу. Амато, Гудрич та Рамос мають більш простий рандомізований: cs.princeton.edu/courses/archive/fall05/cos528/handouts/…
Ніколов

Наскільки мені відомо, лінійний алгоритм триангуляції багатокутника Chazelle, наскільки мені відомо, ніколи не був реалізований і, ймовірно, ніколи не буде через його складності, а також тому, що постійні великі, тому він не зможе конкурувати з альтернативами на практиці. Хоча великі теоретичні досягнення. Ральф Боланд
Ральф Боланд

Я ще раз запитую: чи алгоритм має розумні константи?
користувач1271772

29

Алгоритм Ріша для обчислення елементарних антидеривативів. За даними Вікіпедії, не відомо жодного програмного пакета, який би реалізував повний алгоритм через його складність.


3
У Вікіпедії також вказується, що це не алгоритм, а напівалгоритм, оскільки для вирішення постійної проблеми потрібна евристика.
sclv

Що таке евристика? Чи можете ви надати якесь посилання, щоб прочитати більше про нього?
зигімантус

22

Будь-який алгоритм, який використовує результати Робертсона-Сеймура, дозволяє зробити висновок про "політаймічний" алгоритм для речей, що включають графіки, що виключають фіксовану неповнолітню, і задає проблеми. Постійна, прихована в їх результаті, є "галактичною".


3
Це теж важко здійснити чи просто є величезна константа?
Лев Рейзін

5
Так, це не схоже на хороший приклад. Якщо я правильно розумію, питання стосується алгоритмів, які можуть бути практичними (отже, ймовірно, «маленькими» константами), але занадто складними для реалізації. Звичайно, все питання відкрите для різних інтерпретацій :-)
Aryabhata

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

2
Наприклад, нам навіть не відомий список виключених неповнолітніх для графіків, вбудованих у тору.
Деррік Столі

17
Проблема тут здається глибшою: не існує відомого ефективного способу формування списку неповнолітніх, тому це насправді взагалі не дає алгоритму. Більшість мінорних закритих властивостей дають нескінченний список виключених неповнолітніх, якщо один безпосередньо переводить логічний вираз. Теорема Робертсона-Сеймура (концепція Вагнера) говорить нам про те, що всередині цього нескінченного списку ховається кінцевий список виключених неповнолітніх, але теорема не дає абсолютно ніякої допомоги в тому, щоб насправді їх знайти. Тому Робертсон-Сеймур зазвичай призводить до чистого доказу існування.
Андрас Саламон

16

Дан Віллард "Алгоритм контролю щільності для вставки та видалення в послідовно впорядкованому файлі в хороший гірший час" описує алгоритм збереження впорядкованого набору в масиві розміром зі вставкою та видаленням в найгірший час, де - розмір сторінки.O(n)O(log2nB)B

Документ протяжністю 55 сторінок, а його висновок зазначає кілька вдосконалень констант, які автор не описує з міркувань простору. Це змушує мене підозрювати, що, можливо, константи не є настільки галактичними, і що ця структура даних була б "законною корисністю", тим більше, що вона цитується багато разів.


12

Алгоритм уніфікації лінійного часу вищого порядку Qian ніколи не був реалізований через його складність AFAIK.


На щастя, для цього все ще є практичні алгоритми. У посібнику з автоматизованих міркувань сказано, що це можна зробити в політи (прямо поруч, де цитується алгоритм Циана), тому це досить приголомшливо.
Джейк

11

Алгоритм лінійного часу, щоб перевірити, чи можна вбудувати графік у нерухому поверхню.

Кен-Ічі Каварабаяші, Божан Мохар, Брюс А. Рід: Простіший лінійний алгоритм часу для вбудовування графіків у довільну поверхню та рід графіків обмеженої ширини дерева. FOCS 2008: 771-780.

Божан Мохар: лінійний алгоритм часу для вбудовування графіків у довільну поверхню. SIAM J. Дискретна математика. 12 (1): 6-26 (1999)


1
Це навряд чи матиме практичну цінність, навіть якщо воно буде здійснено через велику експоненціальну (sic) залежність від роду.
Jeffε

8

Я не впевнений, наскільки це може бути корисним на практиці (хоча я думаю про згортання білка та порівняння, а також прогнозування вторинної структури РНК), але Вольфганг Хакен дав перший алгоритм багаточленного часу для визначення того, чи вузол є проста петля ( Theorie der Normalflächen. Acta Math. 105, 1961, с. 245--375). Як я пам’ятаю, це все ще надто складно, щоб його реалізувати всі ці десятиліття пізніше.

Якщо вірити Вікіпедії, пізніше було надано кілька інших алгоритмів, і "Розуміння складності цих алгоритмів - це активне поле вивчення".


4
Хакен дав перший алгоритм, але він не працює в поліноміальний час; насправді не відомо алгоритм багаторазового часу (або результат твердості NP). Останні роботи зменшили тривіальність вузлів (за допомогою нормальної поверхні Хакена) до цілого програмування, що зазвичай швидко вирішити на практиці.
Jeffε

3

Розкладання дерев і, можливо, купи Фібоначчі .


14
Купи Фібоначчі, безумовно, не надто складні для реалізації; вони були реалізовані та протестовані. Проблема з ними полягає в тому, що їх практичні показники не настільки хороші, як деякі інші купи, завдяки великим постійним факторам їхнього часу роботи.
Девід Еппштейн

1
Я написав пакет для пошуку розкладання дерев, і не думаю, що це важко здійснити yaroslavvb.blogspot.com/2011/01/building-junction-trees.html
Ярослав Булатов,

2
Мій код - це лише евристична декомпозиція дерев, а не оптимальна, як підходи до розв'язання гілок і динамічного програмування ... Я здогадуюсь, що ви мали на увазі "Лінійний алгоритм часу Бодлендера"? Я не бачив жодних реалізацій цього
Ярослав Булатов

4
Алгоритм лінійного часу Bodlaender використовує алгоритм динамічного програмування з більш ранньої роботі в якості підпрограми: що алгоритм обчислює оптимальний treedecomposition в чому - щось на зразок час, коли дан наближений-treedecomposition ширини k як вхід. Я думаю, що я пам'ятаю, що одного разу Ганс Бодлендер сказав мені, що вони реалізували цей алгоритм динамічного програмування, який використовується як підпрограма, але він був занадто повільним для k = 3. Динамічне програмування є основною частиною алгоритму лінійного часу, тому алгоритм Бодлендера не надто важкий для реалізації, просто занадто повільний. 2O(k3)O(n)
Барт Янсен

3
Я думаю, що це найкращі зусилля щодо впровадження: hein.roehrig.name/dipl
Дієго де Естрада

1

Ідеальна побудова хешу ( https://en.wikipedia.org/wiki/Perfect_hash_function#Construction ) застосовуватиметься до будь-якого випадку використання зі статичними або нечасто змінюються ключами (наприклад, доменні імена верхнього рівня на маршрутизаторах, ключові слова в компіляторах або імена функцій у стандартних бібліотеках), але останній раз, коли я подивився, я не зміг знайти жодної реалізації.

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

Оптимальний алгоритм для сегмента лінії перетину з Chazelle і Edelsbrunner знаходить все перетину відрізків , в час, але є складним. CGAL - це складна бібліотека алгоритмів геометрії, але реалізує простіший алгоритм, який є .n O ( n log n + k ) O ( ( n + k ) log n )knO(nlogn+k)O((n+k)logn)


1
Я відмовляюся вірити, що конструкція FKS занадто складна для здійснення. Це насправді досить прямо. Можливо, не практичний, але, звичайно, не надто складний для реалізації.
Сашо Ніколов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.