Transcript Ch09
Ch.09
계산복잡도와 다루기 힘든 정도
(P & NP)
[CPA340] Algorithms and Practice
Youn-Hee Han
http://link.kut.ac.kr
From Garey & Johnson’s book
I can’t find an efficient algorithm,
I guess I’m just too dumb.
Page 2
From Garey & Johnson’s book
I can’t find an efficient algorithm,
because the given problem is NOT possible to solve.
Page 3
From Garey & Johnson’s book
I can’t find an efficient algorithm,
but neither can all these famous people.
Page 4
From our textbook
직장 상관이 어떤 문제에 대한 효율적인 알고리즘을 찾으라
고 지시를 하였다.
많은 시간과 노력을 했음에도 불구하고 찾지 못했다.
그 결과를 상관에게 보고하였더니 해고를 당할 위험에 처해졌다.
그래서 상관에게 자신이 능력이 없는 것이 아니라 어쩌면 이 문제에
대해서는 효율적인 알고리즘이 존재하지 않을 수 있다는 것을 알린다.
상관은 이를 증명하라고 한다.
또 다시 많은 시간과 노력을 했음에도 불구하고 증명하는데 성공을 하
지 못했다.
현 시점에서 이 사원은 해당 문제에 대한 효율적인
알고리즘을 찾지도 못했고, 그러한 알고리즘이
불가능하다고 증명하지도 못했다.
(Continue…)
Page 5
From our textbook
직장 상관이 어떤 문제에 대한 효율적인 알고리즘을 찾으라
고 지시를 하였다.
그런데, 갑자기 몇몇의 위대한 전산학자 (Computer Scientist)들이 외
판원 문제는 최악의 경우 시간복잡도가 지수시간 보다 좋은 알고리즘
을 아직까지 발견되지 못했다는 사실을 기억해냈다.
더구나 지수시간 보다 좋은 알고리즘의 제작은 불가능하다고 증명한
사람도 아무도 없다.
(Continue…)
Page 6
From our textbook
직장 상관이 어떤 문제에 대한 효율적인 알고리즘을 찾으라
고 지시를 하였다.
[마지막 희망 !!!] 만약 “현재 풀고자 하는 문제에 대한 효율적인 알고
리즘을 활용하면 외판원 문제에 대해서도 효율적인 알고리즘을 쉽게
만들어 낼 수 있다”는 사실을 증명할 수 있다면, 이는 위대한 전산학자
들이 이루지 못한 것을 상관이 요구하고 있음을 뜻한다.
위와 같은 사실을 증명한 후 사원은 해고되는 대신 오히려 승진을 한
다.
즉, 이 사원은 그 회사의 문제를 효율적으로 해결하는
알고리즘을 찾으려고 계속해서 노력하는 것은
신중하지 못한 선택이라는 것을 증명한 것이다.
Page 7
From our textbook
Page 8
그럼 이 장에서는 무엇을 배우는 걸까?
효율적인 알고리즘이란?
다차시간(Polynomial-time) 알고리즘
문제의 난이도
다루기 힘든 정도 (Intractability)
문제의 분류
P, NP, NP-Complete, NP-Hard, NP-Easy, NP-Equivalent
Page 9
다루기 힘든 정도
다차시간 알고리즘 (Polynomial-time Algorithm)
최악의 경우 시간복잡도의 상한이 입력 크기의 다항식인 알고리즘
즉, 입력 크기가 n이면, 다음을 만족하는 다항식 (Polynomial) p(n)이
존재한다.
[예제 9.1]
최악의 경우 다음의 시간복잡도를 지닌 알고리즘은 모두 다차시간
(Polynomial-time) 알고리즘이다.
최악의 경우 다음의 시간복잡도를 지닌 알고리즘은 모두 Polynomialtime 알고리즘이 아니다.
Page 10
다루기 힘든 정도
다루기 힘든 문제 (Intractable Problem)
주어진 문제를 해결하는 다차시간 알고리즘을 만드는 것이 불가능
하면 이 문제를 다루기 힘든(intractable) 문제라고 일컫는다.
[Example] 연쇄행렬곱셈 문제 (3.4절)는 다루기 힘든 문제가 아니다.
무작정 알고리즘:
동적계획 알고리즘:
Page 11
다루기 힘든 정도
다루기 힘든 정도에 따른 문제의 분류
[분류 1] 다차시간 알고리즘이 발견된 문제
[분류 2] 다루기 힘들다고 증명된 문제
[분류 3] 다루기 힘들다고 증명되지 않았지만, 다차시간 알고리즘도
발견하지 못한 문제
[NOTE] 현재까지 발견된 수천 종의 문제 대부분은 분류 1이에 속하거
나 분류 3에 속한다.
[NOTE] 알고리즘이 다차시간인지 결정할 때 입력크기라는 것에 대해
주의를 기울일 필요 있다. (Chapter 9.2 Skip!, 각자 공부)
Page 12
문제의 일반적인 분류
[분류 1] 다차시간 알고리즘을 찾은 문제 – 1/2
1) 다차시간 알고리즘을 처음부터 찾은 문제
정렬 문제:
합병정렬(Merge Sort), 퀵정렬(Quick Sort)
정렬된 배열에서의 검색 문제:
이분검색(Binary Search)
행렬곱셈 문제:
쉬트라센 알고리즘(Strassen Algorithm)
Page 13
문제의 일반적인 분류
[분류 1] 다차시간 알고리즘을 찾은 문제 – 2/2
2) 다차시간이 아닌 알고리즘도 있으나 결국 다차시간 알고리즘을
찾은 문제
연쇄행렬곱셈 문제:
동적 계획 방법의 알고리즘
최단 경로 구하기 문제:
동적 계획 방법을 사용하는 플로이드 (Floyd) 알고리즘
단일 지점 최단 경로 구하기 문제:
탐욕적인 방법을 사용하는 다익스트라 (Dijkstra) 알고리즘
최소비용 신장트리(Minimum spanning tree) 문제:
탐욕적인 방법을 사용하는 프림 (Prim), 쿠르스컬 (Kruskal) 알고리즘
등등…
[분류 1]에 속하는 문제는 P 집합에 속한다.
Page 14
문제의 일반적인 분류
[분류 2] 다루기 힘들다고 증명된 문제 – 1/4
1) 비다항식(nonpolynomial) 크기의 결과를 요구하는 비현실적인 문제
모든 해밀토니안 회로 (Hamiltonian Circuit) 를 구하는 문제 :
만일 모든 정점들 간에 이음선이 있다면, (n-1)!개의 답을 얻어야 한다.
이러한 문제는 하나의 해밀토니안 회로를 구하는 문제에 비해서 필요이상으
로 많은 답을 요구하므로 사실상 비현실적이고, 다루기 힘든 문제로 분류된다.
문제가 현실적으로 정의된 것이 아니다 (비상식적인 문제)
Page 15
문제의 일반적인 분류
[분류 2] 다루기 힘들다고 증명된 문제 – 2/4
2) 요구가 현실적이지만, 다차시간에 풀 수 없다고 증명된 문제
(문제를 풀 수 있는 알고리즘 자체가 없다고 증명된 “결정 불가능한 문제
(undecidable problem)”)
종료 문제 (Halting Problem) :
임의의 알고리즘과 임의의 입력이 주어질 때, 그 알고리즘의 수행이
멈추는지를 결정하는 문제
•
Alan Turing 이 1936년 증명함 (다음 페이지 참조)
프레스버거 산술 문제 (Presburger Arithmetic Problem) :
Fischer와 Rabin에 의하여 증명됨(1974)
[NOTE] 놀랍게도 이런 부류에 속하는 문제는 상대적으로 별로 없다.
[분류 2]에 속하는 문제는 P 집합에도 NP
집합에도 속하지 않는다.
Page 16
문제의 일반적인 분류
[분류 2] 다루기 힘들다고 증명된 문제 – 3/4
Theorem: 종료 문제(Halting Problem)는 결정불가능한 문제이다.
[Proof]: 종료 문제를 풀 수 있는 알고리즘이 존재한다고 가정하자. 그 알고리
즘은 어떤 프로그램을 입력으로 받아서 그 프로그램이 종료하면 True를 반환
하고, 종료하지 않으면 False를 반환할 것이다. 그 알고리즘을 Halt라고 하고,
다음과 같은 “Nonsense” 알고리즘을 만들어 보자.
Nonsense() {
if (Halt(Nonsense())) then while (true) do something;
}
Page 17
문제의 일반적인 분류
[분류 2] 다루기 힘들다고 증명된 문제 – 4/4
Theorem: 종료 문제는 결정불가능한 문제이다.
[Proof]: Nonsense() {
if (Halt(Nonsense())) then while (true) do something;
}
(1) 만일 “Nonsense” 알고리즘이 정상적으로 종료하는 알고리즘이라고 한다
면, Halt(Nonsense())는 true가 되고, 따라서 이 알고리즘은 절대로 종료하
지 않는다. 모순 발생
(2) 만일 “Nonsense” 알고리즘이 정상적으로 종료하지 않는 알고리즘이라고
한다면, Halt(Nonsense()) 는 false가 되고, 따라서 이 알고리즘은 종료하
게 된다. 모순 발생
결론적으로, Halt라는 종료 문제를 푸는 알고리즘은 존재할 수 없다.
Page 18
문제의 일반적인 분류
[분류 3] 다루기 힘들다고 증명되지 않았고, 다차시간 알고리
즘도 찾지 못한 문제
대부분의 문제가 이 분류에 속한다.
0 – 1 배낭채우기 (Knapsack) 문제
외판원 문제 (TSP)
부분집합의 합 구하기 문제
m 가지 색으로 그래프 색칠하기 문제
해밀토니안 회로 (Hamiltonian Circuit) 구하기 문제
등등…
[분류 3]에 속하는 문제는 NP 집합에 속한다.
[분류 1], [분류 2], [분류 3]간에는 긴밀한 관계가 존재한다. 이제부터
이들 간의 관계를 공부한다.
Page 19
최적화 문제 vs. 결정 문제
최적화 문제(optimization problem)
최적의 해를 찾아야 한다.
결정 문제(decision problem)
대답이 “예“ 또는 “아니오”로 이루어지는 문제
이론을 전개하고 이해하기가 쉬움
문제 정의를 위해 추가 파라미터가 필요
[외판원문제] – 가중치가 있는 방향그래프에서 순환일주여행경로는 한 정점
에서 출발하여 다른 모든 정점들을 정확히 한번씩만 방문하고 다시 출발점으로
돌아오는 경로이다. 이 때...
외판원 최적화 문제: 순환일주여행경로 중 가장 길이가 짧은 순환일주
여행경로를 찾는 문제
외판원 결정 문제 (Travelling Salesman Decision Problem]: 임의의 양수 d가
주어지고, 이 d보다 길지 않은 순환일주여행경로가 있으면 “예“ 없으면
“아니오”로 대답하는 문제
Page 20
최적화 문제 vs. 결정 문제
0-1 배낭채우기 최적화 문제 – 최대 용량이 W인 배낭에 넣을 아이템의 무게와
가치를 안다고 가정하고, 가치의 합이 최대가 되도록 아이템을 배낭에 어떻게
채울지 알아내는 문제
0-1 배낭채우기 결정 문제 – 임의의 총 가치액수인 P가 주어지고, 최대 용량이
W인 배낭에 넣을 아이템의 무게와 가치를 안다고 가정하고, 가치의 합이 최소한
P가 되도록 아이템을 배낭에 채울 수 있다면 “예“ 없으면 “아니오”로 대답하는
문제
그래프 색칠하기 최적화 문제 – 인접한 두 정점이 같은 색이 되지 않도록
그래프를 색칠하는 데 필요한 색의 최소 가지수를 구하는 문제
그래프 색칠하기 결정 문제 – 임의의 양의 정수 m이 주어지고, 최대한 m가지
색을 사용하여 인접한 두 정점이 같은 색이 되지 않도록 그래프를 색칠할 수
있다면 “예“ 없으면 “아니오”로 대답하는 문제
Page 21
최적화 문제 vs. 결정 문제
최적화 문제와 결정 문제의 상관관계
[분류 3]에 속한 모든 문제에 대해 최적화 문제, 결정 문제 모두 아직
까지 다차시간 알고리즘을 발견하지 못하였다.
임의의 최적화 문제에 대한 다차시간 알고리즘이 있으면 그에 상응하
는 결정 문제에 대한 다차시간 알고리즘도 쉽게 만들 수 있다.
[Example] 외판원 최적화 문제를 해결하는 다차시간 알고리즘을 통해 얻
은 일주경로의 길이가 120이면, 외판원 결정 문제에서 d가 120보다 큰 값
이라면 주어진 외판원 결정 문제의 답은 “예”이고 120보다 작거나 같은 값
이라면 주어진 외판원 결정 문제의 닶은 “아니오”가 된다.
이후부터 여러가지 이론을 전개하고 이해하기가 쉬운 결정 문제만을
다룬다.
Page 22
집합 P와 집합 NP
집합 P (Polynomial)
P는 다차시간 알고리즘으로 풀 수 있는 모든 결정 문제들의 집합이다.
그렇다면 외판원 문제가 P에 속할까?
아직까지 아무도 이 문제는 푸는 다차시간 알고리즘을 만들지 못했다.
하지만, 이 문제를 다차시간 알고리즘으로 풀 수 없다고 증명도 못했다.
(정확한 답) Maybe, Maybe not, Nobody knows yet.
[분류 3]에 속한 모든 문제(NP에 속한 문제들)들도 이와 같은 상황이 똑같
이 적용된다.
Page 23
집합 P와 집합 NP
검증 (Verification)
임의의 결정 문제의 어떤 사례 (어떠한 파라미터)에 대한 답이 “예”라
고 알고 있다고 주장하는 사람이 있다고 하자.
이 때, 그 사람이 “예”라는 결정을 내리기 위해 만든 최적화 문제의 답
이 유효한 답인지 증명할 수 있는 절차
boolean verify(Weighted-digraph G, Number d, Claimed-tour S) {
if (S is a tour && the total weight of the edges in S <= d)
return true;
else
return false;
예를 들어, 외판원 결정 문제의 답을 “예”라고 주장하는 사람이 만든
일주여행경로가 주어졌을 때, 그 경로가 과연 그런지를 위와 같은
verify 함수를 통해 확인할 수 있다.
Page 24
집합 P와 집합 NP
검증 (Verification)
boolean verify(Weighted-digraph G, Number d, Claimed-tour S) {
if (S is a tour && the total weight of the edges in S <= d)
return true;
else
return false;
이 검증 절차는 분명히 다차시간 안에 수행될 수 있다.
위 검증은 d보다 작은 일주여행경로를 찾는 것이 아니다.
위 검증은 일주여행경로 S가 d라는 파라미터를 지닌 결정 문제의 해답으
로서 “예”임을 증명할 수 있는지 다차시간에 검증하는 용도로 사용된다.
결정 문제에 대한 답을 다차시간에 확인할 수 있는 특성을 다차시간
검증가능성(polynomial-time verifiability)이라 한다.
Page 25
집합 P와 집합 NP
비결정적 알고리즘 (Nondeterministic Algorithm)
임의의 결정문제에 대해 다음과 같은 두 가지 단계로 구성된 알고리즘
1) 추측(비결정적-nondeterministic) 단계: 결정 문제의 사례(임의의
파라미터)가 주어지면 임의의 방법 (예를 들어, Guessing)에 의해 임
의의 가능한 해답 S를 만든다.
S는 그 사례에 대한 해답으로 추측한 것으로서 무의미하게도 생성 가능
2) 검증(결정적) 단계: 결정 문제의 사례와 S를 입력받아, 다음 세 가지
중 하나와 같이 동작한다.
경우 1. “true”를 출력하고 종료 S가 올바른 해답
경우 2. “false”를 출력하고 종료
(Optionally 경우 3) 종료하지 않는다 (예를 들어, 무한 루프에 빠짐)
(경우 2와 경우 3은 S가 올바른 해답으로 확인되지 않은 경우)
Page 26
집합 P와 집합 NP
비결정적 알고리즘 (Nondeterministic Algorithm)
앞서 보았던 verify 함수는 위와 같은 비결정적 알고리즘의 검증 단계
에서 활용할 수 있는 함수이다.
결정 문제를 풀기 위하여 실제로는 비결정적 알고리즘을 사용하지는
않는다.
하지만, 다음과 같은 경우에는 (이론적으로) 비결정적 알고리즘이 결
정 문제를 “푼다(Solve)”고 한다.
임의의 사례에 대해, 검증단계가 true를 반환하는 문자열 S가 존재 “예”
임의의 사례에 대해, 검증단계가 true를 반환하는 문자열 S가 존재 않지
않음 “아니오”
Page 27
집합 P와 집합 NP
비결정적 알고리즘 (Nondeterministic Algorithm)
[Example] 외판원 결정 문제에 대한 비결정적 알고리즘
문제의 사례: 주어진 방향 가중치 그래프 & d = 15
다차시간 비결정적 알고리즘
(Polynomial-time Nondeterministic Algorithm)
검증단계가 다차시간 알고리즘인 비결정적 알고리즘
Page 28
집합 P와 집합 NP
집합 NP (Nondeterministic Polynomial)
다차시간 비결정적 알고리즘으로 해결할 수 있는 모든 결정 문제의
집합
즉, 임의의 결정 문제가 NP에 속하기 위해서는 반드시 다차시간에
검증을 할 수 있는 알고리즘이 존재하여야 한다.
하지만, 해당 결정 문제 자체를 해결할 수 있는 다차시간 알고리즘이 존재
해야 함을 의미하지는 않는다.
어떤 결정 문제를 풀 수 있는 다차시간 알고리즘을 찾을 수 없을 때,
다차 시간 비결정적 알고리즘을 찾으면 그 문제는 NP에 속한다.
[주의] NP가 Non-Polynomial의 준말이 아님!
Page 29
집합 P와 집합 NP
집합 NP (Nondeterministic Polynomial)
[Example] 외판원 문제
외판원문제는 집합 NP에 속한다.
그러면 모든 가능한 일주여행경로를 다차시간 비결정적 알고리즘을 통하
여 검사하면 원래 주어진 결정 문제가 해결 되지 않을까?
모든 정점 간에 간선이 있으면 총 (n-1)!개의 일주여행경로가 존재한다.
따라서 다차시간에 그 결정문제를 해결할 수 없다.
이 외에도 [분류 3]에 속하는 모든 문제는 NP에 속한다.
(사색…) 어떤 결정 문제가 주어졌을 때, 그 문제가 NP에 속함을 어떻
게 증명할까?
Page 30
집합 P와 집합 NP
집합 NP 에 관한 고찰
P에 속하는 모든 문제는 당연히 NP에도 속한다.
why? 검증 단계에서 P에 속한 문제를 해결하는 다차시간 알고리즘을 수
행한다.
모든 결정 문제
NP에 속하지 않는 문제
= 다루기 힘들다고 증명이 된 문제
[분류 2]에 속한 문제
이러한 문제들은 상대적으로 거의 없다.
과연 NP가 P를 “진”부분집합으로
포함하는가?
NP에 속하면서 P에 속하지 않는
문제가 존재한다고 증명한 사람은
아무도 없다.
[분류 2]에
속한 문제들
P는 아니면서 NP에만 존재한다고
증명된 문제는 없다.
Page 31
집합 P와 집합 NP
모든 결정 문제
집합 NP 에 관한 고찰
P NP 인가? (NP – P 인가?)
P = NP 인가? (NP – P = 인가?)
위의 질문은 Computer Science에서
가장 유명하고 복잡한 질문 중 하나이다.
[분류 2]에
속한 문제들
P는 아니면서 NP에만 존재한다고
증명된 문제는 없다.
Page 32
집합 P와 집합 NP
집합 NP 에 관한 고찰
만약 P = NP 라면,
현재까지 알려진 대부분 결정 문제들은 NP에 속한다.
이러한 결정문제들이 P에도 속한다면 결국 다차시간 알고리즘이 존재할
것이다.
그래서, 그러한 결정문제들에 대한 다차시간 알고리즘을 찾는 문제는 의
미가 있는 작업이다.
즉, 사원은 상사에게 받은 문제를 효율적으로 풀기 위해 계속 노력해야 한다.
사실 많은 사람들이 P NP일 것 이라고 생각하고 있기는 하지만 아
무도 이것을 증명하지 못하고 있다. ( 해당 문제를 못 찾았다.)
Page 33
P = NP 증명의 어려움
P NP 를 증명하기 위해서는…?
NP에 속하면서 P에는 속하지 않는 문제를 찾으면 된다.
즉, 외판원 결정 문제가 다차시간 알고리즘이 존재하지 않음을 증명하면
된다.
P = NP 를 증명하기 위해서는…?
NP에 속한 모든 문제에 대해 다차시간 알고리즘을 찾아야 한다.
이는 상당히 진부한 작업이 되며 NP에 속한 문제는 계속해서 발견될
것이기 때문에 무한정 이러한 다차시간 알고리즘을 개발해야 한다.
이 증명을 간략화시킬 수 있을까?
Page 34
CNF 만족가능도 결정 문제
( x1 x2 x3 ) ( x1 x4 ) ( x2 x3 x4 )
Page 35
NP-Complete
CNF-만족가능도 결정 문제의 예
Page 36
NP-Complete
CNF-만족가능도 결정 문제의 특성
이 문제는 NP에 속함이 증명되었다.
하지만 아무도 이 문제를 푸는 다차시간 알고리즘을 찾지도 못하고,
아무도 이 문제를 다차시간에 풀 수 없다고 증명하지도 못했다.
따라서, 이 문제가 P에 속할지도 모른다.
1971년 Stephen Cook이 증명한 명제
CNF 만족가능도 결정 문제가 P에 속한다면 P=NP이다.
Page 37
변환 (Transformation) 알고리즘
A 결정 문제를 해결하고 싶다.
B 결정 문제를 해결하는 다차시간 알고리즘을 알고 있다.
A 결정 문제의 모든 사례에 대해 이것과 대응되는 B 결정 문제의 사례를
만드는 다차시간 알고리즘이 있다.
y=tran(x)
이 알고리즘을 변환 (Transformation) 알고리즘이라고 한다.
여기서 대응된다는 것은 B 를 푸는 알고리즘이 y에 대해 “예”라고 답하면
문제 A를 푸는 알고리즘도 x에 대해 “예”를 답하는 것을 의미
다차시간 변환 알고리즘으로서 tran 함수를 구할 수 있으면 A도 다차시간
에 해결할 수 있다.
Page 38
변환 (Transformation) 알고리즘
[정의] 다차시간 다일 변환가능 (polynomial-time many-one
reducible) = 다차시간 다일 축약
결정 문제 A를 결정 문제 B로 변환하여 주는 다차시간 변환 알고리즘
이 존재하면 문제 A는 문제 B로 다차시간 다일 변환가능
(polynomial-time many-one reducible)하다고 말한고, 기호로는
“A∝B”와 같이 표기한다.
다일(many-one)이란 변환 알고리즘이 A의 여러 사례를 B의 한 사례로
매핑할 수 있기 때문이다.
[정리 9.1] 임의의 결정 문제 B가 P에 속하고 A∝B이면 A는 P
에 속한다.
Page 39
집합 NP-Complete
[정의] 다음 두 가지가 만족되면 문제 B는 NP-Complete에 속
한다.
B는 NP에 속한다.
NP에 있는 모든 문제 A에 대해 A ∝ B이다.
위의 정의를 사용한 임의의 문제에 대한 NP-Complete 판단
어떤 문제가 NP-Complete인지를 위의 정의에 근거해서 증명하는
작업은 매우 어렵다.
왜냐하면 NP에 속한 모든 문제가 그 문제로 변환가능(reducible)하다는
것을 보여야 하기 때문이다.
그러나 다행스럽게도, 1971년 Cook이 다음 두 개의 정리를 증명했다.
Page 40
집합 NP-Complete
[Cook의 정리 1] CNF 만족가능도 문제는 NP-Complete에
속한다.
[Cook의 정리 2] 다음 두 가지가 만족되면 문제 C는 NPComplete에 속한다.
C는 NP에 속한다.
임의의 NP-Complete 문제 B에 대해 B ∝ C이다.
Cook의 정리 1, 2의 의미
(1) 임의의 문제 C가 NP에 속하고,
(2) CNF 만족가능도 문제 또는 다른 NP-Complete 문제를 문제 C로
변환가능함을 보인다면, 결국 문제 C가 NP-Complete에 속한다는 것
을 증명할 수 있다.
Page 41
집합 NP-Complete
해밀톤 회로 결정 문제 (P. 388)
(1) 해밀톤 회로 결정 문제는 NP에 속한다.
(2) CNF-만족가능도문제 ∝해밀톤 회로 결정 문제
그러므로, 해밀톤 회로 결정 문제는 NP-Complete에 속한다.
외판원 (비방향) 결정 문제 (P.389)
(1) 외판원 (비방향) 결정 문제는 NP에 속한다.
(2) 해밀톤 회로 결정 문제 ∝외판원 (비방향) 결정 문제
그러므로, 외판원 (비방향) 결정 문제는 NP-Complete에 속한다.
Page 42
집합 NP-Complete
외판원 결정 문제 (P.390)
(1) 외판원 결정 문제는 NP에 속한다.
(2) 외판원 (비방향) 결정 문제 ∝ 외판원 결정 문제
그러므로, 외판원 결정 문제는 NP-Complete에 속한다.
외판원 문제뿐만 아니라 0-1 배낭 채우기 문제, m-색칠하기
문제 등은 모두 NP 문제이면서 동시에 NP-Complete 문제
이다.
Page 43
문제와 변환에 관한 논리적 개념
문제1: 정수 x=x1x2…xn은 3의 배수인가?
문제2: x1+x2+…+xn은 3의 배수인가?
위 두 문제의 대답은 같다
Yes/No 대답이 일치한다
문제 2가 쉬우면(어려우면), 문제 1도 쉽다(어렵다)
• 상황
– 문제 B는 쉽다 (어렵다)
– 문제 A는 Yes/No 대답이 일치하는 문제 B로 쉽게 변형된다
다항식 시간 변환
문제 A
문제 B
Yes
Yes
No
No
Page 44
문제와 변환에 관한 논리적 개념
Yes
α
다항식 시간 변환
β
문제 B를 푸는
알고리즘
No
Yes
No
문제 A를 푸는 알고리즘
1.
2.
3.
문제 A를 다항식 시간에 문제 B로 변환한다
변환된 문제 B를 푼다
문제 B의 대답이 Yes이면 Yes, No이면 No를 리턴한다
문제 B가 쉬운(어려운) 문제라면 문제 A도 쉬운(어려운) 문제이다
Page 45
집합 NP-Complete의 고찰
집합 NP-Complete에 대한 고찰 (1/6)
만약 NP-Complete 에 속한 임의의 문제가 P에도 속한다면 NPComplete의 정의와 정리 9.1 (PPT Page 39) 때문에 NP에 속한 모든
문제들도 P에 속한다. 즉 NP=P가 된다.
[Proof]
•
임의의 문제 B가 P와 NP-Complete에 동시에 속한다.
•
NP-Complete의 정의에 의해 임의의 NP 문제 A는 A ∝ B가 성립한다.
•
정리 9.1에 의해 NP 문제 A는 P에 속한다.
Page 46
집합 NP-Complete의 고찰
집합 NP-Complete에 대한 고찰 (2/6)
외판원 문제뿐만 아니라 0-1 배낭 채우기 문제, m-색칠하기 문제 등은
모두 NP 문제이면서 동시에 NP-Complete이다.
이들의 최악 시간복잡도는 모두 다르지만 다음과 같은 측면에서 등가
(equivalent)이다.
이들 중 한 문제가 P에 속한다고 증명되면 다른 문제들도 모두 P에 속해야
한다.
이런 문제들을 NP-complete 문제라 한다.
Page 47
집합 NP-Complete의 고찰
집합 NP-Complete에 대한 고찰 (3/6)
정의에 따라 NP-Complete은 NP의 진부분집합이다.
종료 문제, 프레스버거 산술 문제 등은 NP에도 속하지 않으므로
NP-Complete에도 속하지 않는다.
P=NP 라면 다음과 같이 그림을 그릴 수 있다.
P (=NP)에 있긴 하지만 NP-Complete에 속하지 않는 문제
-
언제나 “예”를 돌려주는 아주 사소한 결정 문제는 NPComplete 정의에 따라 NP-Complete에 속하지 않는다.
사소하지 않은 (어느 정도로 복잡한) 결정 문제는
사소한 결정 문제로 변환이 불가능하다.
Page 48
집합 NP-Complete의 고찰
집합 NP-Complete에 대한 고찰 (4/6)
PNP 라면 다음과 같이 그림을 그릴 수 있다.
즉, 다음과 같은 등식이 성립한다.
P NP-Complete =
그렇다면, PNP 일 때 다음 집합에
속하는 문제가 존재할까?
NP – (P NP-Complete)
Page 49
집합 NP-Complete의 고찰
집합 NP-Complete에 대한 고찰 (5/6)
그래프 동형성 (Graph Isomorphism)
문제
교재 Page 391 참조
NP에 속함은 증명되었다.
이 문제에 대한 다차시간 알고리즘을 아직까지 발견하지 못했다.
• 그러므로, P에는 속하지 않는다.
NP-Complete에 속함도 아직 증명하지 못했다.
• 즉, B ∝ 그래프 동형성 문제를 만족하는 임의의 NP-Complete 문제 B
존재를 밝히지 못했다.
따라서, 이 문제가 P에 속하는지 NP-Complete 에 속하는지 알지 못한다.
Page 50
집합 NP-Complete의 고찰
집합 NP-Complete에 대한 고찰 (6/6)
PNP이면 반드시 P도 아니고 NP-Complete도 아닌 문제가 존재한다
는 것은 증명되었다.
Ladner의 논문 (1975년) - Page 392 참조
그렇다고, 그래프 동형성 문제가
P도 아니고 NP-Complete도 아닌 NP
문제라고 증명된 것은 아니다.
Page 51
집합 NP-Hard
[정의] 문제 B를 해결하여 주는 가상의 다차시간 알고리즘으
로 문제 A를 해결할 수 있으면 문제 A는 문제 B로 다차시간
튜링 변환가능(polynomial-time Turing reducible)하다고 말
한다. 기호로는 “A ∝T B”와 같이 표기한다.
위와같은 가상의 다차시간 알고리즘 (또는 기계)를 어떤 문헌에서는
Oracle 이라고도 한다.
A와 B가 결정 문제이면, 다음이 성립한다.
A ∝ B implies A ∝T B
Page 52
집합 NP-Hard
[정의] 임의의 NP-complete 문제 A에 대해 A ∝T B이면
문제 B는 NP-Hard라 한다.
[예제 9.16] 외판원 최적화 문제는 NP-Hard에 속한다.
[proof] – 교재 P.395
주어진 문제인 외판원 최적화 문제는 B로 표기하고, B를 해결하는 가
상의 다차시간 알고리즘을 라고 가정하자.
NP-Complete 문제인 A로서 외판원 결정 문제를 정하고 A ∝T B 을 다
음과 같이 증명한다.
임의의 그래프 G에 대해 를 사용하여 B 문제를 풀어서 최적의 경로 및
mindist를 구한다.
임의의 양의 정수 d에 대해 A 문제는 mindist d 임을 판단하는 것은 다
차시간 내에 결정할 수 있다.
그러므로, A ∝T B 이다.
Page 53
NP-Complete vs. NP-Hard
[Cook의 정리 2 – PPT p.41] 다음 두 가지가 만족되면
문제 B는 NP-Complete에 속한다.
B는 NP에 속한다.
임의의 NP 문제 A에 대해 A ∝ B이다.
고찰
문제 B가 NP-Hard에 속할
조건이라고 일반적으로 칭함
임의의 NP-Complete 문제가 문제 B로 다항식 시간에 변환가능하면,
문제 B는 NP-Hard에 속한다.
그러므로, 다음의 두 성질을 만족하면 문제 B는 NP-Complete이다
B는 NP이다.
B는 NP-Hard이다.
어떠한 문제가 NP-Complete임을 증명할 때 첫 번째 조건은 대부분
자명하므로 핵심에 집중하기 위해 NP-Hard 조건에 일반적으로 초
점을 맞춘다.
Page 54
NP 이론의 유용성
어떤 문제가 NP-Complete/Hard임이 확인되면…
쉬운 알고리즘을 찾으려는 헛된 노력은 일단 중지한다
주어진 시간 예산 내에서 최대한 좋은 해를 찾는 근사적
(Approximation) 알고리즘 개발에 집중한다
Remind: 때로는 어떤 것이 불가능하다는 사실이 유용할 때도 있다.
-- 레오나드 레빈
Page 55
NP와 NP-Complete, NP-Hard의 관계
추정되는 관계 (Source: 교재)
Page 56
NP와 NP-Complete, NP-Hard의 관계
추정되는 관계 1, 관계 2 (Source: Wikipedia)
Page 57
[참고 문헌]
Wiki 한국판 사이트에서…
클레이 수학연구소 (Clay Mathematics Institute, CMI)의 소개
www.claymath.org
밀레니엄 문제 (Millennium Prize Problem)
상금 100만달러 문제들…
P-NP 문제는 Millennium Prize Problem 중 하나이다.
Page 58