문제가 NP- 완전임을 증명하는 것이 왜 중요합니까?


답변:


26

알리, 좋은 질문입니다.

어떤 문제 P가 계산 상 어렵다는 것을 보여주고 싶다고 가정하자. 이제 우리는 아직 효율적인 알고리즘이 없다는 사실에 기초하여 P가 어렵다고 추측 할 수 있습니다. 그러나 이것은 다소 희미한 증거입니다. P를 보는 멋진 방법을 놓친 것일 수 있습니다. 따라서 P가 어렵다고 추측하기 위해 더 많은 증거를 축적하고 싶습니다. 감소는 정확히 그렇게 할 수있는 도구를 제공합니다! 다른 자연 문제 Q를 P로 줄일 수 있다면, P는 적어도 Q만큼 어렵습니다. 그러나 Q는 완전히 다른 수학 영역에서 문제가 될 수 있으며 사람들은 수십 년 동안 Q를 풀기 위해 고군분투했을 수도 있습니다 . 따라서 우리는 Q가 P가 어렵다는 증거로 효율적인 알고리즘을 찾지 못하는 것을 볼 수 있습니다. 우리가 그런 Q를 많이 가지고 있다면

이것이 바로 NP- 완전성 이론이 제공하는 것입니다. 문제가 NP- 완전하다는 것을 증명한다면, 그 경도를 수백 가지의 다른 문제의 경도와 연관 시켰습니다. 따라서 도덕적으로 말하면 문제가 실제로 어렵다는 것을 확신 할 수 있습니다.


따라서 초기 목표는 P에 대한 효율적인 알고리즘을 찾는 것이지만 달성 할 수 없기 때문에 P가 계산적으로 어렵다고 가정하고 대답이 나머지를 설명합니까?
Ali

우리는 문제 P가 계산적으로 어렵다는 것을 보여주고 싶지만 P가 어렵다는 것을 P가 어렵다고 가정하고 싶지는 않습니다. 여기서 차이점을 무시하자.) 이미 잘 조사 된 수백 가지 문제 중 하나라도 어렵다면 P도 어렵다는 것을 알았다. P에 대해 효율적인 알고리즘이 있다면 수백 가지 문제 각각에 대해 효율적인 알고리즘이 있기 때문입니다.
arnab

4
@Ali : 입문 복잡성 이론 교재를 강력히 추천합니다. 이 웹 사이트는 실제로 그러한 질문에 대한 포럼이 아니라 연구 수준의 질문에 대한 추가 정보입니다.
arnab

5
@Ali : Garey와 Johnson 을 반드시 읽어 보시기 바랍니다 . 이 책의 유명한 만화는 꼭 봐야합니다!
Tsuyoshi Ito

9

문제 증명 NP-Complete은 연구중인 일반적인 문제에 대한 효율적이고 정확한 해결책을 찾지 않아도되기 때문에 연구 성공입니다. 그것은 당신의 문제가 문제의 클래스의 구성원이라는 것을 증명하여 아무도 어떤 문제에 대해서도 효율적이고 정확한 알고리즘을 찾을 수 없었으며, 어떤 문제에 대한 그러한 해결책은 모든 문제에 대한 해결책을 암시합니다 문제.

문제가 여전히 있기 때문에 일반적으로 디딤돌입니다. 요구 사항을 완화해야합니다. 보통 사람들은 "효율적인", "정확한"또는 "일반적인"중 하나 이상을 이완시키는 방법을 알아 내려고 노력합니다. 비효율적이고 정확하며 일반적인 알고리즘은 이러한 알고리즘의 지수에서 더 좋고 더 나은 상수를 찾으려는 시도입니다. 효율적이면서도 유효하고 일반적인 것은 근사 알고리즘에 대한 연구입니다. 효율적이고 정확하지만 일반적이지 않은 것은 고정 매개 변수 다루기성에 대한 연구와 효율적인 알고리즘을 찾을 수있는 입력의 서브 클래스 검색입니다.


문제를 완화하는 세 가지 방법에 대한 좋은 점! 무작위 알고리즘은 "효율적이고 효율적이며 일반적인"범주에 속한다고 생각합니다.
Hsien-Chih Chang 張顯 之

정말? 모든 무작위 알고리즘이 정확하지는 않습니다.
Jeffε

물론 그렇습니다, JeffE. 또한, 나는 당신이 알고리즘에서 내 이전 학생을 가르치고 있음을 이해합니다! Hsien-Chih의 요점에 관해서는 무작위 알고리즘 이이 체계에 적합하지 않다고 생각합니다. 확실히 임의의 무작위 알고리즘 (유전자 알고리즘과 신경망이 떠오름)은 정확하지는 않지만 효율적이며 일반적이지만, 임의의 무작위 알고리즘은 매우 정확합니다. 그것은 임의의 알고리즘이지만, 아무도 합리적인 구현으로 비 프라임을 얻지 못했다는 확신이 있습니다.
Peter Boothe

5

