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


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.