문제가 NP 완전하다는 것을 증명하는 방법은 무엇입니까?


108

일정에 문제가 있습니다. 문제가 NP 완전하다는 것을 증명해야합니다. NP 완료를 증명하는 방법은 무엇입니까?


Karp의 "조합 문제 중 감소 가능성"을 읽으십시오.
— Paul Hankin 2014 년

답변:


146

문제가 NP 완료임을 표시하려면 다음을 수행해야합니다.

NP로 표시

즉, 일부 정보가 주어지면 도메인에 있는지 여부에 관계없이 가능한 모든 입력을 확인 C하는 다항식 시간 알고리즘 V을 만들 수 있습니다 .XX

예

정점 커버 의 문제 (즉, 일부 그래프의 G경우 모든 가장자리 가 커버 세트에 적어도 하나의 정점이있는 크기의 정점 커버 세트가kG 있습니까?)가 NP에 있음을 증명 하십시오 .

  • 입력 X은 그래프 G와 숫자입니다 k(문제 정의에서 가져온 것입니다)

  • 우리의 정보를 가지고 C"그래프의 정점의 가능한 모든 부분 집합으로 G크기 k"

  • 그런 다음 우리는 알고리즘을 쓸 수 V주어진 G, k그리고 C정점의 집합에 대한 정점 커버 있는지 여부를 반환합니다, G에, 또는하지 다항식 시간 .

그런 다음 모든 그래프 G에 대해 정점 커버 인 " G크기 의 정점의 가능한 하위 집합 k"이 G있으면에 NP있습니다.

