Як я будую скорочення між проблемами, щоб довести, що проблема є NP-повною?


27

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


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

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

Відповіді:


45

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

По-перше, якщо ви просто робите домашнє завдання, ви повинні вирішити, яку NP-важку проблему слід звести до вашої проблеми . Це багато в чому питання "запаху". Якщо число 3 з’являється де-небудь у заяві проблеми, спробуйте зменшити його з або або . (Так, я серйозно.) Якщо ваша проблема пов'язана з пошуком оптимальної послідовності, перестановки або шляху, спробуйте зменшити значення або . Якщо ваша проблема вимагає найменшого підмножини з певним властивістю, спробуйте ; якщо він запитує найбільшу підмножину з певним властивістю, спробуйте3 C o l o r 3 P a r t i t i o n H a m i l t o n i a n C y c l e H a m i l t o n i a n P a t h C l i q u e I n d e3SAT3Color3PartitionHamiltonianCycleHamiltonianPathCliqueIndependentSet. Якщо ваша проблема пов'язана з тим, щоб зробити щось у площині, спробуйте або . І так далі. Якщо ваша проблема не «пахне» як що-небудь, або , мабуть, найкраща ставка.P l a n a r T S P 3 S A T C i r c u i t S A TPlanarCircuitSATPlanarTSP3SATCircuitSAT

Очевидно, що вам потрібно вже точно знати, як визначені всі ці проблеми , і чим простіше проблема, яку ви зменшуєте, тим краще. Тому настільки ж крутим, як результат може виглядати в кінцевому підсумку, я не рекомендую скорочувати з або або або .MinesweeperTetrisOneCheckersMoveSuperMarioBros

По-друге, фактичне скорочення. Щоб зменшити проблему X (ту, яку ви знаєте, є важкою для NP) до проблеми Y (той, який ви намагаєтеся довести, є NP-жорстким, вам потрібно описати алгоритм, який перетворює довільний екземпляр X в юридичний екземпляр Y Алгоритм скорочення повинен робити щось конкретне з кожною "особливістю" X-екземпляра; частина виводу для кожної "функції" зазвичай називається гаджетом .

Але в чому особливість? Це залежить від проблеми X. Наприклад:

  • Для перетворення примірника вам знадобиться гаджет для кожної змінної та для кожного пункту у формулі введення. Кожен гаджет змінної повинен мати два "стану", які відповідають "істинному" та "хибному". Кожен гаджет пункту також повинен мати декілька "станів", кожне з яких якимось чином змушує принаймні одного з буквальних даних цього пункту бути істинним. (Стани не є частиною виводу алгоритму скорочення.)3SAT

  • Щоб перетворити екземпляр , вам знадобиться гаджет для кожної вершини та кожного краю вхідного графіка, а також інший гаджет для визначення трьох кольорів.3Color

  • Щоб перетворити екземпляр , вам знадобиться гаджет для кожного вводу, для кожного проводу та для кожного входу в ланцюзі вводу.PlanarCircuitSat

Конкретний вид гаджет залежить від завдання Y, той , який ви відновлюють до . Наприклад, якщо ви зводиться до проблеми щодо графіків, вашими гаджетами стануть невеликі підграграфи; дивіться статтю у Вікіпедії. Якщо ви зводиться до проблеми щодо планування, кожен гаджет буде набором завдань, які планується запланувати. Якщо ви зводиться до проблеми з Маріо , кожен гаджет буде набором блоків та цеглин та Koopas.

Це може заплутатися, якщо обидві проблеми стосуються одного і того ж об’єкта. Наприклад, якщо і X, і Y є проблемами щодо графіків, ваш алгоритм перетворить один графік (екземпляр X) в інший графік (екземпляр Y). Вибирайте нотацію розумно, щоб ви не плутали ці два графіки. Я також настійно рекомендую використовувати кілька кольорів чорнила.

Нарешті, ваш алгоритм зменшення повинен задовольняти трьом властивостям:

  • Він працює в поліном час. (Зазвичай це легко.)

  • Якщо вашому алгоритму скорочення надається позитивний екземпляр X як вхід, він створює позитивний екземпляр Y як вихід.

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

Тут є важлива тонкість. Ваш алгоритм скорочення працює лише в одному напрямку, від екземплярів X до екземплярів Y, але для доведення правильності алгоритму потрібно міркувати про перетворення в обох напрямках. Ви також повинні пам’ятати, що ваш алгоритм скорочення не може визначити, чи є даний екземпляр X позитивним чи негативним, що вимагало б вирішення проблеми NP-hard у поліноміальний час!

Ось що . Як тільки приходить з практикою.


5
Для скорочень від (і взагалі проблем, що мають подібну "локальну / глобальну структуру"), може бути гарною ідеєю спробувати зробити це спочатку для одного екземпляра пункту . Це може дати вам уявлення про те, який гаджет потрібно використовувати для пунктів. Виявивши гаджет для пункту, ваше зменшення покладе один із цих гаджетів для кожного пункту, а потім якимось чином виконає глобальну умову (тобто значення істинності для виникнення змінної, що з’являється в різних застереженнях, повинні бути узгодженими, пропозиційна змінна не може бути в одному пункті, а в іншому). 3 S A T p t r u e f a l s e3SAT3SATptruefalse
Kaveh

1
Щодо "Якщо ваш алгоритм скорочення створює позитивний екземпляр Y як вихід, йому, мабуть, був наданий позитивний екземпляр X як вхід": Хоча здавалося б, більш інтуїтивно писати цю умову як "Якщо алгоритму скорочення надано негативний екземпляр з X як вхідного сигналу, він створює негативний екземпляр Y як вихід ", зауважте, що ці дві умови еквівалентні , і як JeffE написав, це зазвичай робить конструкцію доказу набагато простішою, оскільки в кожному випадку у вас є" щось "(або позитивний екземпляр X або позитивний екземпляр Y) для роботи.
j_random_hacker

11

JeffE описує найбільш загальну стратегію: знає багато NP-повних завдання, знайти той , який підходить дуже добре і зробити легке зниження.

Інша діюча стратегія - завжди використовувати 3SAT (або будь-яку іншу проблему). Це може зробити деякі скорочення більш заплутаними, але перевага полягає в тому, що у вас є багато досвіду, що виражає захисність в інших типах проблем. Таким чином, ви економите час пошуку хорошого партнера зі скорочення (включаючи тупики) і сподіваєтесь, що ваш досвід дозволить вам скоротити скорочення, навіть якщо це важче.

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


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

3
Я не впевнений у твердженні, що це єдина проблема, яка була доведена безпосередньо до заповнення NP. Насправді, якщо ви інтерпретуєте це в суворому розумінні, то це, безумовно, помилково. У документі 1971 року Кука йдеться про TAUT не SAT (він використовує скорочення Cook, а не скорочення Karp) (це легкі зауваження, що доказ також доводить, що SAT є NP-повним при скороченні Карпа).
Kaveh

@Kaveh Так? Тавтологія є Co-Np завершеною і тому невідомо, що вона знаходиться в NP (-комплект). Я не читав папери Кука.
Альберт Гендрікс

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