Відповіді:
Щоб показати, що проблема не завершена, вам потрібно:
Іншими словами, з огляду на деяку інформацію 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-комплексу, як 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 (тобто також у НП).
Потрібно звести проблему NP-Complete до проблеми, яка є. Якщо скорочення може бути здійснено за багаточлен, тоді ви довели, що ваша проблема є NP-повною, якщо проблема вже є NP, оскільки:
Це не простіше, ніж NP-повна проблема, оскільки вона може бути зведена до неї в поліноміальний час, що робить проблему NP-Hard.
Дивіться кінець http://www.ics.uci.edu/~eppstein/161/960312.html для отримання додаткової інформації.
Для того, щоб довести, що проблема L не є повною, потрібно зробити наступні кроки:
По-перше, ви показуєте, що він взагалі лежить в NP.
Тоді ви виявите ще одну проблему, про яку ви вже знаєте, як NP завершено, і покажете, як ви поліноміально зводить проблему NP Hard до своєї проблеми.