우리는 글에 대해 효율적인 알고리즘의 복잡한 문제를 해결하기 위해,다음과 같은 짧은 경로,오일러 그래프,minimum spanning tree,etc. 그것들은 모두 알고리즘 디자이너의 성공 사례였습니다. 이 게시물에서는 컴퓨터 과학의 실패 이야기가 논의됩니다.
컴퓨터로 모든 계산 문제를 해결할 수 있습니까? 무제한 시간으로도 알고리즘으로 해결할 수없는 계산상의 문제가 있습니다. 예를 들어링 정지 문제는(주어진 프로그램의 입력,는지 여부를 프로그램이 결국 halt 실행하는 경우와 함께하는 입력,또는 실행됩니다 영원히). Alan Turing 입증하는 일반 알고리즘을 해결하는 중단에 대한 문제이 가능한 모든 프로그램-입력 쌍으로 존재할 수 없습니다. 증명의 핵심 부분은 튜링 기계가 컴퓨터와 프로그램(소스 정지 문제)의 수학적 정의로 사용되었다는 것입니다.
NP Complete problems 의 상태는 또 다른 실패 이야기이며,NP complete problems 는 상태가 알려지지 않은 문제입니다. 지 않은 다항식 시간 알고리즘은 아직 발견되는 모든 NP 완전한 문제도 아니고는 누구는 아직 할 수 있다는 사실을 입증할 다항식 시간 알고리즘을 위해 존재합니다. 흥미로운 부분은 NP 완전한 문제 중 어느 하나가 다항식 시간에 해결 될 수 있다면 모두 해결할 수 있다는 것입니다.np,P,NP-complete 및 NP-Hard 문제는 무엇입니까?
P 는 다항식 시간에 결정 론적 튜링 기계에 의해 해결 될 수있는 문제의 집합입니다.
NP 는 다항식 시간에 비 결정적 튜링 기계로 해결할 수있는 결정 문제 세트입니다. P 는 하위 집합의 NP(모든 문제를 해결할 수 있는 결정 기계에서 다항식 시간을 수도 있습 해결에 의해 결정적이지 않은 기계에서 다항식 시간).
비공식적으로,NP 는 설정의 결정될 수 있는 문제 해결에 의해 다항식 시간을 통해”행운의 알고리즘”,마법의 알고리즘에는 항상 옳은 추측을 가진 세트 선택(소스 Ref1)입니다.
NP-complete 문제는 NP 세트에서 가장 어려운 문제입니다. 의사 결정 문제 L 은 NP-complete 인 경우:
1)L 은 NP 에 있습니다(NP-complete 문제에 대한 주어진 솔루션은 신속하게 확인할 수 있지만 효율적인 알려진 솔루션은 없습니다).
2)NP 의 모든 문제는 다항식 시간에서 L 로 환원 가능합니다(감소는 아래에 정의되어 있습니다).위에서 언급 한 속성 2 를 따르는 경우 속성 1 을 따를 필요가 없으므로 문제가 NP-Hard 입니다. 따라서 NP-Complete set 은 NP-Hard set 의 하위 집합이기도합니다.
결정 대 최적화 문제
NP-완전성은 결정 문제의 영역에 적용됩니다. 최적화 문제보다 의사 결정 문제의 난이도를 비교하는 것이 더 쉽기 때문에이 방법으로 설정되었습니다. 현실에서 하지만,를 해결할 수 있는 의사 결정 문제에서 다항식 시간이 종종하여 우리가 해결해 해당 최적화 문제는 다항식 시간(를 사용하여 다항식 통화 횟수를 결정이 문제). 따라서 의사 결정 문제의 어려움을 논의하는 것은 종종 최적화 문제의 어려움을 논의하는 것과 실제로 동일합니다. (소스 참조 2).
예를 들어 정점은 문제를 커버(그래프 제공 찾을 최소 크기의 꼭지점 설정을 커버하는 모든 가장자리). 그것은 최적화 문제입니다. 해당 결정 문제는 무향 그래프 G 와 k 가 주어지면 크기 k 의 정점 덮개가 있습니까?
감소 란 무엇입니까?
L1 과 L2 는 두 가지 결정 문제가되도록하십시오. 알고리즘 A2 가 L2 를 해결한다고 가정합니다. 즉,y 가 L2 에 대한 입력 인 경우 알고리즘 A2 는 y 가 L2 에 속하는지 아닌지에 따라 예 또는 아니오로 대답합니다.
아이디어는 알고리즘 A2 가 l1 을 해결하는 알고리즘 A1 의 일부가 될 수 있도록 L1 에서 L2 로의 변환을 찾는 것입니다.
일반적으로 학습 감소는 매우 중요합니다. 는 경우,예를 들어,우리는 라이브러리 함수를 해결하는 특정 문제 및면 우리가 감소할 수 있는 새로운 문제의 해결 문제,우리는 많은 시간을 저장. 예를 고려의 문제가 어디 우리를 찾을 수있는 최소 제품에 경로를 지정된 방향 그래프는 제품의 경로는 곱셈의 무게의 가장자리를 따라 경로입니다. 만약 우리가 코드에 대한 dijkstra 알고리즘을 찾을 수 있는 가장 짧은 경로를,우리가 할 수 있습 로그의 모든 무게 사용 dijkstra 알고리즘을 찾기 위해 최소한 제품의 경로를 작성하는 것보다는 신선한 코드에 대한 새로운 문제입니다.주어진 문제가 NP 완료임을 증명하는 방법은 무엇입니까?
NP-complete 의 정의에서 문제 L 이 NP-Complete 임을 증명하는 것은 불가능한 것처럼 보입니다. 정의에 의하여,그것을 우리를 필요로하는 표시에 모든 문제에 NP 은 다항식 시간을 줄일 수 L. 다행히도 대체 방법으로 그것을 증명합니다. 아이디어는 알려진 NP-Complete 문제를 취하여 L 로 줄이는 것입니다. 는 경우 다항식 시간 감소 가능한,우리는 것을 증명할 수 있습 L 은 NP-Complete 의 이행의 감소한 경우(NP-Complete 문제는 줄이할 L 에서 다항식 시간을,그 다음의 모든 문제는 줄이할 L 에서 다항식 시간).
np-Complete 로 입증 된 첫 번째 문제는 무엇입니까?
NP-Complete 문제의 정의에 의해 입증 된 최초의 NP-Complete 문제가 있어야합니다. SAT(Boolean satisfiability problem)는 Cook 이 입증 한 최초의 NP-Complete 문제입니다(증명은 CLRS book 참조).
엔지니어에게도 NP-완전성에 대해 아는 것이 항상 유용합니다. 귀사에서 매우 중요한 문제를 해결하기 위해 효율적인 알고리즘을 작성하도록 요청 받았다고 가정 해보십시오. 많은 생각을 한 후에,당신은 단지 실용적이지 않은 기하 급수적 인 시간 접근법을 생각해 낼 수 있습니다. 당신은 NP-완전성에 대해 모르는 경우,당신은 단지 내가 효율적인 알고리즘으로 올 수 없다고 말할 수있다. 에 대해 알고 있는 경우 NP 완전성을 증명하는 문제로 NP-complete,할 수 있는 자랑스럽게 말하는 것은 다항식 시간을 솔루션은 가능성이 존재합니다. 이 있는 경우 다항식 시간을 솔루션은 가능한 그는 솔루션은 큰 문제를 해결 컴퓨터 과학의 많은 과학자 노력 해왔다.
우리는 곧 더 많은 NP-Complete 문제와 NP-Complete 에 대한 증거를 논의 할 것입니다.