다항시간 SAT 솔버에 대한 비판

다항시간 SAT 솔버에 대한 비판
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

이 논문은 세르게이 구빈이 제안한 3‑SAT 다항시간 알고리즘과 SAT을 2‑SAT으로 변환하는 절차가 근본적으로 오류가 있음을 증명한다. 알고리즘이 사용하는 “호환성 행렬”과 “소거” 과정에서 정보 손실이 발생해 만족 가능성을 잘못 판단하며, 구빈이 제시한 반례와 추가적인 논증을 통해 그 부정확성을 상세히 보여준다.

상세 분석

구빈의 알고리즘은 3‑SAT 인스턴스를 모든 절(pair) 사이에 호환성 행렬을 만든 뒤, 각 절을 순차적으로 “소거”함으로써 전체 식의 만족 여부를 판단한다. 이때 행렬 Cᵢ,ⱼ는 절 cᵢ와 cⱼ의 진리표 조합 중 두 절이 동시에 참이면서 공통 변수에 모순이 없는 경우에만 1을 갖는다. 초기 삼각 행렬을 구성한 뒤, i번째 절을 기준으로 i‑1번째 절과의 열을 비교해 동일 행에 1이 존재하지 않으면 해당 원소를 0으로 만든다. 구빈은 최종 오른쪽 아래 행렬이 전부 0이면 UNSAT, 하나라도 1이 있으면 SAT이라고 주장한다.

하지만 이 과정에는 두 가지 치명적인 결함이 있다. 첫째, 소거 단계에서 행렬은 크기를 유지하지만, 어떤 행이 어떤 변수 할당과 연결되는지에 대한 메타 정보가 사라진다. 즉, 행이 살아남았다고 해도 그 행이 실제로 전체 절 집합을 만족시키는지 여부를 추적하지 못한다. 둘째, 행렬은 두 절 사이의 6비트(3변수×2) 정보만을 담고 있는데, 세 번째 절까지 포함하면 9비트(3절 × 3변수) 조합을 고려해야 한다. 8×8 행렬에 2⁹개의 가능한 할당을 모두 표현할 수 없으므로, 소거 과정에서 필요한 정보가 압축·소실된다.

논문은 구체적인 반례를 제시한다. 예를 들어
f = (a ∨ b ∨ c) ∧ (¬a) ∧ (¬b) ∧ (¬c)
는 명백히 UNSAT이다. 구빈의 절 순서대로 진행하면 각 소거 단계에서 행렬이 변하지 않아 최종 행렬에 1이 남아 SAT으로 잘못 판단한다. 절 순서를 바꾸면 올바른 결과가 나오지만, 모든 가능한 순서를 탐색하려면 지수적 시간이 필요하다.

또한 Hegerle가 제시한 “모든 가능한 3‑리터럴 조합이 존재한다면 UNSAT”이라는 조건도 구빈 알고리즘이 만족하지 못함을 보인다. 구빈은 세 절만 동시에 고려하므로, 더 많은 절이 포함된 경우에도 일부 정보는 소거 과정에서 전달된다. 따라서 알고리즘이 실제로는 제한된 패턴만 정확히 판별하고, 일반적인 3‑SAT에서는 오류를 범한다.

마지막으로 구빈이 제안한 SAT→2‑SAT 다항시간 변환 역시 위의 행렬 오류에 기반한다. 소거 후 남은 비어 있지 않은 행렬을 이용해 1‑SAT 인스턴스를 만든다. 하지만 행렬이 비어 있지 않음에도 불구하고 원래 3‑SAT이 UNSAT인 경우가 존재한다. 이 경우 생성된 1‑SAT은 언제나 SAT이므로 변환이 올바르지 않다.

결론적으로, 구빈이 주장한 O(m³) 시간 복잡성은 맞지만, 알고리즘이 실제로 SAT을 정확히 판별하지 못한다. 정보 손실과 행렬 차원의 불충분함이 근본 원인이며, 이를 보완하려면 모든 가능한 변수 할당을 추적해야 하므로 지수적 비용이 불가피하다. 따라서 이 논문은 구빈의 주장에 대한 강력한 반증을 제공하고, P = NP 문제에 대한 잘못된 결론을 방지한다.


댓글 및 학술 토론

Loading comments...

의견 남기기