Проблеми, які на практиці вирішуються контр-інтуїтивно?


21

Нещодавно я пережив болісний цікавий досвід неформального пояснення поняття обчислювальної складності молодому талановитому програмісту-самоучку, який ніколи раніше не брав офіційного курсу алгоритмів чи складності. Не дивно, що багато понять спочатку здавалися дивними, але мали сенс деякі приклади (PTIME, нерозбірливість, непридатність) , а інші здаються більш природними (класифікація проблеми через скорочення, час та простір як ресурси, асимптотичний аналіз) . Все йшло чудово, поки я випадково не визнав, що САТ може бути вирішена. ефективно * на практиці ... І просто так, я їх втратив. Неважливо, наскільки переконливо я намагався сперечатися з теорією, хлопець був переконаний, що це все математика штучного лайна, яку він не повинен турбувати. Добре...

¯ \ _ (ツ) _ / ¯

Ні, мене не розбило серце, і я не дуже хвилювався тим, що він думав, це не сенс у цьому питанні. Під час нашої розмови я думав про інше питання,

Скільки я насправді знаю про проблеми, які теоретично не можуть бути вирішені (суперполіноміальна часова складність), але практично вирішима (через евристику, наближення, SAT-рішення та ін.)?

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

TL; DR: Які проблеми на практиці можна вирішити контр-інтуїтивно? Чи є (оновлений) ресурс, щоб прочитати більше? Чи є у нас характеристика для них? І, нарешті, як загальне питання для обговорення, чи не варто?

РЕДАКТИКА №1: Намагаючись відповісти на моє останнє обговоренне питання щодо такої характеристики , мене познайомили з плавним аналізом алгоритмів, концепцією, яку запровадили Даніель Спілман та Шан-Хуа Тенг у [1], яка постійно інтерполює між найгіршими ситуаціями та аналіз середніх випадків алгоритмів. Це не точно описана вище характеристика, але вона фіксує ту саму концепцію, і мені це було цікаво.

[1] Спілман, Даніель А. та Шан-Хуа Тен. "Згладжений аналіз алгоритмів: чому алгоритм симплексу зазвичай займає поліном час." Журнал ОСББ (JACM) 51, вип . 3 (2004): 385-463.


6
Що ви мали на увазі, заявивши, що SAT можна ефективно вирішити на практиці? Чому ваш друг покладається на безпеку в Інтернеті? Імовірно, важких проблем на практиці немає? Міцність - одна з головних переваг багаторазової / ефективної розчинності.
Чандра Чекурі

6
Графічний ізоморфізм є природним кандидатом.
DW

2
Привіт, @ChandraChekuri, я мав на увазі те, що практично SAT-вирішувачі можуть відповідати на випадки SAT мільйонами змінних і пропозицій. Або, принаймні, саме так я вважав, що так. Я не впевнений, я розумію, що ви маєте на увазі під "безпекою в Інтернеті"? Я не сперечаюся з формалізмом, мене цікавлять проблеми, які теоретично є нерозв'язними, але для всіх практичних цілей (можливо, через гідне наближення, можливо, через особливу структуру реальних випадків тощо) " tractable ".
Костянтинос Койляріс

1
@KonstantinosKoiliaris Я думаю, що справа в тому, що безпека всіх видів криптографічних протоколів покладається на (як правило, навіть на щось набагато сильніше), і як таке дає численні приклади проблем з рутинної практики, які надзвичайно важкі для вирішення SAT ( або ми дуже сподіваємось так чи інакше). PNP
Еміль Йерабек підтримує Моніку

2
У цьому напрямку, можливо, було б добре перевірити загальну складність. Насправді виявляється, що проблема зупинки майже завжди вирішується в поліноміальний час, як це, наприклад, SAT (насправді, SAT має більш високу гарантію). Під поняттям «майже завжди» мається на увазі те, що проблема допускає алгоритм таким чином, що частка входів, на які алгоритм зупиняється (і, звичайно, виводить правильну відповідь) у поліноміальний час, переходить до 1 у міру збільшення тривалості введення.
Гільєрмо Анжеріс

Відповіді:


