Які відмінності між NP, NP-Complete і NP-Hard?


1107

Які відмінності між NP , NP-Complete і NP-Hard ?

Мені відомо про багато ресурсів у мережі. Я хотів би прочитати ваші пояснення, і причина полягає в тому, що вони можуть відрізнятися від того, що там, або я щось не знаю.

Відповіді:


1438

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

  • Проблема рішення : Проблема з відповіддю " так" або " ні" .

Тепер давайте визначимо ці класи складності .

П

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

Тобто, враховуючи екземпляр проблеми, відповідь "так" чи "ні" не може бути вирішена в поліноміальний час.

Приклад

З огляду на з'єднаний графік G, чи можна його вершини забарвити двома кольорами, щоб жодне ребро не було однотонним?

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


НП

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

Це означає, що якщо хтось подає нам приклад проблеми та довідку (іноді її називають свідком), що відповідь "так", ми можемо перевірити, чи правильно це в поліноміальний час.

Приклад

Цілісна факторизація знаходиться в NP. Це проблема, яка задана цілими числами, nі mчи існує ціле число fз 1 < f < mтаким, яке fділиться n( fє малим фактором n)?

Це проблема рішення, тому що відповіді - так чи ні. Якщо хто - то руки нам примірник завдання (так вони передають нам цілі nі m) і ціле число fз 1 < f < m, і затвердженням , що fє одним з факторів n(сертифікат), ми можемо перевірити відповідь в поліноміальний час , виконуючи поділ n / f.


NP-Повне

NP-Complete - клас складності, який представляє сукупність усіх задач XNP, для яких можна звести будь-яку іншу задачу NP Yдо Xполіноміального часу.

Інтуїтивно це означає, що ми можемо Yшвидко вирішити, якщо знаємо, як Xшвидко вирішити . Точніше, Yзводиться до X, якщо існує поліноміальний алгоритм часу fдля перетворення примірників yз Yдоступ до примірників x = f(y)з Xза поліноміальний час, з тим властивістю , що відповідь на yце так, якщо і тільки якщо відповідь на f(y)це так.

Приклад

3-SAT. Це проблема, в якій нам дано сполучення (ANDs) 3-клапнових диз'юнкцій (АБО), висловлювання форми

(x_v11 OR x_v21 OR x_v31) AND 
(x_v12 OR x_v22 OR x_v32) AND 
...                       AND 
(x_v1n OR x_v2n OR x_v3n)

де кожна x_vij- булева змінна чи заперечення змінної з кінцевого попередньо визначеного списку (x_1, x_2, ... x_n).

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

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


NP-жорсткий

Інтуїтивно це проблеми, які принаймні настільки ж важкі, як і проблеми, пов'язані з NP . Зауважте, що важкі проблеми з NP не повинні бути в NP , і вони не повинні бути проблемами вирішення .

Точне визначення тут полягає в тому, що проблема Xє складною для NP, якщо є проблема Y, повна NP , така, яка Yзводиться до Xполіноміального часу .

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

Приклад

Проблема зупинки є важкою проблемою. Це проблема, яка дасть програму Pта вклад I, чи зупиниться? Це проблема рішення, але вона не в НП. Зрозуміло, що будь-яка проблема, заповнена NP, може бути зведена до цієї. Як інший приклад, будь-яка проблема, повний NP, є важкою.

Моя улюблена проблема NP-завершення - проблема шахтника .


P = NP

Ця проблема є найвідомішою проблемою інформатики та одним із найважливіших невирішених питань математичних наук. Справді, Clay інститут пропонує один мільйон доларів за вирішення проблеми (Стівен Кук рецензія на сайті Клей досить добре).

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

Найкраща книга на цю тему - Комп'ютери та нездатність Гарі та Джонсона.


32
@Paul Fisher: Я покажу, що SAT можна привести до проблеми зупинки в поліноміальний час. Розглянемо наступний алгоритм: задано як введення пропозицію Iщодо nзмінних, спробуйте всі 2^nможливі призначення змінних і зупиніть, якщо одна задовольняє пропозицію, а в іншому випадку введіть нескінченний цикл. Ми бачимо, що цей алгоритм зупиняється тоді і лише тоді, коли Iвін задоволений. Таким чином, якби у нас був алгоритм поліноміального часу для вирішення задачі зупинки, ми могли б вирішити SAT у поліноміальний час. Тому проблема зупинки є NP-жорсткою.
Язон

