Нещодавно, розмовляючи з фізиком, я стверджував, що в моєму досвіді, коли проблема, яка наївно здається, що має тривати експоненціальний час, нетривіально виявляється в П або БПП, "загальну причину", чому відбувається зниження, зазвичай можна визначити --- і майже завжди ця причина належить до списку з десятка або менше «звичайних підозрюваних» (наприклад: динамічне програмування, лінійна алгебра ...). Однак це змусило мене задуматися: чи можемо ми насправді записати гідний перелік таких причин? Ось перша, неповна спроба однієї:
(0) Математична характеристика. Проблема має неочевидну "чисто-математичну" характеристику, яка, колись відома, робить негайним, що ви можете просто зробити вичерпний пошук списку полі (n) можливостей. Приклад: площинність графіка, для якого алгоритм O (n 6 ) випливає з теореми Куратовського.
(Як вказує "планарний" нижче, це був поганий приклад: навіть коли ви знаєте комбінаторну характеристику планарності, даючи поліноміально-часовий алгоритм для нього все ще досить нетривіально. Отже, дозвольте мені замінити тут кращий приклад: як щодо , скажімо, "з урахуванням вводу n, записаного у двійковій формі, обчисліть, скільки кольорів потрібно, щоб забарвити довільну карту, вбудовану на поверхню з n отворами". Апріорі очевидно, що це взагалі можна обчислити (або навіть скінчити!). Але є відома формула, що дає відповідь, і як тільки ви знаєте формулу, обчислити в тричлени тривіально. Тим часом, "зводиться до виключених неповнолітніх / теорія Робертсона-Сеймура", мабуть, слід додати як окрему загальну причину, чому щось може бути в П.)
У всякому разі, це саме не така ситуація, яка мене найбільше цікавить.
(1) Динамічне програмування. Проблема може бути розбита таким чином, що дає можливість рекурсивного рішення без експоненціального вибуху - часто тому, що обмеження, які необхідно задовольнити, розташовані в лінійному або іншому простому порядку. «Чисто комбінаторний»; не потрібна алгебраїчна структура. Можливо, доступність графіків (а отже, і 2SAT) є особливими випадками.
(2) Матроїди. Проблема має структуру матроїдів, що дозволяє алчному алгоритму працювати. Приклади: відповідність, мінімальне прольотове дерево.
(3) Лінійна алгебра. Проблема може бути зведена до вирішення лінійної системи, обчислення детермінанта, обчислення власних значень і т. Д. Можливо, більшість проблем, пов'язаних з "чудодійними скасуваннями", включаючи ті, що вирішуються формалізмом сірника Валіана, також підпадають під лінійно-алгебраїчний парасольку.
(4) Опуклість. Проблема може бути виражена як якась опукла оптимізація. Напівміфінітне програмування, лінійне програмування та ігри з нульовою сумою - звичайні (все частіше) особливі випадки.
(5) Тестування поліноміальної ідентичності. Проблема може бути зведена до перевірки поліномної ідентичності, так що фундаментальна теорія алгебри призводить до ефективного рандомізованого алгоритму - а в деяких випадках, як первинність, навіть доказувально-детермінованого алгоритму.
(6) Ланцюжок Маркова Монте-Карло. Проблема може бути зведена до вибірки з результату швидко змішувальної прогулянки. (Приклад: приблизно підрахунок ідеальних відповідностей.)
(7) Алгоритм Евкліда. GCD, продовження дробів ...
Різне / Не очевидно, як саме класифікувати: Стабільний шлюб, поліноміальний факторинг, проблема членства для груп перестановки, різні інші проблеми в теорії чисел та теорії груп, маломірні проблеми грат ...
Моє запитання: які найважливіші речі я залишив?
Для уточнення:
Я усвідомлюю, що жоден список не може бути повним: незалежно від кількості причин, які ви наводите, хтось зможе знайти екзотичну проблему, яка є в P, але не з будь-якої з цих причин. Частково з цієї причини мене більше цікавлять ідеї, які ставлять багато різних, здавалося б, не пов'язаних між собою проблем P або BPP, ніж ідеї, які працюють лише на одну проблему.
Я також усвідомлюю, що це суб'єктивно, як розділити речі. Наприклад, чи повинні мати матроїди бути окремим випадком динамічного програмування? Чи достатньо важлива розв'язуваність за допомогою пошуку на глибині, щоб бути її причиною, окремо від динамічного програмування? Крім того, часто одна і та ж проблема може бути в P з декількох причин, залежно від того, як ви дивитесь на неї: наприклад, пошук головного власного значення відбувається в P через лінійної алгебри, а також тому, що це проблема опуклої оптимізації.
Коротше кажучи, я не сподіваюся на "теорему класифікації" - просто на перелік, який корисно відображає те, що ми знаємо про ефективні алгоритми. І саме тому мене найбільше цікавлять методи розміщення речей у P або BPP, які мають широке застосування, але які не вписуються у вищевказаний перелік - або інші ідеї щодо вдосконалення моєї першої спроби поправитись на мою похвалу фізик.