Programing

컴퓨터 과학에서 NP-complete 란 무엇입니까?

lottogame 2020. 2. 22. 11:24
반응형

컴퓨터 과학에서 NP-complete 란 무엇입니까?


NP- 완전 문제는 무엇입니까? 컴퓨터 과학에서 왜 그렇게 중요한 주제입니까?


NP비 결정적 다항식 시간을 나타냅니다 .

이는 비 결정적 튜링 머신 (일반적인 튜링 머신과 마찬가지로 비 결정적 "선택"기능 포함)을 사용하여 다항식 시간에 문제를 해결할 수 있음을 의미합니다. 기본적으로 솔루션은 폴리 타임 으로 테스트 할 수 있어야 합니다. 이 경우 수정 된 입력으로 주어진 문제를 사용하여 알려진 NP 문제를 해결할 수있는 경우 (NP 문제는 주어진 문제 축소 될 수 있음 ) 문제는 NP 완료입니다.

NP- 완전 문제에서 벗어나는 가장 중요한 것은 알려진 방법으로 다항식 시간으로 해결할 수 없다는 것입니다. NP-Hard / NP-Complete는 특정 클래스의 문제를 현실적으로 해결할 수 없다는 것을 보여주는 방법입니다.

편집 : 다른 사람들이 지적했듯이 NP-Complete 문제에 대한 근사 솔루션이 종종 있습니다. 이 경우 근사 솔루션은 일반적으로 근사값이 얼마나 가까운지를 알려주는 특수 표기법을 사용하여 근사값을 제공합니다.


NP 란 무엇입니까 ?

NP는 '예'-답 을 다항식 시간 (O (n k ) 으로 검증 할 수있는 모든 결정 문제 (예 또는 대답이없는 질문)의 집합 이며, 여기서 n 은 문제 크기이고 k결정적 튜링 머신에 의해) . 다항식 시간이 때로는 정의로 사용되는 고속 또는 빠르게 .

P 란 무엇입니까 ?

P가 될 수있는 모든 결정 문제의 집합 인 해결다항식 시간 a로 결정 튜링 기계 . 다항식 시간으로 풀 수 있으므로 다항식 시간으로도 확인할 수 있습니다. 따라서 P는 NP의 하위 집합입니다.

NP-Complete 란 무엇입니까 ?

NP에있는 모든 문제 x가 NP로 신속하게 (즉, 다항식 시간으로) 변환 될 수있는 경우에만 NP에있는 문제 x도 NP- 완료에 있습니다.

다시 말해:

  1. x는 NP에 있고
  2. NP의 모든 문제는 x 환원 가능

따라서 NP-Complete을 매우 흥미롭게 만드는 것은 NP-Complete 문제 중 하나를 신속하게 해결하면 모든 NP 문제를 신속하게 해결할 수 있다는 것입니다.

"P = NP 란 무엇입니까?" 게시물을 참조하십시오. 왜 그렇게 유명한 질문입니까?

NP-Hard 란 무엇입니까 ?

NP-Hard는 최소한 NP에서 가장 어려운 문제만큼 어려운 문제입니다. NP-Complete 문제도 NP-hard입니다. 그러나 NP접두사로 사용 하더라도 모든 NP-hard 문제가 NP (또는 의사 결정 문제) 인 것은 아닙니다 . 즉 NP-hard의 NP는 비 결정적 다항식 시간을 의미하지 않습니다 . 그렇습니다. 혼란 스럽지만 사용법이 변경되어 변경 될 가능성이 없습니다.


NP-Complete은 매우 구체적인 것을 의미하므로주의해야합니다. 그렇지 않으면 정의가 잘못 될 것입니다. 첫째, NP 문제는 다음과 같은 예 / 아니오 문제입니다.

  1. 답이 "예"라는 "예"대답 또는 (동등한) 문제의 모든 인스턴스에 대해 다항식 시간 증명이 있습니다.
  2. 문제의 인스턴스에 대한 답변이 "예"인 경우 "예"라고 대답 할 확률이 0이 아닌 다항식 시간 알고리즘 (임의 변수를 사용하는 경우도 있음)이 있으며 100 %의 경우 "아니오"라고 표시합니다 내 대답은 아니오 야." 다시 말해, 알고리즘은 100 % 미만의 오 음률이어야하고 오 탐지가 없어야합니다.

문제 X는 NP- 완료

  1. X는 NP에 있고
  2. NP의 모든 문제 Y에 대해 Y에서 X 로의 "감소"가 있습니다. 다항식 시간 알고리즘은 Y의 인스턴스를 X의 인스턴스로 변환하여 Y 인스턴스에 대한 응답이 "예"인 경우에만 X- 인스턴스가 "예"인 경우

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입니다. 사과 계산 알고리즘을 사용하여 다항식 시간으로이 답변을 확인할 수 있습니다. 사과 수는 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. NP 문제는 비 결정적 다항식 시간에 해결할 수있는 문제입니다.
  2. 비 결정적 알고리즘은 두 단계로 작동합니다.
  3. 비 결정적 추측 단계 및 비 결정적 검증 단계.

Np 문제의 유형

  1. NP 완료
  2. NP 하드

NP 완전한 문제 :-

1 결정 문제 A는 다음 두 가지 특성이있는 경우 NP 완료라고합니다.

  1. NP 클래스에 속합니다.
  2. NP의 다른 모든 문제는 다항식 시간에 P로 변환 될 수 있습니다.

일부 전 :-

  • 배낭 문제
  • 부분 집합 합계 문제
  • 정점 취재 문제

NP- 완전 문제는 다항식 시간으로 다른 NP 문제를 줄일 수 있고, 다항식 시간으로 솔루션을 확인할 수있는 일련의 문제입니다. 즉, 모든 NP 문제는 NP- 완전 문제로 변환 될 수 있습니다. – 비공식적으로, NP- 완전 문제는 적어도 NP의 다른 문제만큼 "거친"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 문제는 솔루션을 검증하는 컴퓨터 알고리즘이 다항식 시간에 생성 될 수있는 문제입니다.

NP-Complete 문제는 NP이지만 다항식 시간 (P)으로 해결할 수 있다면 모든 NP 문제는 P입니다.

금이 간다.

참고 URL : https://stackoverflow.com/questions/210829/what-is-an-np-complete-in-computer-science



반응형