6
@Jason - таким чином ви не можете звести вирішувану проблему до невирішеної проблеми. Проблеми, що вирішуються, повинні спричинити остаточну відповідь "так" або "ні", щоб вважати її вирішеною. Проблема зупинки не має остаточного відповіді "так" або "зараз", оскільки довільна відповідь може кинути будь-яке рішення у цикл.
rjzii

11
@Rob: Так, можу. Визначення скорочуваного не вимагає, щоб проблема, яка зводиться, була вирішуваною. Це справедливо як для скорочень багатьох, так і скорочень Тьюрінга.
Ясон

5
@Rob: Ну добре, якщо ви хочете продовжити це. По-перше, "Вирішуваний" не є синонімом з "проблемою рішення", як ви його використовували. "Рішуче" означає, приблизно, що існує "ефективний метод" для визначення відповіді. "Ефективний метод", звичайно, має технічне визначення. Більше того, "рішуче" можна також визначити через "обчислювані функції". Отже, проблема зупинки - це проблема рішення ("Чи зупиняється ця програма?" - це питання "так", але це не можна визначити); не існує ефективного методу для визначення того, припиниться чи ні екземпляр проблеми зупинки.
Язон

21
Використання проблеми зупинки як "класичного прикладу" NP-жорсткої проблеми є некоректним. Це як би сказати: "Тихий океан - класичний приклад акваріума з морською водою".
Майкл

261

Я озирався і бачив багато довгих пояснень. Ось невеликий графік, який може бути корисним для узагальнення:

Зверніть увагу, як складність збільшується зверху вниз: будь-який NP може бути зменшений до NP-Complete , а будь - який NP-Complete може бути зменшений до NP-Hard , і все це за P (поліном).

Якщо ви зможете вирішити більш складний клас задачі за P час, це означає, що ви знайшли, як вирішити всі простіші проблеми за P час (наприклад, доведення P = NP, якщо ви зрозумієте, як вирішити будь-яку задачу NP-Complete в Р час).

____________________________________________________________
| Тип проблеми | Перевіряється за P час | Розв’язується за P час | Збільшення складності
___________________________________________________________ | |
| П | Так | Так | |
| НП | Так | Так чи ні * | |
| NP-Повне | Так | Невідомо | |
| NP-Hard | Так чи ні ** | Невідомо *** | |
____________________________________________________________ V

Примітки до Yesабо Noзаписи:

  • * Проблема NP, яка також є Р, вирішується за P час.
  • ** Проблема NP-Hard, яка також є NP-Complete, перевіряється за P час.
  • *** Проблеми з NP-завершенням (усі вони складають підмножину NP-hard). Решта НП важко - ні.

Я також вважав цю діаграму досить корисною, коли бачите, як всі ці типи відповідають один одному (приділіть більше уваги лівій половині діаграми).


У мене є сумніви, пов'язані з вашою відповіддю. Я задав це окремим запитанням, але мене попросили опублікувати тут. Чи можете ви мені тут допомогти? stackoverflow.com/questions/21005651/…
Шрікант

Невідомо, чи вирішуються задачі, пов'язані з NP, у поліноміальний час. Крім того, проблеми, повні з NP, є важкими для NP, тому деякі проблеми, пов'язані з NP, можна перевірити в поліноміальний час, а можливі, а також деякі з вирішенням багаточленного часу.
Фолк Хюффнер

Ця таблиця неправильна і суперечлива. Навіть якщо припустити, що NP! = P, що ще не було доведено, все одно було б невірно. Наприклад, клас NP-Hard включає проблеми NP-Complete; тому ваша таблиця стверджує, що проблеми NP-Complete одночасно перевіряються в поліноміальний час і не підлягають верифікації в поліноміальний час.
Майкл

