답변:
아닙니다. 하드 문제는 계산할 필요가 없습니다. 정의는 상당히 완전합니다. 폴리-시간 솔루션을 갖는 문제가 모든 문제에 폴리-시간 솔루션이 있음을 의미하는 경우 문제 은 hard입니다 (즉, 모든 문제에 대해 의 감소가 존재 함 ).L N P N P L N P
계산할 수없는 문제는 다음과 같이 어려워집니다. 다항식 시간으로 문제를 해결할 수 있다고 가정합니다. 그런 다음 계산할 수없고 계산할 수없는 모순이라는 결론을 내릴 수 없다는 증거를 사용합니다. 이 허위로부터, 우리는 무엇이든, 즉 우리 가보고있는 문제에 대해 다항식 시간 알고리즘이 있다는 것을 유추 할 수 있습니다 .
예를 들어, 정지 문제 고려하십시오 . 가 인증서 인지 확인 하는 폴리 타임 검사기 가 있다고 가정하면 다음과 같이 언어 를 로 줄일 수 있습니다 .N P A H f ( s , c ) c s ∈ A
따라서 Halting Problem을 해결하는 다중 시간 알고리즘을 한 번만 호출하면 다항식 시간으로 문제를 해결할 수 있습니다 .
그러한 축소는 유용하지 않습니다. 왜냐하면 그것이 "거짓이면 뭔가"인지를 알려주기 때문입니다. 우리는 이미 계산할 수없는 문제에 대한 폴리 타임 알고리즘이 없다는 것을 알고 있습니다.
이 질문에 대해서는이 커뮤니티에서 상당한 혼란이있는 것으로 보입니다. 물을 정화하고 계산 성과 NP- 경도의 관계를 밝히기 위해 자세한 답변을 드리겠습니다.
먼저, 관련된 다양한 정의에 대해 명확하고 명시 적으로 밝히면 많은 혼란이 해결 될 것이라고 믿습니다.
문자열은 어떤 고정 된 유한 알파벳 문자의 유한 순서입니다.
의사 결정 문제는 문자열의 집합입니다. (이 세트는 일반적으로 무한합니다.) 의사 결정 문제점을 일부 특성의 문자열 테스트로 생각하십시오. 특성이있는 문자열은 세트에 있고 특성이없는 문자열은 그렇지 않습니다.
와 B의 두 가지 결정 문제가 있다고 가정합니다 . 말 A가 인 다항식 시간 환원 에 B 어떤 다항식이 있다면 , p는 ( X ) 와 일부 알고리즘 알고리즘 M 같은 그 모든 문자열 S ,
- 당신이 제공하는 경우 입력과 S , M의 가 정지보다 적은 수의 P ( | 이야 | ) (단계 | 에요 | 문자열의 길이 의 ) 및 문자열 출력 M ( 들 ) .
- 에경우만 M ( 들 ) 에 B .
모든 NP 결정 문제 A 에 대해 A 가 B로 다항식 시간 감소 가능한 경우 결정 문제 는 NP-hard 입니다.
의사 결정 문제는 계산 가능한 알고리즘이있는 경우 그 모든 문자열을, S ,
- 당신이 제공하는 경우 입력과 S , M의 중지하고 출력 중 "예"또는 "아니오".
- 가 A에 있으면 출력은 "yes"이고 그렇지 않으면 "no"입니다.
위의 정의를 사용하면 의사 결정 문제, 축소 또는 NP 경도의 정의에서 의사 결정 문제를 계산할 필요가 없다는 점에서 귀하의 질문에 근본적으로 혼동이 될 수 있다고 생각되는 것을 즉시 확인할 수 있습니다. 정의는 의사 결정 문제를 임의의 문자열 세트로 생각하는 데 완벽하게 적합하며 이러한 세트는 실제로 매우 불쾌 할 수 있습니다.
테이블에 두 가지 질문이 남습니다.
질문 1은 대답하기가 더 쉽습니다. NP가 어려운 계산 불가능한 의사 결정 문제를 찾는 데 특히 중요한 두 가지 방법이 있습니다. 첫 번째는 중지 문제입니다. 중지 문제 는 모든 계산 가능한 결정 문제가 다항식 시간 인 H로 환원 될 수 있다는 특성을 가지고 있습니다. NP 문제는 계산 가능하기 때문에 모든 NP 문제는 다항식 시간이 H로 환원 될 수 있으므로 H 는 NP-hard입니다.
계산 불가능한 NP-hard 문제를 구축하는 또 다른 중요한 방법은 알려진 NP-hard 문제를 계산 불가능한 알려진 문제와 결합 할 수 있다는 것을 관찰하는 것입니다. 하자 NP-열심히하고 B는 비 계산 가능합니다. 결정 문제 A ⊕ B 를 다음과 같이 구성하십시오. A ⊕ B 에는 "0"형식의 문자열과 A " 문자열 ,"1 "형식 문자열, B " 문자열이 포함됩니다 . ⊕ B는 우리가 (문제의) 삭감을 켤 수 있기 때문에 NP-어렵다 에 감소로 ⊕ B: 출력 문자열 앞에 추가 "0"을 출력하도록 알고리즘을 조정하십시오. 를 계산 하려면 "1"로 시작하는 문자열이 세트에 있는지 결정해야하므로 A ⊕ B 는 계산할 수 없습니다 . B 는 계산할 수 없기 때문에 불가능 합니다.
질문 2는 상당히 까다 롭지 만 실제로 NP-hard가 아닌 계산 불가능한 결정 문제가 있습니다 (P NP 라고 가정 ). Yuval의 정답은 그러한 의사 결정 문제를 명시 적으로 구성합니다. (객실의 모든 계산 이론가들에게는 "Cohen Π 0 1 -generic"도 트릭을 수행 할 것입니다.) "NP- 어려운 문제는 어렵고 계산할 수없는 문제는 더 어려운 직관을 깨뜨릴 것입니다. "잘못되었습니다.
NP-hardness와 non-computability는 매우 일반적인 의미에서 문제가 "단단하다"고 말하지만, 그것들은 매우 다르며 같은 종류의 현상과 같이 모여서는 안됩니다. 특히, NP-경도는 "긍정적 인"속성은 다음과 같습니다 NP에 하드 문제 위한 치트 시트에 액세스 할 수있는 권한을 부여한다는 의미에서 어려운 , 당신이 수 문제의 하드 클래스를 해결 . : 반면에, 비 계산 가능성은 "부정적인"속성입니다 비 계산 가능한 문제 는 의미에서 하드 수 없습니다 해결 을 자원의 특정 클래스 .
( "강제 "는 내가 언급 한 "Cohen 제네릭" 을 생성하는 데 사용되는 기술 입니다. 매우 모호하기 때문에 강제는 "일반"인 것을 생성하는 일반적인 방법입니다. 긍정적 인 속성과 모든 부정적인 속성이 없기 때문에 강제로 계산할 수없고 NP-hard가 아닌 문제를 직접 생성 할 수 있습니다.)
아니. NP-Hard는 가장 어려운 NP 문제보다 어렵거나 어렵다는 것을 의미합니다. 직관적으로 계산할 수 없으면 NP보다 훨씬 어렵습니다.
위키 백과 :
중지 문제와 같이 NP가 어렵지만 NP가 완료되지 않은 의사 결정 문제가 있습니다.
누구나 계산할 수 없다는 것을 알고 있습니다.
problem()
호출 할 수있는 기능 이 없습니다 .
완전성을 위해 다음 정리를 증명해 보겠습니다.
P NP 인 경우에만 NP-hard가 아닌 계산할 수없는 언어가 있습니다 .
P = NP 인 경우, 사소하지 않은 언어 ( 와 다른 언어 )는 NP-hard (운동)이며, 특히 계산할 수없는 언어는 NP-hard입니다.
이제 P NP 라고 가정하십시오 . 하자 T는 내가 모든 튜링 기계의 일부 열거합니다. 필요한 언어 L 을 단계적으로 구성 할 것 입니다. 각 단계에서 우리는 계속됩니다 { 0 , 1 , ? } 의 착색 { 0 , 1 } * 우리는 또한 넣어야 L ; 여기에 0 수단을 우리는 문자열이 아닌 결정했다고 L , 1 우리는 문자열에 결정 것을 의미 L , 그리고 ?우리가 아직 결정하지 않았다는 것을 의미합니다. 유한하게 많은 문자열을 제외하고는 모든 색상이 표시 .
단계에서 , 우리는 생각 T 나는 어느 쪽의 입력을 받아 그것을 거부, 또는 전혀가 정지 기계로. 경우 T는 내가 항상 다음 중단하지 않습니다 우리는 아무것도하지 않습니다. 경우 T 난 항상 우리가 문자열을 찾을 수 있습니다을 정지합니다은 X 그러한 L ( X ) = ? 한 세트의 L ( X ) : = 0 경우 T I ( x는 ) 받아 L ( X ) : = 1 의 경우 T 거부합니다.
스텝 , 우리는 생각 T I는 입력에 (아마도) 부분 함수를 계산하는 컴퓨터로. 경우 T 난 전체가 아니거나 총하지만 다항식 시간에 실행되지 않거나 총하지만 그 범위는 유한의 경우, 우리는 아무것도하지 않는 경우. 경우 T 나 다항식 시간 내에 실행 합계이며, 무한한 범위를 가지고, 우리는 문자열 검색 X 되도록 L ( T I ( X ) ) =를 ? . 만약 X ∈ S T (즉, 만약 X