
지난번에 이어 이번에도 컴퓨터 과학의 최대 난제인 P vs NP에 대해서 좀더 깊게 들어가 보겠습니다. 이전 포스트에서는 P와 NP가 각각 직관적으로 어떤 의미를 갖고 있는지에 대해서 알아 보았는데요. 이를 보다 엄밀히 정의하면 다음과 같습니다.
- P는 다항 시간(polynomial time)에 결정론적(deterministically)으로 해결 가능한(solvable) 문제들의 집합입니다. 다시 말해, 어떤 결정 문제(decision problem)
에 대해, 주어지는 입력(input)이 참인지 거짓인지를 다항 시간에 결정론적으로 해결하는 알고리즘이 존재하면 입니다. - NP는 다항 시간에 비결정론적(nondeterministically)으로 해결 가능한 문제들의 집합으로, 어떤 결정 문제
에 대해, 주어지는 입력이 참인지 거짓인지를 다항 시간에 비결정론적으로 해결하는 알고리즘이 존재하면 입니다. - NP의 또 다른 정의는 다항 시간에 결정론적으로 검증 가능한(verifiable) 문제들의 집합입니다. 자세히 살펴보자면, 어떤 결정 문제
에 대해 어떤 입력과 입력 크기의 어떤 다항식으로 표현되는 크기를 갖는 증거(certificate)를 함께 제공 받았을 때 이를 다항 시간에 결정론적으로 검증하는 알고리즘이 존재하면 입니다.
해당 글에서는 계산 이론(theory of computation)에 대한 배경 지식 없이도 이해할 수 있도록 위 내용을 최대한 가볍게 소개하였습니다. 약간 엄밀하지 못한 부분이 있을 수는 있으나 나름 필요한 부분은 모두 충족했다고 생각합니다. 궁금하신 분들은 아래를 참조하세요.
2020/09/08 - [수학적 도구/Theory of computation] - P vs NP 쉽게 이해하기
P vs NP 쉽게 이해하기
컴퓨터 과학에는 유명한 난제가 있습니다. 바로 P vs NP입니다. 컴퓨터 과학을 공부하다 보면 언젠간 한 번은 반드시 접하게 되는 흥미롭고도 신기한 문제인데요. 이번 포스트에서는 이에 대해서
gazelle-and-cs.tistory.com
위 정의에 따르면
이 문제를 어렵게 만드는 원인 중 하나는 P와 NP에 속하는 문제가 무수히 많다는 점입니다. 우리가 어떤 두 집합
이미 우리는
이번 시간에는 위 성질을 만족하는 NP의 문제들이 어떤 것인지에 대해서 알아 보겠습니다. 글은 다음과 같이 구성되어 있습니다.
- 다항 시간 환산 가능성(polynomial-time reducibility)
- NP-난해와 NP-완전(NP-hardness and NP-completeness)
- NP-난해 증명 방법
번역은 위키피디아를 참조하였습니다.[3]
다항 시간 환산 가능성(Polynomial-Time Reducibility)
어떤 문제가 다른 문제보다 어렵다, 혹은 쉽지 않다는 것은 무슨 의미일까요? 이해를 위해 예시를 들어 보겠습니다. 우리에게 서로 다른 두 문제
의 임의의 입력을 잘 수정하면 적절한 의 입력을 만들 수 있고,- 반대로 만들어진
의 입력을 이미 아는 방법을 이용하여 해결한 결과를 잘 조정하면 원래 의 입력의 적절한 결과를 복원할 수 있다면,
우리는
2019/01/28 - [조합론적 최적화/Matching] - 홀의 정리 (Hall's Theorem)
홀의 정리 (Hall's Theorem)
여러분이 어떤 단체의 인사 담당자라고 하죠. 총 다섯 명의 직원이 새로이 자리를 배치 받아야 하는 상황입니다. 고맙게도 충원되어야 하는 자리도 총 다섯 개입니다. 자애로운 여러분은 모든
gazelle-and-cs.tistory.com
우리의 목표는 "가장 어려운" NP 문제를 찾는 것입니다. 그러므로 그 문제가 가져야 하는 성질은 분명 모든 NP 문제를 그 문제로 환산하여 해결할 수 있어야 한다는 것입니다. 더구나 그 문제도 NP에 속하기를 원하므로 환산 과정에 시간이 너무 많이 들어가서도 안 됩니다. 이는 다음 정의를 통해서 정형화됩니다.
정의 1. 다항 시간 환산 가능성[ㄱ]
어떤 두 결정 문제
- 임의의
의 입력 에 대해, 가 에서 참인 필요충분조건은 가 에서 참인 것이다.

여기서 중요한 점은 이 정의에서
NP-난해와 NP-완전(NP-Hardness & NP-Completeness)
이제 우리는 "가장 어려운" NP 문제를 엄밀히 정의할 수 있습니다. 먼저 다음 정의는 NP에 속하는 모든 문제보다 어렵다는 것을 나타냅니다.
정의 2. NP-난해
어떤 결정 문제
그러면 "가장 어려운" NP 문제는 다음과 같이 정의됩니다.
정의 3. NP-완전
어떤 결정 문제
서론에서 우리는 NP에 속하는 모든 문제보다 어려운 문제가 만약 다항 시간에 결정론적으로 해결된다면 우리는
정리 1. NP-난해 문제의 성질
어떤 NP-난해한 결정 문제
[증명] 정의에 의해 임의의

위에서 중요한 점은 증명의 어느 곳에서도 비결정론적 알고리즘에 의거하지 않았다는 것입니다. 이는 "난해"의 개념이 두 문제가 주어졌을 때 어느 문제가 풀기 쉽고 어느 문제가 풀기 어려운지를 따지는 데에만 있기 때문입니다. 다시 말해, 어떤 문제가 NP-난해하다는 것은 임의의 NP 문제를 해당 문제로 (다항 시간에) 환산하여 해결할 수 있다는 것만 나타내며, 해당 문제가 어떤 방식으로 해결되는지에 대한 정보는 전혀 담고 있지 않습니다. 추가적으로 우리가 만약 해당 문제를 비결정론적 알고리즘으로 다항 시간에 해결할 수 있다는 사실을 안다면, 이는 NP에 속하게 되고 따라서 NP-완전하다는 것을 알게 됩니다.
개인적으로도 처음에는 이 개념들이 익숙하지 않아서 이해하는데 애를 먹었습니다. 하지만 각 개념이 무엇을 표현하는지를 곰곰이 따져 본다면 생각보다 그리 어려운 개념을 표현하고 있지는 않다는 사실을 발견하시리라 생각합니다.
NP-난해 증명 방법
어떤 문제가 NP에 속하는 것을 보이는 것은 어렵지 않습니다. 해당 문제를 다항 시간에 비결정론적으로 해결하는 알고리즘을 아무거나 하나 제시하면 되기 때문이죠. 반대로 어느 문제가 NP-난해함을 보이는 것은 일견 쉬워 보이지는 않습니다. 정의 상 NP에 속하는 모든 문제로부터 그 문제로 다항 시간 환산 가능함을 보여야 하기 때문이죠. 정의의 조건을 만족하는 함수
이를 보다 쉽게 할 수 있는 방법은 없을까요? 다행스럽게도 만약 어떤 문제가 이미 NP-난해하다는 것을 알고 있다면 이를 활용하여 다른 문제의 NP-난해성을 보일 수 있습니다.
정리 2. NP-난해 문제 증명 방법
어떤 NP-난해 문제
[증명] 증명의 목표는 임의의
를 만족하는 다항 시간에 연산 가능한 함수
를 만족하는 다항 시간에 연산 가능한 함수
를 만족하는 것을 알 수 있습니다.
예제: 3-SAT Independent Set
위에서 공부한 내용을 실제 예시에 적용해 보도록 하겠습니다. 먼저 문제들을 소개하겠습니다. 첫 번째는 3-충족 가능성 문제(3-satisfiability problem, 3-SAT)입니다. 이 문제는 NP-완전한 문제를 공부할 때 가장 먼저 배우는 문제로, 그 정의는 다음과 같습니다. 이 문제의 입력은 다음 두 가지로 구성됩니다.
- 변수(variable)의 개수
: 각 변수 은 참 또는 거짓을 할당 받을 수 있습니다. 의 논리 부정(NOT)은 로 표현됩니다. 이때, 과 을 리터럴(literal)이라고 부릅니다. - 절(clause)
: 각 절은 정확히 세 리터럴의 논리합(OR, )으로 연결되어 있습니다.
만약
예를 들어, 입력이 다음과 같이
일 때, 우리는
인 입력은
다음은 유명한 그래프 문제 중 하나인 독립 집합 문제(independent set problem)입니다. 이 문제도 다음 두 가지가 입력으로 주어집니다.
- 가중치도 없고 방향도 없는(unweighted undirected) 그래프
- 목표 크기 정수

한눈에 보기에 서로 관련이 없을 것 같은 두 문제가 사실은 매우 밀접한 관련이 있습니다. 바로 3-SAT이 독립 집합 문제로 다항 시간 환산 가능하다는 점입니다. 다시 말해, 우리가 만약 독립 집합 문제를 다항 시간에 결정론적으로 해결하는 방법을 알고 있다면, 분명 우리는 3-SAT도 다항 시간에 결정론적으로 해결할 수 있다는 뜻이죠.
정리 3. 3-SAT과 독립 집합 문제의 관계
3-SAT
[증명] 정의 1의 조건을 만족하는 3-SAT의 입력을 입력받아 독립 집합 문제의 입력을 출력하는 다항 시간에 연산이 가능한 함수
위 입력에 대해, 그래프
- 정점 집합
는 모든 절의 리터럴에 대응합니다. 즉, 입니다. 참고로 입니다. - 간선 집합
는 로 구성됩니다. 첫 번째 은 각 절에 해당하는 정점을 모두 연결하는 것으로 으로 표현할 수 있습니다. 두 번째 는 서로 다른 절에 속한 두 리터럴이 서로 논리 부정 관계를 이루면 연결해 줍니다. 다시 말해, 과 같습니다. 참고로 는 단순 그래프(simple graph)이므로 을 만족합니다.
이제 함수

과연
반대로

마지막으로 남은 것은
앞에서도 설명했지만, 위 증명에서 가장 중요한 부분은 독립 집합 문제의 모든 입력에 대해 참/거짓 여부를 알 필요가 없다는 점입니다. 대신
마치며
이것으로 NP 문제들 중에서 "가장 어려운" 문제인 NP-완전한 문제들에 대해서 알아 보았습니다. 또, 어떤 문제의 NP-난해성은 다른 알려진 NP-난해한 문제를 해당 문제로 다항 시간 환산 가능함을 보이는 것으로 증명할 수 있다는 점도 공부하였습니다. 그 실례로 3-SAT을 독립 집합 문제로 다항 시간 환산 가능하다는 것을 보였습니다.
그러면 맨 처음에는 어떤 문제가 NP-난해하다고 알려졌을까요? 이를 모르면 우리는 정리 2를 써먹을 수 없습니다. 수학적 귀납법에서 기저 조건이 만족함을 보여야하는 것과 같은 이치지요. 따라서 분명 최소한 한 문제는 실제 임의의 NP 문제로부터 다항 시간 환산 가능하다는 것을 직접적으로 보여야 합니다. 그러한 기원 격의 문제가 바로 앞에서 본 3-SAT입니다.
예전에 이 정리의 증명을 본 적이 있는데, 양이 상당하더군요. 나중에 기회가 되면 이를 다루어 보도록 하겠습니다.
궁금하신 점이 있으시거나, 글에 잘못된 내용이 있는 경우에는 알려주시기 바랍니다. 고맙습니다. :)
각주
[ㄱ] 다항 시간 환산 가능성을 정의하는 다른 방식이 있습니다. 우리가 어떤 문제
[ㄴ] 쿡-레빈 정리는 사실 3-SAT이 아니라 그것의 일반화된 문제인 SAT이 NP-완전하다는 것입니다.[1] SAT은 입력으로 주어지는 절에 사용되는 리터럴의 개수에 제한이 없는 문제입니다. 나중에 R. Karp가 SAT
참조
[1] Stephen A. Cook "The complexity of theorem-proving procedures." In Proceedings of the third annual ACM symposium on Theory of computing, pp. 151-158. 1971.
[2] Richard M. Karp "Reducibility among combinatorial problems." In Complexity of computer computations, pp. 85-103. Springer, Boston, MA, 1972.
'수학적 도구 > Theory of computation' 카테고리의 다른 글
P vs NP 쉽게 이해하기 (51) | 2020.09.08 |
---|