문제가 NP-complete 일 수 있는지 알기위한 경험 법칙


26

이 질문은 StackOverflow대한 의견에서 영감을 얻었습니다 .

Garey Johnson 책의 NP-complete 문제와 다른 많은 것들을 아는 것 외에도; 문제가 NP- 완전 문제인지 아닌지 알기위한 규칙이 있습니까?

나는 엄격한 것을 찾는 것이 아니라 대부분의 경우 작동하는 것을 찾고 있습니다.

물론, 문제가 NP- 완료이거나 NP- 완전 문제의 약간의 변형이라는 것을 증명해야 할 때마다; 그러나 증거를 서두르 기 전에 증거의 긍정적 인 결과에 확신을 갖는 것이 좋을 것입니다.


8
내 경험 법칙은 간단하다. 이미 익숙한 문제처럼 냄새가 나지 않는다면 아마도 NP-hard (혹은 더 나쁘다) 일 것이다.
JeffE

12
@JeffE는 물론 지금까지 몇 가지 문제에 대해 잘 알고 있습니다. CS를 처음 접하는 사람들은 동일한 규칙을 사용하지 못할 수 있습니다.
Joe

1
@ 조 : 맞아. 교과서에서 문제를 얻지 못했다면 아마도 NP-hard 일 것입니다.
JeffE

2
이것을 넣는 또 다른 방법은 문제 NP- 하드 가 아니라 NP- 하드 가 아닌 경우에 놀라운 일 입니다.
Joe

답변:


15

이것은 문제 (즉, 언어 )가 NP- 완전 인지 아닌지를 결정하기위한 개인적 접근 입니다. 이 두 조건이 모두 확인되면 :L

  • 인스턴스 경우 그 시험을 느낄 L이 의미하는 나는 어떤 종류의 모든 조합을 확인할 필요가IL
  • 그리고 이 작은 것들로 이러한 조합을 분할 할 수있는 방법이 없다는 것을

다음 매우 잘 NP-어려울 수 있습니다.L

예를 들어 부분 집합 합계 문제의 경우 모든 부분 집합을 나열하고 합계가 0 인 항목이 있는지 확인해야합니다. 나는 나눌 수 S를 두 개의 작은 하위 집합으로 S 1S 2가 되는 내가 비슷한 속성을 확인할 것인가? 흠 ... 정말. 어쩌면 S 1S 2 의 모든 조합을 확인 했지만 실제로는 길어질 것입니다 ...SSS1S2S1S2

일반적으로 작은 조각으로 나누는 능력은 문제가 P에 있다는 것을 나타내는 좋은 지표입니다. 이것은 나누기 및 정복 접근법입니다. 예를 들어 두 점 사이의 최단 경로를 찾으려면 에서 C 까지의 최단 경로가 B 를 통과 하면 A 에서 B 까지의 최단 경로에 B 에서 C 까지 의 최단 경로보다 길지 않은 속성을 사용할 수 있습니다 .ACBABBC

솔직히이 접근법은 매우 기본입니다. 주어진 문제에 대한 (다항식) 알고리즘을 찾으려고합니다. 찾을 수 없으면 문제가 "어려워"집니다. 그런 다음 모든 NP- 완전성 추론이 온다. 기존의 NP- 완전 문제를이 문제로 인코딩 할 수 있을까? (그리고 이것은 일반적으로 훨씬 어렵 기 때문에 다항식 알고리즘을 찾기 위해 한 번 더 시도합니다.)

나는 이것이 일반적인 사고 방식이라고 생각합니다. 그러나 알려지지 않은 문제에는 적용하기가 여전히 어렵습니다. 나는 개인적으로 내가 들었던 NP- 완전성의 첫 번째 예 중 하나 인 놀림 문제 에 놀란 것을 기억 합니다. 확인하기가 너무 간단 해 보였습니다! 그래서 나는 경험이 그것과 관련이 있다고 생각합니다. 또한 직관은 때때로 쓸모가 없습니다. 나는 두 번의 거의 동일한 문제를 여러 번 들었을 때 기억하지만 하나는 P에 있었고 다른 하나는 작은 차이로 NP- 완전했습니다.

아직 좋은 예를 찾지 못했습니다 (여기에서 도움이 필요합니다) . 이것은 사후 대응 문제와 같습니다 : 이것은 결정 불가능한 문제이지만 일부 변형 은 결정 가능합니다.


7
+1

2
경험 법칙의 흥미로운 예외는 선형 프로그래밍으로 해결할 수있는 최적화 문제입니다. 트릭에 대해 들어 본 적이 없다면 할당 및 정복 및 동적 프로그래밍과 같은 트릭은 적용되지 않는 것처럼 할당 문제 또는 그래프 일치와 같은 문제를 폴리 타임으로 어떻게 해결할 수 있는지 알기가 어려울 수 있습니다.
hugomg

예를 들어 2 시퀀스 동안 P에 있지만 더 많은 NP-Hard에 도달하는 가장 긴 공통 서브 시퀀스 문제가 있습니다.
Christian Vielma

14

문제의 어려움에 대한 또 다른 관점은 게임과 퍼즐 커뮤니티에서 비롯됩니다. 여기서 경험상 문제는 가능한 한 어려운 것입니다. (그리고 예외는 문제의 숨겨진 구조에서 나옵니다. 코멘트는 이것의 좋은 예입니다); 트릭은 문제가 얼마나 어려운지 이해하는 데 도움이됩니다.

  • n
  • 경계 상태 공간 내에서 일련의 이동을 수반하는 퍼즐은 PSPACE에 있으며 ( '이동 트리'는 일반적으로 다항식 수의 구성을위한 저장 만 필요한 표준 깊이 우선 방식으로 탐색 될 수 있기 때문에) PSPACE- 완료되는 경향이 있습니다. 이것의 전형적인 예는 러시아워입니다.
  • 폴리 노미 바운드 깊이의 게임도 PSPACE에 있습니다. 이것은 PSPACE의 특성화를 APTIME으로 사용합니다. 전략의 일반적인 최소-최대 특성화는 '플레이어 A의 이동이 존재하여 플레이어 B의 각 응답 이동에 대해 응답이 있기 때문에 대체 튜링 머신의 특성을 완벽하게 모방하기 때문입니다. 플레이어 A가 ... '등으로 이동합니다. 또한 PSPACE-complete 인 경향이 있습니다. 16 진수 및 일반화 된 Tic-Tac-Toe 게임이 이에 대한 예입니다.
  • 나무 깊이에 제한이 없지만 (다항식으로) 제한된 공간에서 플레이하는 게임은 EXPTIME에 있습니다. 왜냐하면 기하 급수적으로 많은 총 위치가 있고 전체 그래프는 위치의 수에 따라 다항식으로 구축되고 탐색 될 수 있습니다. ; 이러한 게임은 일반적으로 EXPTIME 완료입니다. 체스, 체커 및 바둑이 모두이 범주에 속합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.