Як довести, що проблема НП повна?


108

У мене проблеми з плануванням. Мені потрібно довести, що проблема неповна. Якими можуть бути методи, щоб довести її завершення NP?


Прочитайте "Зменшення серед комбінаторних проблем" Карпа.
Пол Ханкін

Відповіді:


146

Щоб показати, що проблема не завершена, вам потрібно:

Покажіть це в НП

Іншими словами, з огляду на деяку інформацію C, ви можете створити багаточленний алгоритм часу, Vякий буде перевіряти для кожного можливого вводу, Xчи Xє у вашому домені чи ні.

Приклад

Доведіть, що проблема покриття вершин (тобто, для деякого графіка G, чи має набір кришок вершин kтаким розміром , що кожне ребро Gмає принаймні одну вершину в наборі обкладинки ?) В NP:

  • наш вхід X- деякий графік Gі деяке число k(це з визначення проблеми)

  • Візьміть нашу інформацію Cяк "будь-яку можливу підмножину вершин у графі Gрозміру k"

  • Тоді ми можемо написати алгоритм , Vякий, з огляду на G, kі Cповернемося , що безліч вершин , чи є вершина кришкою для Gчи ні, в поліноміальний час .

Тоді для кожного графа G, якщо існує деяка "можлива підмножина вершин Gза розміром k", яка є кришкою вершин, то Gце в NP.

Зауважимо, що нам не потрібно знаходити Cв поліном час. Якби ми могли, проблема була б у `П.

Зауважте, що алгоритм Vповинен працювати для кожного G , для деяких C. Для кожного введення повинна існувати інформація, яка могла б допомогти нам перевірити, чи є вхід у проблемній області чи ні. Тобто не повинно бути вводу там, де інформації не існує.

Доведіть, що це NP Hard

Це включає отримання відомої задачі NP-комплексу, як SAT , набору булевих виразів у вигляді:

(A або B або C) і (D або E або F) і ...

де вираз здійснимо , тобто існує деяка настройка для цих булевих, що робить вираз істинним .

Тоді зменшіть NP-повну задачу до вашої проблеми за полиномний час .

Тобто, враховуючи деякий вхід Xдля SAT(або будь-якої NP-повної проблеми, яку ви використовуєте), створіть якийсь вхід Yдля вашої проблеми, такий, який Xє в SAT, якщо і тільки якщо Yє у вашій проблемі. Функція f : X -> Yповинна запускатись у поліном .

У наведеному вище прикладі введенням Yбуде графік Gта розмір кришки вершини k.

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

  • що Xв SAT=> Yу вашій задачі

  • і Yу вашій проблемі => Xв SAT.

Відповідь marcog має посилання на кілька інших неповних проблем, які ви можете звести до своєї проблеми.

Виноска: На кроці 2 ( Доведіть, що це NP-важко ), зменшення ще однієї важкої (не обов'язково NP-повної) проблеми до поточної проблеми, оскільки проблеми, пов’язані з NP, є підгрупою проблем, важких для NP (тобто також у НП).


7
Цікаво, чи за цим відсутні дані або кругові міркування. Я маю на увазі, як «довести» проблему в НП, не посилаючись на іншу проблему, яка «вже є в НП»? Це як сказати, що "зроблено із заліза, тому що його частина, як відомо, є залізом", це не є доказом заліза.
Ернан Ече

6
Наскільки я пам’ятаю, існує теорема під назвою теорема Кука-Левіна, яка стверджує, що SAT є NP-повним. Цей доказ є дещо складнішим, ніж те, що я окреслив вище, і я не думаю, що я можу пояснити це своїми словами.
Лайла Агаєв

4
Якщо бути точнішим, теорема Кука-Левіна заявляє, що SAT не є повною: будь-яка проблема в NP може бути зведена в поліноміальний час детермінованою машиною Тьюрінга до проблеми визначення того, чи є булева формула задоволеною (SAT). Отже, це фрагмент, про який ви просили. Якщо ви шукаєте теорему у Вікіпедії, є доказ, і ви можете посилатися на цю теорему у вашому доказі. Однак, зведення SAT до даної проблеми - це те, як мене вчили доводити NP-повноту.
Лайла Агаєв

Таким чином, моє питання, в кінцевому підсумку, якщо SAT може бути вирішена в поліномі, тобто P = NP проблема .. Дякую за вашу відповідь.
Ернан Ече

Чи можете ви пояснити, чому на другому кроці ми не можемо звести непросту проблему до потрібної проблеми? Чи має це бути проблема, що не стосується NP?
MLT

23

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

Це не простіше, ніж NP-повна проблема, оскільки вона може бути зведена до неї в поліноміальний час, що робить проблему NP-Hard.

Дивіться кінець http://www.ics.uci.edu/~eppstein/161/960312.html для отримання додаткової інформації.


2
+1, хто пояснює зрозуміло. замість того, щоб сказати купу посилань на ключові слова, я навряд чи розумію.
ColacX

22
Перше речення є зворотним: потрібно звести відому проблему, повну NP, до власної проблеми. Це свідчить про те, що ваша проблема є щонайменше такою ж важкою, як і відома проблема NP-завершення. Частина (b) також невірна: якщо ви знайшли зменшення, то ви вже знаєте, що ваша проблема є важкою для NP; питання лише в тому, чи є вона взагалі в НП (деяких проблем, як, наприклад, проблема зупинки, немає). Якщо це NP важко і в NP, то воно NP-повне (тобто "NP-завершене" є більш специфічним, ніж "NP-жорстке").
j_random_hacker

1
Я б не сказав, що а) призводить до суперечності, оскільки ми не знаємо, що P! = NP.
Chiel ten Brinke

8

Для того, щоб довести, що проблема L не є повною, потрібно зробити наступні кроки:

  1. Доведіть, що ваша проблема L належить до NP (тобто, давши рішення, ви можете перевірити його в поліноміальний час)
  2. Оберіть відому проблему, повну NP - L
  3. Опишіть алгоритм f, який перетворює L 'в L
  4. Доведіть, що ваш алгоритм правильний (формально: x ∈ L 'тоді і лише тоді, коли f (x) ∈ L)
  5. Доведіть, що algo f працює в поліномічний час

7

По-перше, ви показуєте, що він взагалі лежить в NP.

Тоді ви виявите ще одну проблему, про яку ви вже знаєте, як NP завершено, і покажете, як ви поліноміально зводить проблему NP Hard до своєї проблеми.


Ні. Вам потрібно показати, що ви можете зменшити з NP повну проблему до своєї проблеми NP, щоб довести повноту NP і довести, що вона взагалі є в NP. NP hard не вступає в це, якщо ви не зможете довести це в NP.
mrmemio29

6
  1. Ознайомтеся з підмножиною проблем NP Complete
  2. Доведіть твердість NP: Зведіть довільний екземпляр повної задачі NP до екземпляра вашої проблеми. Це найбільший шматок пирога і де знайомство з проблемами NP Complete платить. Зниження буде більш-менш складним залежно від обраної вами проблеми NP.
  3. Доведіть, що ваша проблема полягає в NP: розробити алгоритм, який може перевірити в поліном час, чи примірник є рішенням.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.