이 문제는 NP-hard라고 생각합니다. MinSAT에서 축소를 스케치하려고합니다. MinSAT 문제에서 우리는 CNF를 받고 우리의 목표는 만족 된 조항의 수를 최소화하는 것입니다. 이 문제는 NP-hard입니다 (예 : http://epubs.siam.org/doi/abs/10.1137/S0895480191220836?journalCode=sjdmec 참조)
정점을 두 그룹으로 나눕니다. 일부는 리터럴, 다른 것은 절을 나타내므로 n=2v+c 여기서 v 는 CNF (일반적으로 n으로 표시)의 변수 수 n이고 c 는 절 수입니다. 각 리터럴-정점에서 절이 발생하는 절-정점으로 가장자리를 지정하십시오. x_i 를 \ {i, i + v + k \} (여기서 k 는 임의의 매개 변수) 로 나타내는 리터럴 정점에 대해 S 를 정의 하므로 f (x_i) = i 및 f (\ bar x_i) = i + v + k 또는 f (\ bar x_i) = i 및 f (x_i) = i + v + k 입니다. 각 절-버전에 대해 S = \ {v + 1, \ ldots, v + k, 2v + k + 1, \ ldots, n \}xi{i,i+v+k}kf(xi)=if(x¯i)=i+v+kf(x¯i)=if(xi)=i+v+kS={v+1,…,v+k,2v+k+1,…,n}따라서 절의 정점 k 는``작습니다 ''.
이제 CNF에는 위의 인스턴스에서 문제를 해결할 수있는 경우에만 k 개 이상의 k절이 거짓 인 할당이 있습니다. MinSAT 문제는 CNF 공식 \ varphi에 kφ 개 이상의 절을 거짓으로 하는 대입이 있는지 여부를 정확하게 테스트하는 것이므로 문제가 NP-hard임을 나타냅니다.k
이 축소를 이해하는 데 도움이되는 직관은 다음과 같습니다. 작은 레이블 ( )은 진리 값 False에 해당하고 큰 레이블 ( )에 해당합니다. 진실로. 리터럴 버텍스의 제약 조건으로 인해 각 가 True 또는 False이고 의 반대 값이 일치 합니다. 가장자리는 리터럴이 True 인 경우 리터럴이 포함 된 모든 절-정점에도 True가 할당되도록합니다. (a 절 모든 리터럴 거짓 할당되는 경우 반대로,이 그래프 구조는 절 정점 중 하나 거짓 또는 참이 할당 될 수있다.) 마지막의 선택 것을 보장 절-정점은 잘못된 할당되고1,2,…,v+kv+k+1,…,2v+kxixi¯¯¯¯¯kkc−k그들 중 True가 할당됩니다. 따라서이 그래프에 유효한 토폴로지 정렬이있는 경우 절 중 개 이상을 false로 만드는 변수에 대입이 있습니다 (False로 지정된 모든 절-구문과 True로 지정된 것). 반대로, 절 중 개 이상을 false로 만드는 변수에 대입 이있는 경우이 그래프에는 유효한 토폴로지 종류가 있습니다 (우리는 문자 그대로 정점에 대한 레이블을 명백한 방식으로 채 웁니다.) 각 절에 대해kφkφφ즉, 해당 절-정점에 True에 해당하는 레이블을 제공합니다. 다른 조항 절은 임의의 진리 값에 해당하는 레이블을 수신 할 수 있습니다).