Ця проблема є важкою для NP завдяки скороченню від Vertex Cover.
У задачі про вершинні кришки нам дають графік та число , і наше завдання - визначити, чи є підмножина максимум вершин від такою, що кожне ребро в є інцидентним принаймні з однією вершиною з . (Рівнозначно: Чи можна вбити кожен край у , видаливши не більше вершин?)G = ( V , E ) r U rG = ( V, Е)rUrV E U G rVЕUГr
По- перше, розбиття у підмножин непересічних еквівалентно присвоєння кожному елементу в саме один з можливих міток. Основна ідея скорочення полягає у створенні мітки для кожної вершини у , а також "дозволити" кожному ребру присвоїти лише одну з двох міток, що відповідають його кінцевим точкам, у такому значенні: призначення краю відповідному label не встановлює (справжнього) обмеження щодо того, яким іншим ребрам можна присвоїти ту саму мітку, в той час як присвоєння краю невідповідній мітці запобігає призначенню будь-якого іншого краю тієї ж мітки - що, звичайно, призводить до збільшення числа необхідних чітких етикеток.A s A s S j v j VАсАсSjvjV
Щоб побудувати екземпляр вашої проблеми з екземпляра покриття Vertex:( A , a , s ) ( G , r )( A , a , s )( G , r )
- Встановіть доІ створити елемент в для кожного ребра в . (Ці пари можна розглядати як цілі числа ; будь-яке біекція між ними буде робити.)k | Е | ( i , j ) A v i v j Eк| Е|( i , j )АvivjЕ1 , … , к1 , … , к
- Встановіть наякщо або ; в іншому випадку встановіть на 1.a ( b , c ) , d | Е | d = b d = c a ( b , c ) , dа( б , в ) , д| Е|г= bг= cа( б , в ) , д
- Встановити .s = rs = r
Якщо - це екземпляр YES Vertex Cover, то легко зрозуміти, що щойно створений екземпляр вашої проблеми є також інстанцією YES: просто виберіть мітки відповідні вершинам у будь-якому рішенні , і для кожного краю присвоюйте відповідний елемент залежно від того, була обрана одна з міток або (виберіть довільно, якщо обидві мітки були вибрані). Це рішення використовує підмножини і є дійсним, оскільки єдиними чинними є відповідні( G , r ) S j v j U v b v c ∈ E ( b , c ) ∈ A S b S c s a i j | Е |( G , r )SjvjUvбvc∈ E( b , c ) ∈ ASбScсаi jетикетки, які мають (не) ефектом запобігання більше, ніжкраям присвоюється однакова мітка.| Е|
Залишається показати, що YES-примірник вашої проблеми передбачає, що оригінал - це екземпляр YES-вершини Cover. Це трохи більш складним, так як дійсне рішення до в загальному випадку може призначити ребро НЕ -corresponding мітка , тобто , що означає , що ми не можемо обов'язково «зчитувати» дійсну вершину кришку від дійсного рішення .X = ( A , a , s ) ( G , r ) Y X ( i , j ) S m m ∉ { i , j } U YХ= ( A , a , s )( G , r )YХ( i , j )Sмm ∉ { i , j }UY
Однак присвоєння невідповідної мітки має високу вартість, що суттєво обмежує структуру рішення: щоразу, коли ребру присвоюється така мітка , з , факт що гарантує, що це повинен бути єдиний край, призначений цій мітці. Отже, в будь-якому рішенні що містить такий невідповідно маркований край , ми могли б побудувати альтернативне рішення таким чином:( i , j ) S m m ∉ { i , j } a ( i , j ) , m = 1 Y ( i , j ) ↦ S m Y ′( i , j )Sмm ∉ { i , j }а( i , j ) , m= 1Y(i,j)↦SmY′
- Довільно виберіть нову мітку для або або .S z ( i , j ) S i S jSz(i,j)SiSj
- Призначте цю нову мітку. Якщо це призведе до недійсного рішення, це повинно бути тому, що саме одному іншому краю , вже було присвоєно мітку . У цьому випадку встановіть і перейдіть до кроку 1.( i , j ) ( i ′ , j ′ ) z ∉ { i ′ , j ′ } S z ( i , j ) = ( i ′ , j ′ )(i,j)(i′,j′)z∉{i′,j′}Sz(i,j)=(i′,j′)
Наведений вище алгоритм повинен закінчуватися одним із двох способів: або знайдена нова мітка , яка не вводить суперечностей, або повний цикл вершин. У першому випадку знайдено дійсне нове рішення з наборами , а в останньому випадку - нове дійсне рішення з наборами ; в будь-якому випадку, ми побудували діюче нове рішення з принаймні ще одним краєм, присвоєним відповідній мітці. Після повторення всього цього процесу не більшеразів ми створили правильне рішення з якого може бути зчинено рішення вихідної проблеми Vertex Cover .S z s - 1 s | Е | Y ″Szs−1s|E|Y′′
Ця конструкція є явно поліноміальною часом, тому випливає, що ваша проблема є NP-жорсткою.