문제

수학에 대한 배경을 가정하면 순진한 계산 복잡성 이론에 대한 일반적인 개요를 어떻게 제공 하시겠습니까?

P = NP 질문에 대한 설명을 찾고 있습니다. P 란? NP는 무엇입니까? NP- 하드 란 무엇입니까?

때때로 Wikipedia는 독자가 이미 관련된 모든 개념을 이미 이해하는 것처럼 쓰여집니다.

도움이 되었습니까?

해결책

hoooo, 박사 학위 컴포지션 플래시백. 좋아, 여기 간다.

우리는 결정 문제에 대한 아이디어, 알고리즘이 항상 "예"또는 "아니오"에 대답 할 수있는 문제입니다. 또한 컴퓨터의 두 가지 모델 (실제로 튜링 머신)에 대한 아이디어가 필요합니다 : 결정 론적 및 비 결정적. 결정 론적 컴퓨터는 우리가 항상 생각하는 일반 컴퓨터입니다. 비 결정적 컴퓨터는 우리가 익숙해지는 것과 같은 컴퓨터입니다. 그 컴퓨터는 무제한 병렬성을 제외하고는 사용하는 것과 같습니다. Yogi Berra가 말했듯이, 길에서 포크에 올 때, 당신은 그것을 가져 가야합니다.

해당 답을 얻기 위해 알려진 다항식 시간 알고리즘이있는 경우 결정 문제는 P입니다. 결정 문제는 NP에 있습니다. 비 결정적 기계에 대한 알려진 다항식 시간 알고리즘이 답을 얻을 수있는 경우입니다.

P에있는 것으로 알려진 문제는 사소한 NP에서 --- 비 결정적 기계는 다른 프로세스를 포크하는 데 어려움을 겪지 않으며 결정 론적 과정처럼 행동합니다. P 또는 NP에서는 알려지지 않은 문제가 있습니다. 간단한 예는 길이 n의 모든 비트 벡터를 열거하는 것입니다. 어쨌든, 그것은 2가 필요합니다N 단계.

(엄격히, 결정 문제는 NP에 있습니다. Nodeterministic 기계가 Poly-Time의 답변에 도달 할 수 있고 결정 론적 기계가 할 수 있다면 확인하다 솔루션은 폴리 시간에 맞습니다.)

그러나 폴리 타임 결정성 알고리즘이 알려지지 않은 NP에 알려진 몇 가지 문제가 있습니다. 다시 말해, 우리는 그들이 NP에 있다는 것을 알고 있지만 P에 있는지 알 수 없습니다. 모든 도시를 덮고 출발점으로 돌아가는 경로가 있습니까? 엑스 거리? 비 결정적 여행 세일즈맨이 도로에서 포크에 올 때마다, 그는 그것을 취하지 않았기 때문에 비 결정적 기계에서는 쉽습니다. 그의 클론은 방문하지 않은 다음 도시로 향하고 결국 메모를 비교하고 확인합니다. 클론 중 하나는 더 적은 수준을 취했습니다 엑스 거리.

(그런 다음, 기하 급수적으로 많은 클론이 어떤 클론을 죽여야하는지에 맞서 싸울 수 있습니다.)

의사 결정 TSP가 P에 있는지 여부는 알려져 있지 않습니다. 알려진 폴리 타임 솔루션은 알려져 있지 않지만 그러한 솔루션이 존재하지 않는 증거는 없습니다.

이제 한 가지 더 개념 : 결정 문제 P 및 Q가 주어지면 알고리즘이 p에 대한 솔루션을 다항식 시간에 Q에 대한 솔루션으로 변환 할 수 있다면 Q는 Q라고합니다. 폴리 타임 환원 가능 (또는 단지 환원 가능).

문제는 (1) NP에 있음을 증명할 수 있고 (2) 이미 NP- 완성으로 알려진 문제로 폴리 타임을 감소시킬 수 있음을 보여줄 수 있다면 NP- 완료입니다. (그 부분의 어려운 부분은 프로비였습니다 첫 번째 NP- 완료 문제의 예 : Steve Cook이 수행 한 것입니다. 쿡의 정리.)

그래서 실제로 말하는 것은 누군가가 하나의 NP- 완성 문제에 대한 폴리 타임 솔루션을 찾으면 자동으로 하나를 얻었습니다. 모두 NP- 완료 문제; 그것은 또한 p = np를 의미 할 것입니다.

문제는 NP-HARD 인 경우 NP- 완성 문제만큼 어려운 경우에만 NP-HARD입니다. 가장 짧은 경로를 찾는 데있어 더 기존의 여행 판매원 문제는 NP-HARD이며 엄격하게 NP- 완성이 아닙니다.

다른 팁

Michael Sipser'에스 계산 이론 소개 훌륭한 책이며 매우 읽을 수 있습니다. 또 다른 엄청난 자원은 Scott Aaronson입니다 이론적 컴퓨터 과학의 훌륭한 아이디어 강의.

사용되는 형식은 의사 결정 문제 (예/아니오 대답의 문제, 예를 들어 "이 그래프가 해밀턴주기를 갖는다")를 보는 것입니다. "언어" - 문자열 세트 - 대답이 예인 입력. "컴퓨터"가 무엇인지에 대한 공식적인 개념이 있으며, 해당 문제를 결정하기위한 다항식 시간 알고리즘이있는 경우 (입력 문자열이 주어 지거나, 예 또는 아니오라고 말하면) 문제는 P에 있습니다.