3
@ FalkHüffner Спасибі, таблиця оновлюється (була помилка при перекладі з діаграми Venn).
Джонсон Вонг

1
@PeterRaeves Всі проблеми NP-завершені NP-жорсткі, за визначенням: NP-complete = (NP і NP-hard). Зворотне не відповідає дійсності: в NP-hard є проблеми (наприклад, проблема зупинки), які не є NP-завершеними. "NP (не розв'язується в поліноміальний час)" - це не те, що означає NP. НП є "Недетерміновано-поліном". Усі проблеми в Р також в НП. Чи справжнє зворотне - відоме невідомо.
Джим Балтер

73

Це дуже неформальна відповідь на поставлене запитання.

Чи можна 3233 записати як добуток двох інших чисел, більших від 1? Чи є якийсь спосіб пройти шлях навколо всіх Семи мостів Кенігсберга, не вступаючи жодного мосту двічі? Це приклади запитань, які мають спільну рису. Можливо, не очевидно, як ефективно визначити відповідь, але якщо відповідь "так", то для підтвердження доказу є короткий і швидкий. У першому випадку нетривіальна факторизація 51; по-друге, маршрут для прогулянки мостами (відповідні обмеженням).

Проблема рішення являє собою набір питань з так чи ні відповідей , які розрізняються лише по одному параметру. Скажіть проблему COMPOSITE = {"Чи nскладений": nце ціле число} або EULERPATH = {"Чи має графік Gшлях Ейлера?": GЄ кінцевим графіком}.

Зараз деякі проблеми з рішенням піддаються ефективним, якщо не очевидним алгоритмам. Ейлер виявив ефективний алгоритм для таких проблем, як "Сім мостів Кенігсберга" понад 250 років тому.

З іншого боку, для багатьох проблем з рішенням не очевидно, як отримати відповідь - але якщо ви знаєте якусь додаткову інформацію, очевидно, як слід довести, що ви правильно отримали відповідь. КОМПОЗИЦІЯ виглядає так: Пробний поділ - це очевидний алгоритм, і це повільно: щоб визначити десятизначне число, потрібно спробувати щось на зразок 100 000 можливих дільників. Але якщо, наприклад, хтось сказав вам, що 61 - це дільник 3233, простий довгий поділ - це ефективний спосіб зрозуміти, що вони правильні.

Клас складності NP - це клас проблем прийняття рішень, де відповіді "так" мають короткі відомості, які швидко перевіряють докази. Як і КОМПОЗИТ. Важливим моментом є те, що це визначення нічого не говорить про те, наскільки важкою є проблема. Якщо у вас є правильний, ефективний спосіб вирішити проблему рішення, достатньо доказів лише написання кроків у рішенні.

Дослідження алгоритмів тривають, і постійно створюються нові розумні алгоритми. Проблема, яку ви можете не знати, як ефективно вирішити сьогодні, може завтра виявитись ефективним (якщо не очевидним) рішенням. Насправді дослідникам було потрібно до 2002 року, щоб знайти ефективне рішення КОМПОЗИТ! З урахуванням усіх цих досягнень, справді, варто замислитися: чи це трохи про те, що короткі докази є лише ілюзією? Можливо, кожна проблема вирішення, яка піддається ефективним доказів, має ефективне рішення? Ніхто не знає .

Мабуть, найбільший внесок у цю сферу прийшов із відкриттям своєрідного класу проблем НП. Граючи з моделями схеми для обчислення, Стівен Кук виявив проблему вирішення різноманітності NP, яка виявилася настільки ж важкою або важкою, ніж будь-яка інша проблема NP. Ефективне рішення для булевої проблеми задоволеності може бути використане для створення ефективного рішення будь-якої іншої проблеми в НП. Незабаром Річард Карп показав, що ряд інших проблем з рішенням може служити тій самій цілі. Ці проблеми, в певному сенсі "найважчі" проблеми в НП, стали називатися проблемами, що завершуються NP .

