Правило, щоб знати, чи може проблема не заповнена NP


26

Це питання надихнуло коментар щодо StackOverflow .

Окрім знання проблем, повних NP, книги Гарі Джонсон та багатьох інших; чи є правило, щоб дізнатися, чи проблема схожа на NP-повну?

Я шукаю не щось суворе, а те, що працює в більшості випадків.

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


8
Моє правило є простим: якщо це не пахне проблемою, з якою я вже знайомий, це, мабуть, NP-важко (або ще гірше).
JeffE

12
@JeffE Звичайно, ви вже знайомі з досить багатьма проблемами ... новачки в CS можуть не в змозі використовувати те саме правило.
Джо

1
@Joe: Правда. Можливо, було б краще сказати: Якщо ви не отримали проблему з підручника, це, мабуть, NP-важко.
JeffE

2
Ще один спосіб зробити це: це дивно, коли проблема не є NP-жорсткою, а не коли проблема є NP-жорсткою.
Джо

Відповіді:


15

Це мій особистий підхід, щоб визначити, чи проблема (тобто мова ) не відповідає NP чи ні. Якщо підтверджено обидва ці умови:L

  • Я вважаю, що тестування, якщо екземпляр, який є в означає, що мені потрібно перевірити всі комбінаціїЛIL
  • і що немає можливості поділити таку комбінацію на дві менші

тоді може бути дуже важким для NP.L

Наприклад, для проблеми підмножини , я повинен перерахувати всі підмножини і перевірити, чи є такий, сума якого дорівнює нулю. Чи можу я розділити на дві менші підмножини та на яких я перевіряю подібну властивість? Гумм ... не дуже. Можливо, якби я перевірив наявність усіх комбінацій та але це було б дуже довго ...S S 1 S 2 S 1 S 2SSS1S2S1S2

Зазвичай здатність розбиватися на більш дрібні шматки є хорошим показником для проблеми бути в P. Це підхід розділення та перемоги . Наприклад , щоб знайти найкоротший шлях між двома точками, ви можете використовувати властивість, якщо найкоротший шлях від до пройти через , то це не більше , ніж самий короткий шлях від до плюс найкоротший від до .C B A B B CACBABБС

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

Я підозрюю, що це звичайний спосіб мислення. Однак застосувати її невідомі проблеми залишається досить важко. Я особисто пам’ятаю, як мене здивував один з перших прикладів повноти NP, про який мені сказали: проблема кліку . Це здавалося таким простим перевірити! Тож я гадаю, що досвід має багато спільного з цим. Також інтуїція іноді може бути марною. Я пам’ятаю, як мені говорили кілька разів про дві майже однакові проблеми, але одна була в P, а інша з невеликою варіацією була NP-повною.

Я ще не знайду хорошого прикладу (мені тут потрібна допомога), але це як проблема після листування : це нерозв'язна проблема, але деякі варіанти вирішувані.


7
+1

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

Прикладом може слугувати найдовша проблема загальної послідовності, яка знаходиться в P для 2 послідовностей, але потрапляє в NP-Hard з більшою кількістю.
Крістіан Вільма

14

Інша точка зору на твердість проблеми виникає із спільноти ігор та головоломок, де головне правило полягає в тому, що "проблеми є настільки важкими, наскільки це можливо" (а винятки виходять із прихованих структур у проблемі - приклад Массімо визначального фактора в коментарі - хороший приклад цього); Тоді фокус полягає в розумінні того, наскільки складною може бути проблема:

  • н
  • Головоломки, що включають послідовність рухів у обмеженому просторі стану, знаходяться в PSPACE (оскільки 'дерево переміщення', як правило, можна досліджувати стандартним способом глибини, потребуючи лише зберігання для поліноміального числа конфігурацій), і, як правило, є повним PSPACE; класичний приклад цього - «Rush Hour».
  • Ігри з поліноміально обмеженою глибиною також є в PSPACE; для цього використовується характеристика PSPACE як APTIME, оскільки звичайна мінімальна характеристика стратегій ідеально імітує змінну машину Тьюрінга з її характеристикою, оскільки "існує рух для гравця A такий, що на кожен хід відповіді від гравця B існує відповідь рух для гравця A такий, що ... 'і т. д. Вони також мають тенденцію бути повним PSPACE; Шестигранні та узагальнені ігри Tic-Tac-Toe - це обидва приклади цього.
  • Ігри без обмежень по глибині дерева, але граються в (поліноміально) обмеженому просторі, знаходяться в EXPTIME, оскільки існує загальна кількість позицій експоненціально, і весь графік може бути побудований і досліджений в часі поліном за кількістю позицій (і, отже, загальна експоненціальна) ; ці ігри, як правило, завершені EXPTIME. Шахи, шашки та гра всі підпадають під цю категорію.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.