두 명의 다른 사람이 문제를 증명하고 싶은 두 가지 사례를 보자. :NPcomplete

a) 소프트웨어 프로젝트를 진행하고 있습니다. 시스템을 지정하면 응용 프로그램의 아키텍처를 정의하기 시작합니다. 여기에는 큰 문제를 해결하는 것이 포함되며 응용 프로그램이 더 작은 문제를 처리해야합니다. 이러한 작은 문제 중 하나에 대해 효율적인 (응용 프로그램이 느려지지 않기를 원합니다!) 알고리즘을 찾아야한다고 가정 해 봅시다. 한동안 고군분투하면 다항식 알고리즘을 찾을 수 없습니다. 그렇다면이 문제는 매우 어려울 수 있으므로 효율적인 알고리즘을 찾는 것이 매우 어렵거나 불가능합니다. 문제가 N P - c o m p l e t e 임을 증명함으로써NPcomplete, 이러한 추측에 대한 증거가 있으므로 다른 접근 방식을 고려하기 시작해야합니다 (예 : 문제를 쉽게 변경하도록 변경).

b) 당신은 복잡성 이론을 연구하고 있습니다. 정의에 따라 필요한 리소스 수, 즉 문제 해결에 따라 문제 (또는 문제 클래스)를 특성화하려고합니다. 특정 문제가 임을 증명 하면 다음과 같은 통찰력을 얻을 수 있습니다.NPcomplete

i) 문제에 대한 광범위한 지식을 알고 있습니다. 단일 문제를 해결하는 대신 문제 클래스 를 사용하면 새로운 통찰력을 얻을 수 있습니다.NPcomplete

ii) 다른 방법으로 를 증명하려는 연구를 허용 합니다. 어쩌면 문제는보다 공격에 쉽게 3 - S T .P=NP3SAT

NPcompleteCLIQUE

문제를 요약하고 특성화하면 일반적인 기술을 사용할 수 있습니다. 관련 수업을 공부하면 수학과 과학에서 일반적으로 발생하는이 특정 문제의 특성에 신경 쓰지 않고 추상적 인 수준으로 생각할 수 있습니다. 개별 멤버 대신 클래스를 사용하면 알려진 기술을 사용할 수 있으며 통찰력을 하나의 개체가 아닌 더 많은 수의 개체에 적용 할 수 있습니다.


2
많은 사람들이 NP가 어려워도 NP- 완전 문제를 실제로 해결합니다. 평균적으로 많은 문제가 훨씬 더 쉬운 것으로 드러났지만, 이는 보여주기 어려울 수 있습니다. 실제로 잘 작동하는 휴리스틱 알고리즘에 대해 증명하기가 더 어렵습니다. 소프트웨어 아키텍트가 디자인을 포기하고 변경하기 전에 문제가 "진짜"어려운지 물어볼 것을 제안합니다.
Yuval Filmus

디자인을 바꿔야한다는 말은 아닙니다. 휴리스틱 또는 근사 알고리즘을 사용하면 문제를 변경하는 것처럼 나에게 (거짓?) 보입니다 ... 정확하지 않은 솔루션을 요구한다는 것을 알고 있기 때문에 (응용 프로그램은 응용 프로그램에 따라 다릅니다!)
chazisop

3

각 문제는 다른 문제와 관련이 있습니다. 또한 문제와 복잡성 클래스 사이에는 관계가 있습니다.

따라서 하나의 문제를 NPC로 분류하면 일반적으로 복잡성 클래스뿐만 아니라 다른 문제에 대한 통찰력을 얻을 수 있습니다.

예를 들어 그래프 동 형사상 (GI) 문제를 생각해보십시오. 다음 논문에서 :

Uwe Schöning, Graph isomorphism은 낮은 계층에 있으며, 컴퓨터 과학의 이론적 측면에 관한 제 4 차 연례 심포지움의 절차 , 1987, 114-124; 또한 : Journal of Computer and System Sciences, vol. 37 (1988), 312-323]에 기재되어있다.

만약 GI ∈ NPC라면, 다항식 계층 구조 (PH)는 두 번째 수준으로 무너 지는 것으로 입증된다 . 이것은 구조적 복잡성 이론에서 중요한 돌파구가 될 것입니다.


3

pppp


1
나는 당신이 어떤 문제들이 NP-complete라고 증명할 때가 있다고 들었습니다. 당신은 박사 학위 논문을 가지고있을 것입니다. 그게 사실입니까?
Hsien-Chih Chang 張顯 之

@ Hsien-ChihChang 張顯 之 : 그것에 대해서는 언급 할 수 없지만, 그 결과는 수십 년 전에 훨씬 더 인기가있었습니다. 요즘에는 "유일한 문제"를 제외하고는 경도 결과를 "단지"입증하는 논문을 출판하는 것이 점점 어려워지는 반면 70-80 년대에는 문제가되지 않았을 것입니다. 그 기간 동안 이런 종류의 논문이 풍부합니다.
Anthony Labarre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.