주 우리가 할 것을 하지 찾을 필요가 C다항식 시간에. 가능하다면 문제는`P.

참고 알고리즘이 것을 V위해 일해야 모든 G 일부, C. 모든 입력에 대해 입력이 문제 도메인에 있는지 여부를 확인하는 데 도움 이되는 정보 가 있어야 합니다 . 즉, 정보가 존재하지 않는 곳에 입력이 없어야합니다.

NP Hard 증명

여기에는 다음과 같은 형식의 부울 식 집합 인 SAT 와 같은 알려진 NP- 완전 문제 가 포함됩니다.

(A 또는 B 또는 C) 및 (D 또는 E 또는 F) 및 ...

식이 만족 스러우면 이러한 부울에 대한 일부 설정이 있으므로식이 true가 됩니다.

그런 다음 다항식 시간에서 NP- 완전 문제를 문제로 줄 입니다.

즉, (또는 사용중인 NP- 완전 문제에 X대한) 입력이 주어지면 SAT문제에 Y대한 입력 을 생성 합니다. 문제 X가있는 경우에만 SAT Y에 있습니다. 함수 f : X -> Y는 다항식 시간에 실행되어야합니다 .

위의 예에서 입력 Y은 그래프 G와 꼭지점 덮개의 크기입니다 k.

완전한 증거 를 얻으 려면 다음 두 가지를 모두 증명해야합니다.

  • 그것은 X이다 SAT> = Y문제에

  • 그리고 Y문제의 => X에서 SAT.

marcog의 답변에는 문제로 줄일 수있는 몇 가지 다른 NP- 완전 문제와 연결되어 있습니다.

각주 : 2 단계 ( NP-hard임을 증명 )에서 다른 NP-hard (반드시 NP-complete는 아님) 문제를 현재 문제로 줄이면 NP- 완전 문제는 NP-hard 문제 (즉, NP에서도).


7
이 뒤에 누락 된 데이터 또는 순환 추론이 있는지 궁금합니다. '이미 NP에있는' 다른 문제 를 언급하지 않고 NP에 문제가 있음을 '증명'하는 방법은 무엇입니까? 그것은 마치 "그 부분이 철로 알려져 있기 때문에 철로 만들어졌습니다"라고 말하는 것과 같습니다. 그것은 철 증거가 아닙니다.
— Hernán Eche 2014 년

6
내가 기억하는 한 SAT가 NP- 완전하다는 것을 나타내는 Cook-Levin 정리라는 정리가 있습니다. 그 증거는 내가 위에서 설명한 것보다 훨씬 더 복잡하며 내 말로 설명 할 수 없다고 생각합니다.
— Laila Agaev 2014 년

4
더 정확하게 말하면 Cook-Levin 정리는 SAT가 NP 완전하다고 말합니다. NP의 모든 문제는 결정 론적 튜링 기계에 의해 다항식 시간에서 부울 공식이 만족할 수 있는지 여부를 결정하는 문제 (SAT)로 줄일 수 있습니다. 그래서 그것은 당신이 물어 보던 빠진 부분입니다. 위키 백과에서 정리를 찾아 보면 증명이 있고 증명에서 정리를 참조 할 수 있습니다. 즉, SAT를 주어진 문제로 줄이는 것이 NP 완전성을 증명하는 방법입니다.
— Laila Agaev

그래서 내 질문은 SAT가 다항식 즉, P = NP 문제로 풀 수 있는지로 끝납니다. 답변 해 주셔서 감사합니다.
— 에르난 에체

두 번째 단계에서 NP-hard 문제를 우리가 원하는 문제로 줄일 수없는 이유를 설명해 주시겠습니까? NP 완전 문제 여야합니까?
— MLT

23

NP-Complete 문제를 현재 가지고있는 문제로 줄여야합니다. 다항식 시간 내에 감소를 수행 할 수 있다면 문제가 이미 NP에있는 경우 문제가 NP 완전하다는 것을 증명 한 것입니다.

NP- 완전 문제보다 쉽지는 않습니다. 다항식 시간에 문제를 NP-Hard로 만들 수 있기 때문입니다.

말을 참조하십시오 http://www.ics.uci.edu/~eppstein/161/960312.html을 이상.


2
이해하기 쉽게 설명하는 사람을 +1합니다. 나는 거의 이해하지 못하는 키워드에 대한 많은 언급을 말하는 대신.
— ColacX 2013 년

22
첫 번째 문장은 뒤에서 앞까지입니다. 알려진 NP- 완전 문제 를 자신의 문제 로 줄여야합니다 . 이것은 당신의 문제가 적어도 알려진 NP-complete 문제 만큼 어렵다는 것을 보여줍니다 . 파트 (b)도 부정확합니다. 감소를 찾았다면 이미 문제가 NP-hard라는 것을 알고 있습니다. 유일한 문제는 그것이 NP에 있는지 여부입니다 (중지 문제와 같은 일부 문제는 그렇지 않습니다). 만약 NP-hard이고 NP에서 NP-complete입니다 (즉, "NP-complete"는 "NP-hard"보다 더 구체적입니다).
— j_random_hacker

1
나는 a)가 P! = NP라는 것을 모르기 때문에 모순으로 이끈다 고 말하지 않을 것입니다.
— Chiel ten Brinke 2014 년

8

문제 L이 NP 완전하다는 것을 증명하려면 다음 단계를 수행해야합니다.

  1. 문제 L이 NP에 속한다는 것을 증명하십시오 (즉, 솔루션이 주어지면 다항식 시간에 확인할 수 있음).
  2. 알려진 NP- 완전 문제 선택 L '
  3. L '을 L로 변환하는 알고리즘 f를 설명하십시오.
  4. 알고리즘이 정확함을 증명하십시오 (공식 : x ∈ L 'if 및 if and only if f (x) ∈ L)
  5. algo f가 다항식 시간에 실행된다는 것을 증명

7

첫째, 당신은 그것이 NP에 있다는 것을 보여줍니다.

그런 다음 이미 알고있는 또 다른 문제가 NP 완료라는 것을 발견하고 문제에 대한 NP 어려움 문제를 다 항적으로 줄이는 방법을 보여줍니다.


아니요. NP 완전성을 증명하고 NP에 있음을 증명하기 위해 NP 완전 문제에서 NP 문제로 줄일 수 있음을 보여 주어야합니다. NP에서 증명할 수 없다면 NP hard는 여기에 들어오지 않습니다.
— mrmemio29

6
  1. NP Complete 문제의 하위 집합에 익숙해지기
  2. NP 경도 증명 : NP 완전 문제의 임의의 인스턴스를 문제의 인스턴스로 줄입니다. 이것은 파이의 가장 큰 조각이며 NP Complete 문제에 대한 친숙 함이 지불하는 곳입니다. 선택한 NP Complete 문제에 따라 감소가 다소 어려울 것입니다.
  3. 문제가 NP에 있음을 증명하십시오 : 인스턴스가 솔루션인지 다항식 시간에 확인할 수있는 알고리즘을 설계하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.