Звичайно, NP - це лише клас проблем вирішення. Багато проблем, природно, не викладені таким чином: "знайти чинники N", "знайти найкоротший шлях у графі G, який відвідує кожну вершину", "дати набір змінних призначень, що робить наступний булевий вираз істинним". Хоча можна неофіційно говорити про те, що деякі подібні проблеми знаходяться «в НП», технічно це не має особливого сенсу - вони не є проблемами вирішення. Деякі з цих проблем можуть мати навіть таку ж силу, як і проблема, що не стосується NP: ефективне вирішення цих проблем (без рішення) призведе безпосередньо до ефективного вирішення будь-якої проблеми НП. Така проблема називається NP-hard .


67

P (Поліномний час): Як підказує сама назва, це проблеми, які можна вирішити в поліноміальний час.

NP (недетерміновано-поліноміальний час): це проблеми рішення, які можна перевірити в поліноміальний час. Це означає, що якщо я стверджую, що для певної проблеми існує поліноміальне рішення, ви попросите мене довести це. Тоді я надам вам доказ, який ви можете легко перевірити за багаточлен. Такі проблеми називаються проблемами НП. Зауважимо, що тут ми не говоримо про те, чи існує поліноміальне рішення часу для цієї проблеми чи ні. Але ми говоримо про перевірку розв’язання заданої задачі за багаточлен.

NP-Hard: Вони, принаймні, такі ж важкі, як і найважчі проблеми в НП. Якщо ми можемо вирішити ці проблеми в поліноміальний час, ми можемо вирішити будь-яку задачу NP, яка, можливо, існує. Зауважте, що ці проблеми не обов'язково є проблемами NP. Це означає, що ми можемо / не можемо перевірити рішення цих задач у поліномний час.

NP-Complete: Це проблеми, які є як NP, так і NP-Hard. Це означає, що якщо ми можемо вирішити ці проблеми, ми можемо вирішити будь-яку іншу задачу НП, і розв’язання цих задач може бути перевірено в поліноміальний час.


Ви просто вирішили скопіювати дефініції звідкись?
Арун Сатьярт

1
Відповідь має сенс!
Костянтин

2
@ArunSatyarth Звідки?
значення-справи

3
Найкраща відповідь, як коротка, використовує достатньо термінології, має нормальні людські речення (не важко читати будь-як-правильні-як-то можливі речі), і на диво достатньо єдина відповідь, яка пише те, що N означає.
значення-справи

62

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

введіть тут опис зображення


1
Чи доведено, що існує проблема в NP-Hard, яка не є в NP-Complete? Тому що це зображення це підказує. Дякую.
Hilder Vitor Ліма Перейра

9
@VitorLima так, наприклад, проблеми, пов’язані з EXPSPACE, є важкими для NP, але доведено, що вони не є NP-завершеними.
Франк Дернонкурт

2
Добре, дякую. Я знайшов деякі згадки про це. Наприклад, цей: princeton.edu/~achaney/tmve/wiki100k/docs/NP-hard.html
Hilder Vitor Ліма Перейра

47

Найпростіший спосіб пояснити P v. NP та подібне, не вдаючись до технічних питань - порівнювати "проблеми зі словом" з "проблемами з численним вибором".

Коли ви намагаєтеся вирішити "проблему зі словом", ви повинні знайти рішення з нуля. Коли ви намагаєтеся вирішити "проблеми з численним вибором", у вас є вибір: або вирішіть це так, як би ви сказали "проблему зі словом", або спробуйте підключити кожну з наданих вам відповідей, і виберіть відповідь кандидата, яка відповідає.

Часто трапляється так, що "проблема з вибором з декількома варіантами" набагато простіше, ніж відповідна "проблема слова": заміна відповідей кандидата і перевірка їх відповідності може зажадати значно менших зусиль, ніж пошук правильної відповіді з нуля.

Тепер, якщо ми погодимось із зусиллями, які займають час полінома «легким», тоді клас P складався б із «легких проблем зі словом», а клас NP складався з «легких задач з множинним вибором».

Суть P v. NP полягає в питанні: "Чи є легкі проблеми з численним вибором, які не є простими, як проблеми зі словом"? Тобто, чи є проблеми, на які легко перевірити обґрунтованість даної відповіді, але знайти цю відповідь з нуля важко?