17
  • Високоструктуровані екземпляри SAT (навіть на мільйонах змінних) часто можна вирішити на практиці. Однак випадкові випадки SAT біля порогу задоволення з навіть кількома сотнями змінних досі залишаються відкритими (це означає, що навіть на практиці, якщо ви генеруєте таку річ, ви, можливо, ніколи не дізнаєтесь протягом життя Всесвіту, чи створена вами річ є придатною чи ні з використанням поточних розв'язувачів SAT). Вас може зацікавити це пов'язане питання та його відповіді.

  • Шукачі кліків також шокуюче добре "на практиці"

  • Програмування цілого чи змішаного цілолінійного програмування (з деякими раціональними та деякими цілими змінними) є зосередженням цілих відділів досліджень операцій, і їх часто (але не завжди) можна вирішити на практиці

  • PSPACEPSPACE

  • EXPSPACE

  • Як уже зазначалося в коментарях DW, графічний ізоморфізм в значній мірі може бути вирішений на практиці. Дуже важко нарізати сучасне програмне забезпечення GI, таке як nauty, блаженство, пікантність тощо.


Дякую Джошуа, я дарую це вам за найцікавіші / найширші запропоновані проблеми.
Костянтинос Койляріс

1
Клікери не завжди хороші на практиці. Це дійсно залежить від графіка. І ваше посилання, здається, говорить лише про випадкові графіки.
Петро Шор

Розгорнувши трохи про GI: більшість сучасних GI-рішень AFAIK, таких як згадані, використовують оптимізований підхід до індивідуалізації та уточнення (де уточнення - це уточнення кольорів, яке вже працює як квазілінійний тест GI майже для всіх графіків) , але нещодавно Нойен і Швейцер виявили експоненціальні нижчі межі цього методу і побудували (практично) важкі випадки.
Водокристал

1
@JoshuaGrochow: Так, я з цим згоден. Я просто хотів розширити питання про "контр-інтуїтивну" частину питання, оскільки ОП спеціально зазначила, що Simplex на практиці дуже добре працює, хоча експоненціальні нижні межі відомі, і у нас тут така ж ситуація.
Водокристал

1
Я просто маю досвід роботи з думкою Келлера , де графіки (правда, великі) набули багато алгоритмів пошуку кліків.
Пітер Шор

14

Система типу Hindley-Milner використовується у мовах функціонального програмування (Haskell, SML, OCaml). Алгоритм виведення типу є практично лінійним на практиці і працює надзвичайно добре, але, як відомо, завершено DEXPTIME!

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


FPL

6

Більше прикладів, переважно з мов програмування:

  1. k-CFA (k-Control Flow Analysis) є завершеним EXPTIME (Van Horn & Mairson 2008), але всебічно оптимізуючі компілятори, такі як MLton, виконують це все одно. Часи компіляції довгі, але рідко згубні.
  2. Розв’язання (динамічного) перевантаження, як правило, не завершено (Palsberg 2012). Але тоді це рідко є проблемою в реальному світі.
  3. k
  4. Рішення SMT, як правило, не є повним NP, але комерційні рішення SMT (як Z3 та CVC4) зазвичай досить ефективні. Я не працюю безпосередньо з SMT-вирішувачами, але я використовував Z3 опосередковано від Liquid Haskell та Dafny, і час перевірки здається нормальним.
  5. Проблема рішення для арифметики Пресбургера дійсно складна (Fischer & Rabin 1974), але алгоритм рішення Білла П'ю, тест Omega (Pugh 1991), працює, як правило, в поліномію часу низького порядку.

Onn


Список літератури:

[1] Девід Ван Хорн та Гаррі Г. Мейрсон. 2008. Визначення kCFA завершено для EXPTIME. У матеріалах 13-ї міжнародної конференції ACM SIGPLAN з функціонального програмування (ICFP '08). ACM, Нью-Йорк, Нью-Йорк, США, 275-282.

[2] http://web.cs.ucla.edu/~palsberg/paper/dedicated-to-kozen12.pdf

[3] М. Дж. Фішер та М.О. Рабін. 1974. СУПЕР-ЕКСПОНЕНЦІАЛЬНА СКЛАДНІСТЬ АРИТМЕТИКИ ПРЕСБУРГЕРА. Технічний звіт Массачусетський технологічний інститут, Кембридж, Массачусетс, США.

[4] Вільям П’ю. 1991. Тест Omega: швидкий і практичний цілочисельний алгоритм програмування для аналізу залежності. У матеріалах конференції ACM / IEEE 1991 року з питань суперкомп'ютерів (Supercomputing '91). ACM, Нью-Йорк, Нью-Йорк, США, 4-13.


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