문제가 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.