NP- 완전 문제는 무엇입니까? 컴퓨터 과학에서 왜 그렇게 중요한 주제입니까?
NP- 완전 문제는 무엇입니까? 컴퓨터 과학에서 왜 그렇게 중요한 주제입니까?
답변:
NP 는 비 결정적 다항식 시간을 나타냅니다 .
이는 비 결정적 튜링 기계 (일반적인 튜링 기계와 마찬가지로 비 결정적 "선택"기능 포함)를 사용하여 다항식 시간에 문제를 해결할 수 있음을 의미합니다. 기본적으로 솔루션은 폴리 타임 으로 테스트 할 수 있어야 합니다. 이 경우 수정 된 입력으로 주어진 문제를 사용하여 알려진 NP 문제를 해결할 수있는 경우 (NP 문제는 주어진 문제 로 축소 될 수 있음 ) 문제는 NP 완료입니다.
NP- 완전 문제에서 벗어나는 가장 중요한 것은 알려진 방법으로 다항식 시간으로 해결할 수 없다는 것입니다. NP-Hard / NP-Complete는 특정 클래스의 문제를 현실적으로 해결할 수 없다는 것을 보여주는 방법입니다.
편집 : 다른 사람들이 지적했듯이 NP-Complete 문제에 대한 대략적인 해결책이 종종 있습니다. 이 경우 근사 솔루션은 일반적으로 근사값이 얼마나 가까운지를 알려주는 특수 표기법을 사용하여 근사값을 제공합니다.
순이익은 모두의 집합입니다 의사 결정 문제 'yes'-답변이 될 수있는 (예스 또는 노 대답과 질문) 검증 다항식 시간 (O (n이 K ) 여기서 n은 문제의 크기이며, k는 A는 결정적 튜링 머신에 의해) . 다항식 시간이 때로는 정의로 사용되는 고속 또는 빠르게 .
P가 될 수있는 모든 결정 문제의 집합 인 해결 의 다항식 시간 a로 결정 튜링 기계 . 다항식 시간으로 풀 수 있으므로 다항식 시간으로도 확인할 수 있습니다. 따라서 P는 NP의 하위 집합입니다.
NP에있는 모든 문제 x가 NP로 신속하게 (즉, 다항식 시간으로) 변환 될 수있는 경우에만 NP에있는 문제 x도 NP- 완료에 있습니다.
다시 말해:
따라서 NP-Complete을 매우 흥미롭게 만드는 것은 NP-Complete 문제 중 하나를 신속하게 해결하면 모든 NP 문제를 신속하게 해결할 수 있다는 것입니다.
"P = NP 란 무엇입니까?" 게시물을 참조하십시오. 왜 그렇게 유명한 질문입니까?
NP-Hard는 최소한 NP에서 가장 어려운 문제만큼 어려운 문제입니다. NP-Complete 문제도 NP-hard입니다. 그러나 NP
접두사로 사용 하더라도 모든 NP-hard 문제가 NP (또는 의사 결정 문제) 인 것은 아닙니다 . 즉 NP-hard의 NP는 비 결정적 다항식 시간을 의미하지 않습니다 . 그렇습니다. 혼란 스럽지만 사용법이 변경되어 변경 될 가능성이 없습니다.
NP-Complete은 매우 구체적인 것을 의미하므로주의해야합니다. 그렇지 않으면 정의가 잘못 될 것입니다. 첫째, NP 문제는 다음과 같은 예 / 아니오 문제입니다.
문제 X는 NP- 완료
X가 NP- 완전하고 X의 모든 인스턴스를 올바르게 해결할 수있는 결정 론적 다항식 시간 알고리즘이 존재하면 (0 % 오탐, 0 % 오음) 결정 론적 다항식에서 NP의 모든 문제를 해결할 수 있습니다. 시간 (X로 감소).
지금까지 아무도 그러한 결정 론적 다항식 시간 알고리즘을 생각해 냈지만 아무도 존재하지 않는다는 것을 입증 한 사람은 없습니다 ( P = NP 문제입니다 ). 그렇다고 NP-Complete (또는 NP-Hard) 문제의 특정 인스턴스를 해결할 수 없다는 의미는 아닙니다. 정수 목록을 안정적으로 정렬하는 것과 같은 방식으로 문제의 모든 인스턴스에서 안정적으로 작동하는 것을 가질 수 없다는 것을 의미합니다. NP-Hard 문제의 모든 실제 사례에서 매우 잘 작동하는 알고리즘을 만들 수있을 것입니다.
기본적으로이 세계의 문제는 다음과 같이 분류 될 수 있습니다.
1) 해결할 수없는 문제 2) 다루기 어려운 문제 3) NP 문제 4) P 문제
1) 첫 번째는 문제에 대한 해결책이 아닙니다. 2) 두 번째는 필요한 지수 시간입니다 (즉, 위의 O (2 ^ n)). 3) 세 번째는 NP라고합니다. 4) 네 번째는 쉬운 문제입니다.
P : 다항식 시간 문제의 해를 나타냅니다.
NP : 아직 다항식 시간을 참조하여 솔루션을 찾습니다. 다항식 시간 솔루션이 있는지 확실하지 않지만 일단 솔루션을 제공하면이 솔루션을 다항식 시간으로 확인할 수 있습니다.
NP Complete : 아직 다항식 시간으로 솔루션을 찾지 못했지만 다항식 시간으로 확인할 수 있습니다. NP의 NPC 문제는 더 어려운 문제이므로 NPC 문제에 대한 P 솔루션이 있음을 증명할 수 있으면 P 솔루션에서 찾을 수있는 NP 문제가 있습니다.
NP Hard : 다항식 시간이 아직 솔루션을 찾지 못했지만 다항식 시간으로 검증 할 수 없음을 나타냅니다. NP 하드 문제는 NPC 난이도를 능가합니다.
NP-Complete은 일련의 문제입니다.
이 클래스 P
는 다항식 시간에 해결할 수있는 문제로 구성됩니다 . 예를 들어, 상수 k에 대해 O (n k ) 로 풀 수 있습니다 . 여기서 n 은 입력 크기입니다. 간단히 말해 합리적인 시간에 실행되는 프로그램을 작성할 수 있습니다 .
이 클래스 NP
는 다항식 시간 으로 확인할 수 있는 문제로 구성됩니다 . 즉, 우리가 잠재적 솔루션을 제공하면 주어진 솔루션이 다항식 시간에 올바른지 확인할 수 있습니다.
일부 예는 부울 만족도 (또는 SAT ) 문제 또는 해밀턴 사이클 문제입니다. NP 클래스에있는 것으로 알려진 많은 문제가 있습니다.
NP-Complete
문제 수단 적어도 NP에 문제로 열심히.
NP의 문제가 NP-complete의 다른 문제 로 변환 될 수 있다는 것이 입증되었으므로 컴퓨터 과학에 중요합니다 . 즉, 하나의 NP- 완전 문제에 대한 해결책은 모든 NP 문제에 대한 해결 책임을 의미합니다.
보안의 많은 알고리즘은 NP 하드 문제에 대한 알려진 솔루션이 없다는 사실에 달려 있습니다. 솔루션이 발견되면 컴퓨팅에 큰 영향을 줄 것입니다.
최적의 솔루션을 확보하기 위해 모든 가능성을 시뮬레이션해야하는 일련의 문제입니다.
일부 NP-Complete 문제에 대해 좋은 휴리스틱이 많이 있지만, 그들은 단지 교육받은 추측 일뿐입니다.
NP- 완전 문제의 예를 찾고 있다면 3-SAT를 살펴보십시오 .
기본 전제는 결합 정규 형식 의 표현식을 사용 하는 것입니다. 이는 OR에 의해 결합 된 일련의 표현식이 모두 참이어야한다는 것을 의미합니다.
(a or b) and (b or !c) and (d or !e or f) ...
3-SAT 문제는 각 OR- 표현식이 정확히 3 개의 부울 값을 갖는 표현식을 만족시키는 솔루션을 찾는 것입니다.
(a or !b or !c) and (!a or b or !d) and (b or !c or d) ...
이것에 대한 해결책은 (a = T, b = T, c = F, d = F) 일 수 있습니다. 그러나 일반적인 경우 다항식 시간에서이 문제를 해결하는 알고리즘이 발견되지 않았습니다. 이것이 의미하는 바는이 문제를 해결하는 가장 좋은 방법은 기본적으로 무차별 대입 추측 및 검사를 수행하고 작동하는 조합을 찾을 때까지 다른 조합을 시도하는 것입니다.
3-SAT 문제의 특별한 점은 모든 NP- 완전 문제를 3-SAT 문제로 줄일 수 있다는 것입니다. 즉,이 문제를 해결하기 위해 다항식 시간 알고리즘을 찾을 수 있다면 전 세계 컴퓨터 과학자와 수학자의 존경과 감탄은 말할 것도없이 $ 1,000,000 를 얻게 됩니다.
솔직히 Wikipedia 가 이에 대한 답을 찾는 가장 좋은 장소 일 수 있습니다.
NP = P이면 이전에 생각했던 것보다 훨씬 더 어려운 문제를 훨씬 빨리 해결할 수 있습니다. P (다항식) 시간에 한 개의 NP-Complete 문제 만 해결하면 NP-Complete 범주의 다른 모든 문제에 적용될 수 있습니다.
알고리즘과 문제를 분리해야합니다. 우리는 문제를 해결하기 위해 알고리즘을 작성하고 특정 방식으로 확장합니다. 이것은 간단하지만 스케일링이 충분하면 'P', 그렇지 않으면 'NP'로 알고리즘에 레이블을 지정합니다.
문제를 해결하는 데 사용하는 알고리즘이 아니라 해결하려는 문제에 대해 알아야합니다. 따라서 스케일링 알고리즘이 좋은 모든 문제는 "in P"라고합니다. 스케일링 알고리즘이 불량한 것은 "NP"입니다.
이는 쉬운 문제를 해결하기 위해 잘못된 알고리즘을 작성할 수 있기 때문에 많은 간단한 문제가 "NP"에 있다는 것을 의미합니다. NP의 어떤 문제가 정말 까다로운 문제인지 아는 것이 좋지만, "좋은 알고리즘을 찾지 못한 문제"라고 말하고 싶지는 않습니다. 결국, 나는 슈퍼 놀라운 알고리즘이 필요하다고 생각하는 문제 (X라고 부름)를 생각 해낼 수 있습니다. 나는 X 스케일을 심하게 해결하기 위해 취할 수있는 최고의 알고리즘을 세계에 알려주므로 X는 정말 어려운 문제라고 생각합니다. 그러나 내일, 누군가 나보다 똑똑한 사람은 X를 해결하고 P에있는 알고리즘을 발명했을 것입니다. 따라서 이것은 어려운 문제에 대한 좋은 정의는 아닙니다.
똑같이 NP에는 아무도 좋은 알고리즘을 알지 못하는 많은 문제가 있습니다. 그래서 내가 할 수 있다면 입증 좋은 알고리즘이 X이 수 해결하는 하나의 X는 문제의 특정 종류의 것을 도 에 대한 좋은 알고리즘을 제공하기 위해, 일부 로터리 방식으로 사용할 수 있는 모든 NP에있는 다른 문제가. 이제 사람들은 X가 정말로 까다로운 문제라고 조금 더 확신 할 수 있습니다. 이 경우 X NP-Complete이라고합니다.
위의 NP 완전 문제에 대한 정의는 정확하지만, 아무도 그 문제를 아직 해결하지 못했기 때문에 철학적 중요성에 대해 서정적이라고 생각할 수 있습니다.
발생하는 거의 모든 복잡한 문제는 NP Complete입니다. 이 클래스에는 매우 근본적인 것이 있으며, 쉽게 해결할 수있는 문제와 계산적으로 다른 것처럼 보입니다. 그들은 일종의 맛을 가지고 있으며 그것을 인식하기가 어렵지 않습니다. 이것은 기본적으로 스케줄링, 최적화, 패킹, 커버링 등 정확하게 복잡한 알고리즘을 해결할 수 없다는 것을 의미합니다.
그러나 발생하는 문제가 NP Complete 인 경우 모든 것이 손실되지는 않습니다. 사람들이 근사 알고리즘을 연구하는 방대하고 매우 기술적 인 분야가 있으며, 이는 NP 완전한 문제의 해결책에 가깝다는 보장을 줄 것입니다. 이 중 일부는 엄청나게 강력한 보증입니다. 예를 들어 3sat의 경우 정말 명백한 알고리즘을 통해 7/8 보증을 얻을 수 있습니다. 더 좋은 점은 실제로 이러한 문제에 대해 훌륭한 답변을 제공하는 데 탁월한 강력한 휴리스틱이 있다는 것입니다.
두 가지 매우 유명한 문제인 그래프 동형 및 인수 분해는 P 또는 NP로 알려져 있지 않습니다.
"NP-Completeness는 아마도 알고리즘 연구에서 가장 수수께끼 같은 아이디어 중 하나 일 것입니다."NP "는"비결정론 적 다항식 시간 "을 나타내며, 복잡성 클래스라고하는 이름입니다. NP 복잡성 클래스 의 중요한 점은 해당 클래스 내의 문제를 확인할 수 있다는 것입니다.다항식 시간 알고리즘에 의해. 예를 들어 물건을 세는 문제를 고려하십시오. 테이블에 사과가 많이 있다고 가정 해 봅시다. 문제는 "얼마나 많은 사과가 있습니까?" 가능한 답은 8입니다. 8 사과 계산 알고리즘을 사용하여 다항식 시간으로이 답을 확인할 수 있습니다. 사과 수는 O (n) (Big-oh 표기법) 시간에 발생합니다. 각 사과 수를 한 단계 씩 계산하기 때문입니다. n 사과의 경우 n 단계가 필요합니다. 이 문제는 NP 복잡성 클래스에 있습니다.
문제가 NP-Hard 이고 다항식 시간으로 검증 할 수 있음을 보여줄 수 있으면 문제는 NP- 완료 로 분류됩니다 . NP-Hard에 대한 논의에 너무 깊이 들어 가지 않으면 다항식 시간 솔루션을 찾지 못한 특정 문제가 있다고 말할 수 있습니다. 즉, n과 같은 것이 필요합니다! (n factorial) 단계로 해결합니다. 그러나 NP-Complete 문제에 대한 해결책이 있다면 다항식 시간으로 확인할 수 있습니다.
NP-Complete 문제의 전형적인 예는 Traveling Salesman Problem입니다. "
저자 : ApoxyButt 보낸 사람 : http://www.everything2.com/title/NP-complete
NP 완전한 문제 :-
1 결정 문제 A는 다음 두 가지 특성이있는 경우 NP 완료라고합니다.
일부 전 :-
내가 이해하는 한도에서는
P는 결정 론적 TM으로 다항식 시간에 해결할 수있는 일련의 문제입니다.
NP는 다항식 시간에 해결되기 위해 비 결정적 TM이 필요한 일련의 문제입니다. 이것은 모든 가능한 변수를 병렬로 점검하는 것을 의미하며, 각 인스턴스는 다항식 시간이 걸립니다. 문제를 해결할 수있는 경우 이러한 병렬 상태 중 하나 이상에 문제에 대한 솔루션이 있어야합니다. 이는 또한 솔루션 변수에 대해 추측 한 경우 다항식 시간으로 솔루션의 유효성을 확인하는 것만 필요하다는 것을 의미합니다.
NP-Hard는 문제가 최소한 NP만큼 어려운 곳입니다. NP의 문제는 다항식 시간의 NP-Hard 문제로 변환 될 수 있습니다. P가 NP와 같지 않으면 다항식 시간으로 이러한 문제를 해결할 수 없습니다. 즉 NP에서 가장 어려운 문제가 다항식 시간 해결이 가능한 경우 NP- 하드 문제 만 다항식 시간 해결이 가능합니다.
NP-Complete은 NP와 NP-Hard의 교집합입니다. 모든 NP 문제는 다항식 시간에 NP-Complete 문제로 변형 될 수 있습니다. 즉, NP-Complete 중 하나라도 효율적인 솔루션을 보유 할 수있는 경우 동일한 NP 효율성으로 모든 NP 문제를 해결할 수 있습니다.
실수 한 경우 알려주십시오.