Чи не завершена проблема k-кліки NP?


23

У цій статті Вікіпедії про проблему Кліка в теорії графів на початку зазначається, що проблема пошуку кліки розміром K у графі G є NP-повною:

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

Але в цій іншій статті Вікіпедії про проблему Клика в CS йдеться про те, що вирішення проблеми для фіксованого розміру k є проблемою в P, вона може бути жорстоко вимушена в поліноміальний час.

Алгоритм грубої сили для перевірки того, чи містить графік G k-вершину, і знайти будь-яку таку кліку, яку він містить, слід вивчити кожен підграф з принаймні k вершинами і перевірити, чи утворює він кліку. Цей алгоритм потребує часу O (n ^ kk ^ 2): для перевірки є підграграфи O (n ^ k), кожен з яких має ребра O (k ^ 2), наявність яких у G потрібно перевірити. Таким чином, проблема може бути вирішена в поліноміальний час, коли k є фіксованою постійною. Однак, коли k є частиною вхідних даних до задачі, час є експоненціальним.

Щось тут мені не вистачає? Може бути різниця у формулюванні проблеми? І що означає останнє речення, що "Коли k є частиною входу до проблеми, проте час є експоненціальним". Чому існує різниця, коли k є частиною входу до проблеми?

Моя ідея полягає в тому, щоб знайти графіку розміру k у графі G, це те, що ми спочатку вибираємо підмножину розміру k вузлів від G, і перевіряємо, чи всі вони пов'язані з іншими k вузлами, що можна робити в постійному режимі час. І повторюйте це, поки у нас не з’явиться кліка розміром k. Кількість наборів k вузлів, які ми можемо вибрати з G, дорівнює n! / к! * (нк) !.


13
NP-повнота проблеми залежить від того, що ви вважаєте вхідним. Тому що проблема є в якщо існує поліноміальний алгоритм для її вирішення. Якщо K - константа (не вхід), алгоритм є многочленом у n . Якщо k - частина вхідного сигналу, то алгоритм експоненціальний в k . ПКнкк

Відповіді:


17

Тільки розробивши те, що вказував @Lamine: Коли є частиною вхідного сигналу, k може бути великим, як nкк , в цьому випадку кількість потенційних наборів кліків становить ( nн2який принаймні(n(нн2) . Отже, ваш наївний алгоритм зайняв би час2n(нн2)н2 яка чітко експоненціальна у вхідній довжині| х| +| k| =n+журнал2н2 . Параметризована версія G ( n , k ), де ми шукаємо k -кліки в n -верховому графіку, фіксує твердість проблеми в найбільш узагальненому вигляді, оскільки k є частиною вхідних даних. Отже, алгоритм багаторазового часу для G ( n , k ) також означатиме алгоритм багаторазового часу для будь-якого конкретного k .|х|+|к|=н+журналнГ(н,к)кнкГ(н,к)к

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