문제는 NP에 있습니다 확인 가능 다항식 시간에, 즉, 대답이 예인 입력의 경우, (다항식 크기) 인증서가있는 경우, 대답이 다항식 시간에 예라고 확인할 수 있습니다. [예 : 해밀턴주기를 인증서로 주었을 때, 당신은 그것이 하나인지 확인할 수 있습니다.

방법에 대해 아무 말도하지 않습니다 찾기 그 인증서. 분명히, 당신은 "가능한 모든 인증서"를 시도 할 수 있지만 지수 시간이 걸릴 수 있습니다. 당신이 항상 할 것인지는 확실하지 않습니다 가지다 예 또는 아니오를 결정하기 위해 다항식 시간 이상을 취하는 것; 이것은 P 대 NP 질문입니다.

문제는 해당 문제를 해결할 수 있다는 것이 NP의 모든 문제를 해결할 수 있다는 것을 의미합니다.

또한이 질문을 참조하십시오.컴퓨터 과학의 NP- 완성은 무엇입니까?

그러나 실제로,이 모든 것이 아마도 당신에게 단지 모호 할 것입니다. 예를 들어 Sipser의 책을 읽는 데 시간을 할애 할 가치가 있습니다. 아름다운 이론입니다.

이것은 Charlie의 게시물에 대한 의견입니다.

문제는 (1) NP에 있음을 증명할 수 있고 (2) 이미 NP- 완성으로 알려진 문제로 폴리 타임을 감소시킬 수 있음을 보여줄 수 있다면 NP- 완료입니다.

두 번째 조건에는 미묘한 오류가 있습니다. 실제로, 당신이 증명해야 할 것은 알려진 NP- 완료 문제 (예 : 와이)이 문제에 대한 다항식 시간 환원 가능 (문제라고 부르 자 엑스).

이러한 증거의 배후에 대한 추론은 NP-이 문제에 대한 문제를 해결하고 어떻게 든 폴리 타임 으로이 문제를 해결할 수있게되면, 당신은 또한 폴리 타임 솔루션을 찾는 데 성공했습니다. NP-눈에 띄는 문제는 눈에 띄지 않지만 (불가능하지는 않더라도) 오랜 스탠드를 해결하는 데 성공했을 것입니다. p = np 문제.

이 증거를 보는 또 다른 방법 y-> x, 그 다음에 ~ x-> ~ y. 다시 말해, 해결할 수 없다 와이 다항식 시간에는 불가능한 시간은 폴리 타임에서 X를 해결하지 않는 것을 의미합니다. 반면에, 폴리 타임으로 X를 해결할 수 있다면 폴리 타임에서 Y를 해결할 수 있습니다. 또한, 당신은 전달 성을 통해 폴리 타임에서 Y로 감소하는 모든 문제를 해결할 수 있습니다.

위의 설명이 충분히 분명하기를 바랍니다. 좋은 출처는 8 장입니다 알고리즘 설계 Kleinberg와 Tardos 또는 Cormen et al.

불행히도, 내가 알고있는 최고의 두 권의 책 (게이와 존슨 그리고 Hopcroft와 Ullman) 둘 다 대학원 증명 지향 수학 수준에서 시작합니다. 전체 문제가 오해하거나 오해하기가 매우 쉽기 때문에 이것은 거의 확실합니다. 제프 거의 귀를 씹었습니다 그가 너무 민속/jokey a tone에서 문제에 접근하려고 시도했을 때.

아마도 가장 좋은 방법은 단순히 Big-O 표기법으로 많은 실습 작업을하는 것입니다. 많은 예와 운동을 사용합니다. 또한보십시오 이 답변. 그러나 이것은 똑같은 것이 아니라는 점에 유의하십시오. 개별 알고리즘은 무증상으로 설명 할 수 있지만 문제 특정 복잡성은 진술입니다 가능한 모든 알고리즘 그것을 위해. 이것이 증거가 그렇게 복잡한 이유입니다!

나는 papadimitriou의 "계산 복잡성"을 기억합니다.

매우 단순화 : 문제는 가능한 모든 답변을 열거하고 각 답변을 확인하는 것인 경우 문제는 NP-Hard입니다.

주제에 대한 몇 가지 링크는 다음과 같습니다.

당신은 세트 카디널리티의 아이디어에 익숙합니다. 즉, 세트의 요소 수입니다. 그러면 NP는 미스터리 인 동안 정수 번호의 카디널리티를 나타내는 P와 같은 질문을 볼 수 있습니다. 모든 실수의 카디널리티?

내 단순화 된 대답은 다음과 같습니다. "계산 복잡성은 더 많은 요소를 추가 할 때 문제가 얼마나 어려워 지는지 분석하는 것입니다."

그 문장에서 "더 단단한"이라는 단어는 처리 시간이나 메모리 사용을 참조 할 수 있기 때문에 고의적으로 모호합니다.

컴퓨터 과학에서는 문제를 해결할 수있는 것으로 충분하지 않습니다. 합리적인 시간 안에 해결할 수 있어야합니다. 따라서 순수한 수학에서 당신은 방정식을 생각해냅니다. CS에서는 그 방정식을 개선하여 합리적인 시간에 문제를 해결할 수 있습니다.

그것이 내가 생각할 수있는 가장 간단한 방법입니다. 그것은 당신의 목적에 비해 너무 간단 할 수 있습니다.

당신이 얼마나 오래 있는지에 따라 DFA, NDFA에서 시작한 다음 동등하다는 것을 보여주는 것이 가장 좋을 것입니다. 그런 다음 그들은 ND 대 D를 이해하고 정규 표현을 좋은 부작용으로 훨씬 더 잘 이해할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top