Это сокращение от клики к вашей проблеме.
Начнем с экземпляром 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
Таким образом , мы предполагаем , что в , т а х ( д е г ( v я ) ) ≤ 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)+1Ci clique has at least 2(k+1) neighbours).
If deg(vi) is the degree of vi, we connect vi to 2(k−1)−deg(vi) nodes of Ci.
В полученном каждый v i имеет степень 2 ( k - 1 ) ; так | A | ≥ k, потому что должна быть выбрана хотя бы одна вершина.G′vi2(k−1)|A|≥k
Ясно, что если одна из вершин включена в A, то в нее также должны быть вставлены не менее 2 ( k + 1 ) / 2 = k + 1 узлов. Обратите внимание, что если исходный узел имеет d e g ( v i ) < k - 1, то должен быть включен по крайней мере один узел связанного C i , что приводит к | A | > к .CiA2(k+1)/2=k+1deg(vi)<k−1Ci|A|>k
Таким образом, мы можем построить набор минимального размера | A | = k тогда и только тогда, когда G содержит клику размера k .A|A|=kGk
Пример сокращения, в котором мы спрашиваем, содержит ли граф представленный желтыми узлами и полужирными ребрами, клику размером k = 3 (треугольник).Gk=3
Синие узлы (сгруппированные для лучшей читаемости) - это , красные края - это связи между узлами G с d e g ( v i ) < 2 ( k - 1 ) .K9Gdeg(vi)<2(k−1)