410 likes | 698 Views
P vs. NP. From Garey & Johnson’s book. I can’t find an efficient algorithm, I guess I’m just too dumb. Better than the previous…. I can’t find an efficient algorithm, because no such algorithm is possible. Unfortunately, proving intractability is hard. I can’t find an efficient algorithm,
E N D
From Garey & Johnson’s book • I can’t find an efficient algorithm, • I guess I’m just too dumb.
Better than the previous… • I can’t find an efficient algorithm, • because no such algorithm is possible.
Unfortunately, proving intractability is hard. • I can’t find an efficient algorithm, • but neither can all these famous people.
그럼, 이 장에서는 무얼 배우는 걸까? • 문제의 난이도 • 다루기 힘든 정도 • 문제의 분류 • P vs. NP
복습: 다차시간(Polynomial-time) 알고리짐 • 최악의 경우 시간복잡도의 상한이 입력 크기의 다항식이 되는 알고리즘을 말한다. • f(n) ?
다루기 힘든 정도(Intractability) • 다차시간 알고리즘을 찾을 수 없는 문제를 다루기 힘든(intractable) 문제라 한다. • 지금 까지 다루기 힘든 문제? • 그렇지 않은 문제?
문제의 분류 • 다차시간 알고리즘을 찾은 문제 • 다루기 힘들다고 증명된 문제 • 다루기 힘들다고 증명되지 않았고, 다차시간 알고리즘도 찾지 못한 문제
다차시간 알고리즘을 찾은 문제 • 모든 알고리즘이 다차시간인 경우 • 정렬 • 정렬된 배열에서 검색 문제 • 행렬 곱셈 문제 • 제일 빠른 알고리즘에서 다차시간이 있는 경우 • 연쇄행렬곱셈 • 최단경로문제 • 최소비용신장트리 문제
다루기 힘들다고 증명된 문제 • 결과 자체가 비다항식이상 크기인 경우 • 모든 해밀토니안 순환경로를 결정하는 문제 • 최대 (n-1)! 가지의 답이 있다. • 다차시간에 풀 수 없다고 증명된 문제 • 몇 개나 있을까? • 결정불가능한 문제(undecidable problem) • 문제를 풀 수 있는 알고리즘 자체가 없다고 증명된 문제
종료 문제(Halting Problem) • 어떤 프로그램이 정상적으로 수행되어서 종료하는지를 결정하는 문제 • 정리: 종료 문제는 결정불가능하다. • 증명: 이 문제를 풀 수 있는 알고리즘이 존재한다고 가정하자. 그 알고리즘은 어떤 프로그램을 입력으로 받아서 그 프로그램이 종료하면 “예”라는 답을 주고, 종료하지 않으면 “아니오”라는 답을 줄 것이다. 그 알고리즘을 Halt 라고 하면, 다음과 같은 “말도안돼” 알고리즘을 만들 수 있다. Algorithm 말도 안돼 If Halt(말도 안돼) == “예” then While true do print “야호”
종료 문제(Halting Problem) Algorithm 말도 안돼 If Halt(말도 안돼) == “예” then While true do print “야호” • 만일 “말도안돼” 알고리즘이 정상적으로 종료하는 알고리즘이라고 한다면, Halt(말도안돼)는 “예”가 되고, 따라서 이 알고리즘은 절대로 종료하지 않는다. 이는 가정과 상반된다. • 만일 “말도안돼” 알고리즘이 정상적으로 종료하지 않는 알고리즘이라고 한다면, Halt(말도안돼)는 “아니오”가 되고, 따라서 이 알고리즘은 종료하게 된다. 이도 마찬가지로 가정과 상반된다. • 결론적으로, Halt라는 알고리즘은 존재할 수 없다.
문제의 분류 • 다차시간 알고리즘을 찾은 문제 • 다루기 힘들다고 증명된 문제 • 다루기 힘들다고 증명되지 않았고, 다차시간 알고리즘도 찾지 못한 문제
다루기 힘들다고 증명되지 않았고, 다차시간 알고리즘도 찾지 못한 문제 • 많은 문제들이 여기에 속한다. • 중간고사 이후에 배웠던 문제들의 대부분… • 0-1 배낭채우기 • 외판원 • m-색칠하기 • 해밀토니안 회로… • 이런 문제들를 나타낼 수 있는 이름은? • NP(Nondeterministic Polynomial)
일단, 문제를 바꿔보자. • 최적화 문제(optimization problem) • 최적의 해를 찾자. • 결정 문제(decision problem) • 대답이 “예” 또는 “아니오”로 제한된 문제 • 최적화 문제에 대한 해답을 가지고 결정 문제에 대한 해답은 저절로 얻는다. • 어떤 최적화 문제에 대해서 다차시간 알고리즘이 있다면, 그 알고리즘으로부터 그 문제에 해당하는 결정 문제에 대한 다차시간 알고리즘을 쉽게 유추해 낼 수 있다. • NP와 P를 다룰 때 결정 문제만 고려해도 충분하다.
외판원 문제: 최적화 vs. 결정 • 최적화 문제 • 가중치가 있는 방향 그래프에서, 한 정점에서 출발하여 다른 모든 정점을 정확히 한번씩만 방문하면서 출발점으로 돌아오는 일주여행경로 중에서 총 여행거리가 최소가 되는 경로를 구하시오. • 결정 문제 • 어떤 양수 d가 주어지고, 총 일주여행거리가 d를 넘지 않는 경로가 있는지 없는지를 결정하시오.
외판원 문제: 최적화 vs. 결정 • 외판원 문제에 대해 최적화, 결정 문제 모두 아직까지 다차시간 알고리즘을 발견하지 못하였다. • 최적화 문제에 대한 다차시간 알고리즘이 있으면 결정 문제에 대한 다차시간 알고리즘을 만들 수 있다. • 외판원 최적화 문제를 해결하는 다차시간 알고리즘을 통해 얻은 값이 120이면 외판원 결정 문제는 d≥120이 주어지면 “예”로 대답하고, d<120이면 “아니오”로 대답하면 된다.
0-1 배낭채우기 문제 • 최적화 문제 • 배낭에 넣을 아이템의 무게와 가치를 알고 있을 때, 용량이 W가 되는 배낭에 아이템을 총 이익이 최대가 되도록 채우시오. • 결정 문제 • 용량이 W가 되는 배낭에 아이템을 총 이익이 최소한 P가 되도록 채울 수 있는지를 결정하시오
P 집합 • P는 다차시간 알고리즘이 존재하는 모든 결정 문제들의 집합을 말한다. • P에 속하는 문제? 속하지 않는 문제? • NP 문제에 대해 정의해 보자. • NP문제에 관한 오해 • Non-polynomial time problem?? • 이게 아니라면, 어떻게 엄밀하게 NP를 정의 할 수 있을까? • 문제 풀이 방법을 두 가지로 나눠서 푼다고 생각해보자. • 추측(비결정적; nondeterministic) 단계 • 검증(결정적; deterministic, verification) 단계
예) 외판원 결정 문제 • 추측(비결정적 단계) • “나는 (직관적으로) 답을 알고 있다. (어떤 식으로 풀었는지는 안 가르쳐 주겠다.)” • 검증(결정적 단계) • 이 사람의 주장이 맞는지 확인하는 단계 • 다차시간 내에 확인 할 수 있나? • 다차시간 검증가능성(polynomial-time verifiability) • 결정 문제에 대한 답을 다차시간에 확인할 수 있는 특성
비결정적 알고리즘(nondeterministic algorithm) • 추측(비결정적) 단계: 문제의 사례가 주어지면 임의의 문자열 S를 만든다. • 검증(결정적) 단계: 문제의 사례와 문자열 S를 입력 받아, 다음 세 가지 중 하나와 같이 동작한다. • 궁극적으로 “true”를 출력하고 종료 • “false”를 출력하고 종료 • 종료하지 않는다.
외판원 결정문제: 비결정적 알고리즘 • d = 15 1. 외판원 결정문제를 풀고 있는가? 2. 다차시간내에?
NP 집합 • 다차시간 비결정적 알고리즘(polynomial-time nondeterministic algorithm)은 검증 단계가 다차시간 알고리즘인 비결정적 알고리즘이다. • NP(Nondeterministic Polynomial)는 다차시간 비결정적 알고리즘으로 해결할 수 있는 모든 결정 문제의 집합을 말한다. • 외판원 문제는 NP 문제에 속한다? • 모든 P에 속한 문제는 NP에 속한다? • NP에 속하지 않는 문제 • 종료문제
NP의 특징 • NP에 속한 문제 중에서 P에 속하지 않는다고 증명이 된 문제는 하나도 없다. 따라서 아마도 NP - P = 0일지도 모른다. • 그럼 P = NP ? 이것이 사실이라면 거의 모든 결정 문제가 NP에 속하기 때문에 우리가 아는 거의 모든 문제가 다차 시간 알고리즘이 있다는 얘기가 된다. • 사실 많은 사람들이 P ≠ NP 일 것 이라고 생각하고 있기는 하지만 아무도 이것을 증명하지 못하고 있는 것이다. P ≠ NP? P = NP?
NP-Complete • 외판원 문제 • 0-1 배낭 채우기 • m-색칠하기 • … • NP-complete (NP-완전;NP-완비) • 이들 중 한 문제가 P에 속한다고 증명되면 다른 문제들도 모두 P에 속해야 한다.
CNF 만족가능도 문제(CNF-satisfiability problem) • 용어 • 논리 변수: true or false 값을 갖는 변수 • 리터럴(literal): 논리변수 또는 논리 변수의 부정 • 절(clause): 리터럴과 논리 연산자(∨)만을 사용하여 구성된 표현식 • CNF(Conjunctive Normal Form): 절과 논리 연산자(∧)만을 사용하여 구성된 표현식 • CNF 만족가능성 결정 문제 • 주어진 CNF에 대해 변수에 값을 대입하여 이 CNF를 true로 만드는 값의 대입이 존재하는지 결정하는 문제를 말한다.
예: • 예? 아니오? • 예? 아니오? • CNF 만족가능도 문제는 NP 문제 이다. • 다차시간 검증 알고리즘이 존재한다. • P에 속한다는 증명? • 1971년 Stephen Cook은 CNF가 P에 속하면 NP=P임을 증명하였다.
변환(transformation) • A 결정 문제를 해결하고 싶다. 이 때 우리는 B 결정 문제를 해결하는 다차시간 알고리즘을 알고 있다. • A 결정 문제의 모든 사례에 대해 이것과 대응되는 B 결정 문제의 사례를 만드는 다차시간 알고리즘이 있다. • 여기서 대응된다는 것은 B 결정 문제의 사례에 대해 “예”를 답하기 위한 필요충분조건이 대응되는A 결정 문제의 사례에 대해 “예”를 답하는 것을 의미한다. • 이런 다차시간 변환 알고리즘이 있으면 A도 다차시간에 해결할 수 있다.
변환(transformation) • 정의)결정 문제 A를 결정 문제 B로 변환하여 주는 다차시간 변환 알고리즘이 존재하면 문제 A는 문제 B로 다차시간 다일 변환가능 (polynomial-time many-one reducible)하다고 말한다. 기호로는 “A ∝ B”와 같이 표기한다. • 다일(many-one)이란 변환 알고리즘이 A의 여러 사례를 B의 한 사례로 매핑할 수 있기 때문이다. • 정리)결정 문제 B가 P에 속하고A ∝ B이면 A는 P에 속한다.
NP-complete • 정의) 다음 두 가지가 만족되면 문제 B는 NP-complete에 속한다. • B는 NP에 속한다. • NP에 있는 모든 문제 A에 대해 A ∝ B이다. • Cook의 정리) CNF 만족가능성 문제는 NP-complete하다. • 따라서 외판원 문제는 CNF 만족가능성 문제로 다차시간 다일 변환가능하다.
NP-complete • 정리)다음 두 가지가 만족되면 문제 C는 NP-complete에 속한다. • C는 NP에 속한다. • 어떤 NP-complete 문제 B에 대해B ∝ C이다.
다시, 결정 문제에서 최적화 문제로 • 정의) 문제 A를 문제 B를 해결하여 주는 가상의 다차시간 알고리즘으로 해결할 수 있으면 문제 A는 문제 B로 다차시간 튜링 변환가능(polynomial-time Turing reducible)하다고 말한다. 기호로는 “A ∝T B”와 같이 표기한다. • A와 B가 결정 문제이면, • A ∝ B implies A ∝T B
NP-hard • 정의) 어떤 NP-complete 문제 A에 대해 A ∝T B이면 문제 B는 NP-hard라 한다. • NP-complete 문제에 대한 모든 최적화 문제는 NP-hard이다. • 최적화 문제를 다차시간에 해결할 수 있으면 그것의 결정 문제도 다차시간에 해결할 수 있다.
모든 문제 집합 • NP-hard에 속하지 않는 문제? • P에 속한 어떤 문제가 NP-hard임을 증명하면 P=NP이다. • why? 이 알고리즘으로 모든 NP 문제를 다차시간에 해결할 수 있다. • NP-hard에 속하지 않는 문제가 있다고 증명하면 P≠NP이다. • why? P=NP이면 모든 NP 문제를 다차시간에 해결할 수 있다.
다루지 않은 내용 • 다음의 결정 문제가 NP-Complete에 속하는지 증명 • 0-1 배낭 채우기 • 외판원 • m-색칠하기 • … • NP-easy • NP-equivalent
기말 프로젝트 발표(화금반) • 12/5(화) 1조~8조, 12/8(금) 9조~15조 • 조당 발표시간 10분 이내 • 파워포인트로 발표자료 준비 • 도움을 받은 출처 명확히 • 프로그램 시연 • 원래의 알고리즘과 차이점 토의 • 발표 후에 자료 제출
기말 프로젝트 발표(목금반) • 12/8(금) 16조~19조 • 조당 발표시간 10분 이내 • 파워포인트로 발표자료 준비 • 도움을 받은 출처 명확히 • 프로그램 시연 • 원래의 알고리즘과 차이점 토의 • 발표 후에 자료 제출