Тепер, коли ми зрозуміли інтуїтивно, що таке НП, нам доведеться кинути виклик своїй інтуїції. Виявляється, є "проблеми з численним вибором", які в певному сенсі є найважчими з усіх: якби можна було знайти рішення однієї з "найважчих з усіх" проблем, можна було б знайти рішення ВСІХ Проблеми НП! Коли Кук відкрив це 40 років тому, це стало повною несподіванкою. Ці "найважчі з усіх" проблеми відомі як NP-hard. Якщо ви знайдете «вирішення проблеми із словом» для однієї з них, ви автоматично знайдете «вирішення проблеми із словом» для кожної «простої проблеми з множинним вибором»!

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


18

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

Проблеми, що знаходяться в класі складності NP, можуть бути вирішені недетерміновано за час полінома, а можливе рішення (тобто сертифікат) для задачі в NP може бути перевірено на правильність у поліноміальному часі.

Прикладом недетермінованого рішення проблеми k-clique може бути щось на зразок:

1) випадковим чином вибрати графік k вузлів

2) перевірте, що ці k вузли утворюють кліку.

Вищеописана стратегія є поліноміальною за розміром вхідного графіка, і тому k-кліка проблема знаходиться в NP.

Зауважимо, що всі задачі, що детерміновано вирішуються в поліноміальний час, також є в NP.

Показано, що проблема є важкою для NP, як правило, передбачає зменшення проблеми, пов’язаної з NP-hard, до вашої проблеми за допомогою поліноміального відображення часу: http://en.wikipedia.org/wiki/Reduction_(complexity)


Не те, що в цій відповіді я бачу щось неправильне, але я не знаю, чому це було прийнято. Це насправді не дуже пропонує те, що просила ОП. Це насправді навіть не відрізняється від стандартних пояснень цих проблем, і немає чітких пояснень того, що зумовлює ці проблеми в цих класах. Не вартий скоромовки, але, звичайно, не варто приймати відповіді.
Сан-Хасінто

18

Я думаю, що ми можемо відповісти на це набагато коротше. Я відповів на відповідне запитання і скопіювавши свою відповідь звідти

Але, по-перше, проблема з важким NP - це проблема, для якої ми не можемо довести, що існує поліноміальний час. NP-твердість деякої «проблеми-P» зазвичай доводиться шляхом перетворення вже перевіреної проблеми NP-hard у «задачу-P» за багаточлен.

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

(i) проблема рішення,
(ii) кількість рішень задачі має бути кінцевою, і кожне рішення має бути довжиною полінома, і
(iii) даючи розв'язок довжини полінома, ми повинні мати можливість сказати, чи відповідь на проблема - так / ні

Тепер неважко помітити, що може бути багато важких проблем щодо NP, які не належать до встановленого NP і важче вирішити. Як інтуїтивно зрозумілий приклад, оптимізаційна версія мандрівного продавця, де нам потрібно знайти фактичний графік, важче, ніж версія рішення мандрівного продавця, де нам просто потрібно визначити, чи існує графік довжиною <= k чи ні.


5

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

Для тих, хто думає, що обчислювальна складність стосується лише P та NP, тут є найбільш вичерпним ресурсом про різні проблеми складності обчислювальної техніки. Окрім проблем, заданих ОП, він містив приблизно 500 різних класів обчислювальних задач із приємними описами, а також перелік фундаментальних наукових робіт, що описують клас.


3

Наскільки я розумію, проблема , яка займається np-hard , не є «важчою», ніж проблема, повна в np . Насправді, за визначенням, кожна проблема, що завершує np:

  1. в НП
  2. np-жорсткий

введіть тут опис зображення

- Вступ. до алгоритмів (3ed) Кормен, Лейзерсон, Рівест і Штейн, стор. 1069


3
Ваше розуміння невірно. Ваше визначення NP-Complete є правильним, але не має жодного стосунку до вашого першого твердження. Усі проблеми в NP-hard є щонайменше настільки ж важкими, як і у NP-комплектації; деякі (наприклад, проблема зупинки, яка нескінченно важка, і en.wikipedia.org/wiki/EXPSPACE ) є важче складнішими.
Джим Балтер

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