Це скорочення від Clique до вашої проблеми.
Почнемо з екземпляром Clique: граф і ціле число K , нехай V = { V 1 , V 2 , . . . , v n } .GkV={v1,v2,...,vn}
Клік залишається NPC навіть при обмеженні, що (ескіз доказування: якщо m a x ( d e g ( v i )) > 2 ( k - 1 ) потім додаємо K t, де t = 2 ( k - 1 ) - m a xmax(deg(vi))≤2(k−1)max(deg(vi)>2(k−1)Kt і підключіть його до всіх вузлів G і запитайте кліку розміром k ′ = k + t у новому графіку).t=2(k−1)−max(deg(vi))Gk′=k+t
Тож вважаємо, що в , m a x ( d e g ( v i ) ) ≤ 2 ( k - 1 ) . Для кожного вузла v i, для якого d e g ( v i ) < 2 ( k - 1 ), ми створюємо "зовнішню" кліку C i розміром 2 ( k + 1 ) + 1 (кожен вузол CGmax(deg(vi))≤2(k−1)videg(vi)<2(k−1)Ci2(k+1)+1 клика має щонайменше 2 ( k + 1 ) сусідів).Ci2(k+1)
Якщо - ступінь v i , ми з'єднуємо v i з 2 ( k - 1 ) - d e g ( v i ) вузлами C i .deg(vi)vivi2(k−1)−deg(vi)Ci
У отриманому кожен v i має ступінь 2 ( k - 1 ) ; так | А | ≥ k, оскільки має бути обрана хоча б одна вершина.G′vi2(k−1)|A|≥k
Зрозуміло, що якщо одна з вершин включена в A, то в неї також слід вставити принаймні 2 ( k + 1 ) / 2 = k + 1 вузли. Зауважте, що якщо вихідний вузол має d e g ( v i ) < k - 1, то принаймні один вузол пов'язаного C i повинен бути включений, що веде до | А | > к .CiA2(k+1)/2=k+1deg(vi)<k−1Ci|A|>k
Таким чином, ми можемо побудувати набір мінімального розміру | А | = k, якщо і тільки якщо G містить кліку розміром k .A|A|=kGk
Приклад скорочення, в якому запитуємо, чи графік представлений жовтими вузлами та жирними краями, містить кліку розміром k = 3 (трикутник).Gk=3
Сині вузли (згруповані для кращої читабельності) - , червоні краї - це зв’язки між вузлами G з d e g ( v i ) < 2 ( k - 1 ) .K9Gdeg(vi)<2(k−1)