Чому клас NP-Complete важливий порівняно з NP-жорстким?


19

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

Я також розумію визначення NPC, і те, що показувати задану проблему рішення є важким NP, знаючи, що це в NP, саме це було засобом NPC.

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

Чому ця концепція настільки важлива?


3
Я видалив ваше друге запитання, оскільки він повністю відокремлений від першого. Однак це дуже хороше питання, і я закликаю вас ставити це як нове запитання. Щоб відновити текст, натисніть посилання "відредаговано [в будь-який час]", яке покаже вам історію редагування та дозволить скопіювати та вставити текст.
Девід Річербі

Відповіді:


16

Принаймні кілька причин того, що NPC цікавий:

  • Клас NP містить багато цікавих проблем (як теоретично, так і теоретично), крім того, багато з цих проблем виявляються важкими (і, отже, NP-повними), але багато проблем поза NP майже напевно занадто важко бути. більше ніж теоретичний інтерес , тому NPC надає (грубу) групу проблем, які, мабуть, важкі, але не такі важкі, що ми не можемо спробувати щось зробити з ними.
    Іншими словами, NPC - це, ймовірно, межа того, що, ми можемо сподіватися, може бути вирішеним у поліномі в часі, здається, розтягнути спробу для PSPACE = P (наприклад).
  • Клас НП є структурно цікавим. Це основний приклад "чи отримуємо ми ще не обчислювальну" швидкість "від недетермінізму". Тож нас цікавить, чи P = NP чи ні, і NPC (мабуть) є важливою складовою розробки.
  • NP-hard (як клас) насправді занадто великий і різноманітний для того, щоб вирішувати його як єдину річ, це все, що можна звести до проблеми , повного NP , включаючи величезну кількість матеріалів поза NP, так що з точки зору Зважаючи на те, що намагаються розробити загальні результати та прийоми, не можна зачепитися.

Оскільки моє оригінальне запитання було відредаговано так, щоб відображати назву, можливо, вам слід приховати відповідь і на друге питання.
Амнестик

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

@vonbrand, так, я дико завищив це (можливо, божевілля?). Нова версія точна, але, на жаль, не має такого відчуття.
Люк Матхісон

9

З точки зору того, хто пише код на життя, добре ознайомлення з NP-повнотою важливо для:

1. Розпізнавання, коли ти гавкаєш неправильне дерево

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

2. Пошук правильного дерева

Оскільки комп'ютери часто використовуються для атаки з важкими проблемами NP, були розроблені спеціалізовані розв'язувачі, які дозволяють ефективно вирішувати деякі екземпляри важких для NP. Визнання вашої проблеми неповним NP - це перший крок до пошуку наявного інструменту (SAT, ILP, SMT, CSP), який може допомогти вам знайти точні рішення в тих випадках, коли вам інакше довелося б вирішити проблему наближення.


-4

"Безумовно, якщо ми знайдемо якийсь жорсткий алгоритм NP, який працює в часі P (незалежно від того, чи є це в NP), ми показали, що NP = P. Чому ця концепція настільки важлива?"

Кожна проблема NP зводиться до будь-якої проблеми NPC, але це неправда, що кожна проблема NP зводиться до будь-якої NP-жорсткої проблеми, тому доведення алгоритму NP-hard в P зовсім не доводить P = NP. Однак, це стосується проблеми NPC, саме це означає "скорочення". Отже, якщо ми знайдемо алгоритм P для проблеми NPC, то ми доведемо, що P = NP.


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