답변:
기술적 정의를 이해하려면 상당한 시간이 필요하기 때문에 직관적 인 정의를 찾고 있다고 가정합니다. 우선, 그러한 정의를 이해하기 위해 필요한 예비 개념을 기억합시다.
이제 이러한 복잡성 클래스를 정의하겠습니다 .
P는 다항식 시간으로 해결 될 수있는 모든 결정 문제의 집합을 나타내는 복잡성 클래스입니다 .
즉, 문제의 예가 주어지면, 예 또는 아니오의 답은 다항식 시간으로 결정될 수 있습니다.
예
연결된 그래프가 주어지면 G
꼭지점이 단색이 아닌 두 가지 색상을 사용하여 색상을 지정할 수 있습니까?
알고리즘 : 임의의 정점으로 시작하여 빨간색과 모든 이웃을 파란색으로 칠한 다음 계속합니다. 꼭짓점이 떨어지거나 가장자리의 끝 점이 모두 같은 색이되게하려면 중지하십시오.
NP는 답이 "예"인 인스턴스가 다항식 시간으로 검증 될 수있는 증거를 갖는 모든 결정 문제점 세트를 나타내는 복잡성 클래스입니다.
이것은 누군가가 우리에게 문제의 예를 제시하고 예라고 대답하는 증인 (때때로 증인이라고 함)을 주면, 다항식 시간이 올바른지 확인할 수 있습니다.
예
정수 인수 분해 는 NP에 있습니다. 이것은 정수를 부여하는 문제 n
와 m
정수가, f
와가 1 < f < m
되도록, f
분할은 n
( f
작은 요인 n
)?
정답이 '예'인지 '아니오'인지에 대한 결정 문제입니다. 누군가 우리에게 문제의 인스턴스 (정수 n
와 m
)를 정수 f
로 전달 1 < f < m
하고 그것을 (인증서) f
의 요소 라고 주장 하면 나누기를 수행하여 다항식 시간 으로 n
답을 확인할 수 있습니다 .n / f
NP-Complete은 X
다른 NP 문제 Y
를 X
다항식 시간 으로 줄일 수있는 NP 의 모든 문제 세트를 나타내는 복잡성 클래스입니다 .
직관적으로 이는 Y
신속하게 해결하는 방법을 알고 있으면 신속하게 해결할 수 있음을 의미합니다 X
. 정확하게, Y
에 환원이다 X
다항식 시간 알고리즘이있는 경우, f
인스턴스 변환하는 y
의를 Y
인스턴스 x = f(y)
의 X
그 대답에 재산과, 다항식 시간에 y
'예, 경우에만, 대답에 f(y)
'예 '가.
예
3-SAT
. 이것은 우리가 3- 절 분리 (OR)의 결합 (AND)과 형식의 진술을받는 문제입니다
(x_v11 OR x_v21 OR x_v31) AND
(x_v12 OR x_v22 OR x_v32) AND
... AND
(x_v1n OR x_v2n OR x_v3n)
여기서 각각 x_vij
은 부울 변수이거나 유한 사전 정의 된 목록에서 변수의 부정입니다 (x_1, x_2, ... x_n)
.
이는 것을 표시 할 수있는 모든 NP 문제 3- SAT로 감소 될 수있다 . 이에 대한 증명은 기술적 인 것이며 NP의 기술적 정의 ( 비 결정적 튜링 머신 기반)를 사용해야합니다 . 이것을 Cook의 정리라고 합니다.
NP- 완전 문제를 중요하게 만드는 것은 결정 론적 다항식 시간 알고리즘이 그 중 하나를 해결하기 위해 발견 될 수 있다면, 모든 NP 문제는 다항식 시간으로 해결할 수 있다는 것입니다 (모든 문제를 다룰 하나의 문제).
직관적으로, 이것은 NP- 완전 문제만큼 어려운 문제 입니다. NP- 하드 문제 는 NP 에 있을 필요는 없으며 결정 문제 일 필요는 없습니다 .
여기서 정확한 정의 는 다항식 시간으로 환원 될 수 있는 NP- 완전 문제가있는 경우 문제 X
가 NP-hard Y
라는 것 Y
입니다X
.
그러나 모든 NP- 완전 문제는 다항식 시간의 다른 NP- 완전 문제로 줄일 수 있으므로 모든 NP- 완전 문제는 다항식 시간의 모든 NP- 완전 문제로 줄일 수 있습니다. 다항식 시간에 하나의 NP-hard 문제에 대한 해결책이 있다면, 다항식 시간에 모든 NP 문제에 대한 해결책이 있습니다.
예
정지 문제는 NP에 하드 문제이다. 이것은 프로그램 P
과 입력 이 주어지면 I
멈추는 문제입니까? 이것은 의사 결정 문제이지만 NP에는 없습니다. NP- 완전 문제는이 문제로 줄어들 수 있습니다. 다른 예로서, NP- 완전 문제는 NP-hard입니다.
내가 가장 좋아하는 NP- 완전 문제는 지뢰 찾기 문제 입니다.
이것은 컴퓨터 과학에서 가장 유명한 문제이며 수학에서 가장 중요한 뛰어난 질문 중 하나입니다. 실제로, Clay Institute 는이 문제에 대한 해결책으로 백만 달러를 제공하고 있습니다 ( Clay 웹 사이트에 Stephen Cook의 글 은 상당히 좋습니다).
P는 NP의 부분 집합임이 분명하다. 열린 문제는 NP 문제에 결정적인 다항식 시간 솔루션이 있는지 여부입니다. 그들이하지 않는 것으로 크게 믿어집니다. 다음은 P = NP 문제의 최신 (및 중요성)에 관한 뛰어난 최근 기사 입니다. P 대 NP 문제의 상태 .
주제에 관한 최고의 책은 Garey와 Johnson의 Computers and Intractability 입니다.
나는 주변을 둘러보고 많은 긴 설명을 보았습니다. 다음은 요약하는 데 유용한 작은 차트입니다.
어떻게 바닥에 어려움이 증가 상단 공지 사항 : 어떤 NP가 완료 NP-로 감소 될 수있다 , 어떤 NP 완성은 NP-하드로 줄일 수있다 P (다항식) 시간에 모든.
P 시간에서 더 어려운 문제 클래스를 해결할 수 있다면, P 시간에서 더 쉬운 모든 문제를 해결하는 방법을 발견했음을 의미합니다 (예 : P = NP 증명). P 시간).
____________________________________________________________ | 문제 유형 | P 시간으로 검증 가능 | P 시간으로 해결 | 난이도 증가 ___________________________________________________________ | | | P | 예 | 예 | | | NP | 예 | 예 또는 아니오 * | | | NP- 완료 | 예 | 불명 | | | NP- 하드 | 예 또는 아니요 ** | 알 수없는 *** | | ____________________________________________________________ V
참고 사항 Yes
또는 No
항목 :
또한 이 다이어그램이 이러한 유형이 모두 서로 어떻게 일치하는지 보는 데 매우 유용하다는 것을 알았습니다 (다이어그램의 왼쪽 절반에 더 많은주의를 기울이십시오).
이것은 질문에 대한 매우 비공식적 인 답변입니다.
3233을 1보다 큰 다른 두 숫자의 곱으로 쓸 수 있습니까? Königsberg 의 7 개 다리를 두 번 밟지 않고 길을 걷는 방법이 있습니까? 다음은 일반적인 특성을 공유하는 질문의 예입니다. 답을 효율적으로 결정하는 방법은 분명하지 않지만 대답이 '예'인 경우 짧고 빠른 증거를 확인할 수 있습니다. 첫 번째 경우에 51의 사소한 인수 분해; 두 번째로, 다리를 걷는 경로 (제한 조건에 적합).
의사 결정 문제는 예와 질문이나 하나 개의 매개 변수 만 변화없이 대답의 모음입니다. COMPOSITE = { " n
composite": n
is is integer} 또는 EULERPATH = { "문제에 그래프 G
에 오일러 경로가 있습니까?": G
유한 그래프입니다} 라고 말합니다 .
이제 일부 의사 결정 문제는 명백한 알고리즘은 아니지만 효율적입니다. Euler는 250 년 전에 "Königsberg의 7 개 교량"과 같은 문제에 대한 효율적인 알고리즘을 발견했습니다.
반면에 많은 의사 결정 문제의 경우 답을 얻는 방법은 분명하지 않지만 추가 정보를 알고 있다면 정답을 얻는 방법을 분명히 알 수 있습니다. COMPOSITE는 다음과 같습니다 : 시험 분할은 명백한 알고리즘이며 속도가 느립니다. 10 자리 숫자를 고려하려면 100,000 개의 제수와 같은 것을 시도해야합니다. 그러나 예를 들어 누군가 61이 3233의 제수라고 말하면 간단한 긴 나눗셈이 올바른지 알 수있는 효율적인 방법입니다.
복잡도 클래스 NP 는 '예'답변이 상태가 짧고 증거를 빠르게 확인할 수있는 의사 결정 문제의 클래스입니다. 컴포지트처럼. 한 가지 중요한 점은이 정의가 문제가 얼마나 어려운지에 대해 아무 말도하지 않는다는 것입니다. 의사 결정 문제를 해결할 수있는 정확하고 효율적인 방법이 있다면 솔루션의 단계를 적어두면 충분합니다.
알고리즘 연구가 계속되고 새로운 영리한 알고리즘이 항상 만들어집니다. 오늘날 효율적으로 해결하는 방법을 모를 수있는 문제는 내일에 효율적인 (명확하지는 않지만) 솔루션을 제공하는 것으로 판명 될 수 있습니다. 실제로 2002 년 까지 컴포지트에 대한 효율적인 솔루션을 찾기 위해 연구원 들이 필요했습니다! 이 모든 진보와 함께, 우리는 정말로 궁금하게 생각해야합니다. 어쩌면 모든 효율적인 증거라는 것으로 결정의 문제는 효율적인 솔루션을? 아무도 모른다 .
아마도이 분야에서 가장 큰 기여는 독특한 종류의 NP 문제를 발견 한 것이었을 것이다. Stephen Cook은 계산을 위해 회로 모델을 가지고 놀면서 다른 모든 NP 문제 보다 어렵거나 어려운 NP 종류의 결정 문제를 발견했습니다 . 에 대한 효율적인 솔루션 충족 가능성 문제가 에 대한 효율적인 솔루션을 만드는 데 사용할 수있는 다른 NP에 문제가. 얼마 후, Richard Karp은 여러 가지 다른 결정 문제가 동일한 목적을 달성 할 수 있음을 보여주었습니다. NP에서 "가장 어려운"문제인 이러한 문제는 NP- 완전 문제 로 알려졌습니다 .
물론 NP는 의사 결정 문제의 한 종류 일뿐입니다. "N의 요인 찾기", "모든 정점을 방문하는 그래프 G에서 최단 경로 찾기", "다음 부울 식을 참이되게하는 변수 할당 세트를 제공하십시오"와 같은 많은 문제가 자연스럽게 언급되지 않습니다. "NP에서"이러한 문제에 대해 비공식적으로 이야기 할 수도 있지만 기술적으로는 의미가없는 것이 결정 문제가 아닙니다. 이러한 문제 중 일부는 NP- 완전 문제와 동일한 종류의 전력을 가질 수도 있습니다. 이러한 (비 결정적) 문제에 대한 효율적인 솔루션은 모든 NP 문제에 대한 효율적인 솔루션으로 직접 이어질 것입니다. 이와 같은 문제를 NP-hard 라고 합니다.
P (다항식 시간) : 이름 자체에서 알 수 있듯이 다항식 시간으로 해결할 수있는 문제입니다.
NP (비 결정적 다항식 시간) : 다항식 시간으로 확인할 수있는 결정 문제입니다. 즉, 특정 문제에 대한 다항식 시간 솔루션이 있다고 주장하면이를 증명하도록 요청하십시오. 그런 다음 다항식 시간으로 쉽게 확인할 수있는 증거를 제공합니다. 이러한 종류의 문제를 NP 문제라고합니다. 여기서 우리는이 문제에 대한 다항식 시간 솔루션이 있는지 여부에 대해 이야기하지 않습니다. 그러나 우리는 다항식 시간에 주어진 문제에 대한 해결책을 검증하는 것에 대해 이야기하고 있습니다.
NP-Hard : NP에서 가장 어려운 문제만큼 어렵습니다. 다항식 시간으로 이러한 문제를 해결할 수 있다면 존재할 수있는 NP 문제를 해결할 수 있습니다. 이러한 문제가 반드시 NP 문제인 것은 아닙니다. 즉, 우리는 다항식 시간에 이러한 문제에 대한 해결책을 확인할 수 있습니다.
NP-Complete : NP와 NP-Hard의 문제점입니다. 즉, 이러한 문제를 해결할 수 있으면 다른 NP 문제를 해결할 수 있으며 이러한 문제에 대한 솔루션을 다항식 시간으로 확인할 수 있습니다.
다른 훌륭한 답변 외에도 다음은 사람들이 NP, NP-Complete 및 NP-Hard의 차이점을 보여주기 위해 사용 하는 일반적인 스키마입니다 .
기술을 익히지 않고 Pv. NP 등을 설명하는 가장 쉬운 방법은 "단어 문제"와 "다중 선택 문제"를 비교하는 것입니다.
"단어 문제"를 해결하려고 할 때 해결책을 처음부터 찾아야합니다. "다중 선택 문제"를 해결하려고 할 때 "단어 문제"와 같이 해결하거나 각 답변을 연결하고 적합한 후보 답변을 선택하십시오.
"복수 선택 문제"는 해당 "단어 문제"보다 훨씬 쉽습니다. 후보 답변을 대체하고 적합한 지 확인하는 것은 처음부터 올바른 답변을 찾는 것보다 훨씬 적은 노력이 필요할 수 있습니다.
이제 우리가 다항식 시간을 "쉬운"소요하는 노력에 동의한다면, 클래스 P는 "쉬운 단어 문제"로 구성되고 클래스 NP는 "쉬운 객관식 문제"로 구성됩니다.
P. NP의 본질은 "단어 문제로는 쉽지 않은 쉬운 객관식 문제가 있습니까?"라는 질문입니다. 즉, 주어진 답변의 유효성을 쉽게 확인할 수 있지만 처음부터 그 답을 찾기가 어려운 문제가 있습니까?
NP가 무엇인지 직관적으로 이해 했으므로 직관에 도전해야합니다. 어떤 의미에서 가장 어려운 "복수 선택 문제"가 있다는 것이 밝혀졌습니다. 만약 그 "가장 어려운"문제 중 하나에 대한 해결책을 찾게되면 ALL에 대한 해결책을 찾을 수있을 것입니다 NP 문제! Cook이이 40 년 전에 발견 한 것은 완전히 놀랍습니다. 이러한 "가장 어려운"문제는 NP- 하드라고합니다. 당신이 그들 중 하나에 "단어 문제 해결"을 찾으면 자동적으로 각각 "모든 쉬운 선택 선택 문제"에 대해 "단어 문제 해결"을 찾을 것입니다!
마지막으로 NP- 완전 문제는 NP와 NP-hard 문제입니다. 우리의 비유에 따르면, 그것들은 동시에 "다중 선택 문제처럼 쉬움"과 "어려움 문제로 가장 어려운 것"입니다.
NP- 완전 문제는 NP-Hard 및 복잡성 클래스 NP에있는 문제입니다. 따라서 주어진 문제가 NP- 완전하다는 것을 나타내려면 문제가 NP에 있고 NP-hard라는 것을 보여 주어야합니다.
NP 복잡성 클래스에있는 문제는 다항식 시간으로 비 결정적으로 해결 될 수 있으며 NP 문제에 대한 가능한 솔루션 (즉, 인증서)은 다항식 시간의 정확성을 검증 할 수 있습니다.
k-clique 문제에 대한 비 결정적 솔루션의 예는 다음과 같습니다.
1) 그래프에서 k 개의 노드를 무작위로 선택
2)이 k 개의 노드가 경사를 형성하는지 확인하십시오.
위의 전략은 입력 그래프의 크기에서 다항식이므로 k-clique 문제는 NP에 있습니다.
다항식 시간으로 결정 가능하게 해결할 수있는 모든 문제는 NP에도 있습니다.
문제가 NP-hard임을 보여주는 것은 일반적으로 다항식 시간 매핑을 사용하여 다른 NP-hard 문제를 문제로 축소하는 것입니다. http://en.wikipedia.org/wiki/Reduction_(complexity)
훨씬 간결하게 대답 할 수 있다고 생각합니다. 나는 대답 관련 질문 답변을 복사했습니다.
그러나 우선 NP- 하드 문제는 다항식 시간 솔루션이 존재한다는 것을 증명할 수없는 문제입니다. 일부 "problem-P"의 NP-hardness는 일반적으로 이미 입증 된 NP-hard 문제를 다항식 시간의 "problem-P"로 변환하여 입증됩니다.
나머지 질문에 대답하려면 먼저 어떤 NP-hard 문제가 NP-complete인지 이해해야합니다. NP 하드 문제가 NP 설정에 속하면 NP 완료입니다. NP 설정에 속하려면 문제는
(i) 결정 문제,
(ii) 문제에 대한 해의 수는 유한해야하며 각 해는 다항식 길이 여야합니다.
(iii) 다항식 길이 해를 주면 문제는 예 / 아니오이제 NP 설정에 속하지 않고 해결하기 어려운 많은 NP-hard 문제가 있음을 쉽게 알 수 있습니다. 직관적 인 예로, 실제 일정을 찾아야하는 출장 세일즈맨의 최적화 버전은 길이가 <= k 인 일정이 있는지 여부를 결정해야하는 출장 세일즈맨의 의사 결정 버전보다 어렵습니다.
내가 이해하는 바와 같이, np-hard 문제는 np-complete 문제 보다 "더 어렵지"않다 . 실제로 정의상 모든 np-complete 문제는 다음과 같습니다.
-소개. Cormen, Leiserson, Rivest 및 Stein의 알고리즘 (3ed) 관련, 1069 페이지
I
하고n
변수에2^n
가능한 모든 할당을 시도 하고 제안을 만족하는 경우 중지하고 그렇지 않으면 무한 루프를 입력하십시오.I
만족할 수있는 경우에만이 알고리즘이 중지된다는 것을 알 수 있습니다. 따라서 정지 문제를 해결하기위한 다항식 시간 알고리즘이 있다면 다항식 시간으로 SAT를 해결할 수 있습니다. 따라서 정지 문제는 NP-hard입니다.