이 문제는 Vertex Cover의 축소로 인한 NP-hard입니다.
정점 커버 문제에서 그래프 와 숫자 이 주어지며, 우리 의 임무는 에서 최대 정점 의 하위 집합 가 있는지 확인 하여 모든 모서리 가 발생 하는지 확인하는 것입니다. 적어도 하나 개의 정점에 . (동일하게 : 최대 개의 정점 을 삭제하여 모든 모서리를 죽일 수 있습니까?)G=(V,E)rUrVEUGr
먼저, 분할 으로 분리 된 부분 집합은 각 요소에 할당 동등 정확히 하나 가능한 라벨. 축소의 기본 아이디어는 각 정점 에 대해 레이블 를 작성 하고 다음과 같은 의미에서 각 모서리에 해당 끝점에 해당하는 두 레이블 중 하나만 할당되도록 허용하는 것입니다. 레이블은 다른 레이블에 동일한 레이블을 할당 할 수있는 것에 대한 (정품) 제약을 도입하지 않고, 해당하지 않는 레이블에 모서리를 할당하면 다른 모서리에 동일한 레이블이 할당되지 않습니다. 물론 숫자를 올리는 효과가 있습니다 고유 라벨이 필요합니다.AsAsSjvjV
정점 표지 의 인스턴스 에서 문제 인스턴스 를 구성하려면 :(A,a,s)(G,r)
- 를 설정하십시오 각 모서리 에 대해 에 요소 를 . (이러한 쌍은 정수 로 생각할 수 있습니다 .k|E|(i,j)AvivjE1,…,k
- 설정 로만약 또는 ; 그렇지 않으면 를 1로 설정하십시오.a(b,c),d|E|d=bd=ca(b,c),d
- 설정하십시오 .s=r
경우 바로 라벨 선택 : 정점 커버의 YES-인스턴스이며, 그것은 문제의 단지 건설 한 예는 또한 YES 인스턴스는 것을 쉽게 알 수 정점에 상당 모든 솔루션에 각 모서리 대해 해당 요소 를 지정합니다. 레이블 또는 중 하나를 선택했습니다 (두 레이블을 모두 선택하면 임의로 선택). 이 용액을 사용하는 만 있기 때문에 서브 세트 및 유효 힘을위한 것들이다 대응(G,r)SjvjUvbvc∈E(b,c)∈ASbScsaij라벨은 이상을 방지하는 (비) 효과를 갖습니다. 가장자리에 동일한 레이블이 지정됩니다.|E|
문제의 YES- 인스턴스 는 원본 이 정점 커버의 YES- 인스턴스 임을 암시합니다 . 부터 까지 의 유효한 솔루션 은 일반적으로 가장자리 해당 하지 않는 레이블 할당 할 수 있기 때문에 약간 더 복잡 합니다. 즉, . 유효한 솔루션 에서 유효한 정점 커버 를 반드시 "읽어냅니다" .X=(A,a,s)(G,r)YX(i,j)Smm∉{i,j}UY
그러나, 비 대응하는 라벨을 할당하는 심각한 용액의 구조를 제한하는 고비용 가지고 에지가 될 때마다 그러한 레이블 할당 가진 팩트 있다는 보장하지만 그것이 여야 만 이 라벨을 할당 가장자리. 따라서 이와 같이 해당 레이블이없는 가장자리 포함하는 모든 솔루션 에서 다음과 같이 대체 솔루션 를 구성 할 수 있습니다.(i,j)Smm∉{i,j}a(i,j),m=1Y(i,j)↦SmY′
- 에 대해 새 레이블 를 또는 .Sz(i,j)SiSj
- 이 새 레이블을 할당하십시오 . 이로 인해 유효하지 않은 솔루션이 발생하는 경우 정확히 하나의 다른 모서리 , 레이블이 이미 지정 입니다. 이 경우 하고 1 단계로 이동하십시오.(i,j)(i′,j′)z∉{i′,j′}Sz(i,j)=(i′,j′)
위의 알고리즘은 두 가지 방법 중 하나로 종료해야합니다. 모순을 하지 않는 새 레이블 가 발견되거나 정점의 전체주기가 발견됩니다. 전자의 경우, 세트를 가진 유효한 새로운 솔루션 이 발견되고 후자의 경우에는 세트를 가진 유효한 새로운 솔루션 이 발견됩니다. 어느 쪽이든, 우리는 해당 레이블에 지정된 가장자리가 하나 이상있는 유효한 새 솔루션을 구성했습니다 . 이 전체 프로세스를 최대로 반복 한 후때때로, 우리는 원래의 정점 표지 문제에 대한 해결책을 읽을 수 있는 유효한 솔루션 를 생산할 것 입니다.Szs−1s|E|Y′′
이 구조는 분명히 다항식 시간이므로 문제가 NP-hard이기 때문입니다.