모든 NP-hard 문제는 계산 가능합니까?


답변:


15

아닙니다. 하드 문제는 계산할 필요가 없습니다. 정의는 상당히 완전합니다. 폴리-시간 솔루션을 갖는 문제가 모든 문제에 폴리-시간 솔루션이 있음을 의미하는 경우 문제 은 hard입니다 (즉, 모든 문제에 대해 의 감소가 존재 함 ).L N P N P L N PNPLNPNPLNP

계산할 수없는 문제는 다음과 같이 어려워집니다. 다항식 시간으로 문제를 해결할 수 있다고 가정합니다. 그런 다음 계산할 수없고 계산할 수없는 모순이라는 결론을 내릴 수 없다는 증거를 사용합니다. 이 허위로부터, 우리는 무엇이든, 즉 우리 가보고있는 문제에 대해 다항식 시간 알고리즘이 있다는 것을 유추 할 수 있습니다 .NP

예를 들어, 정지 문제 고려하십시오 . 가 인증서 인지 확인 하는 폴리 타임 검사기 가 있다고 가정하면 다음과 같이 언어 를 로 줄일 수 있습니다 .N P A H f ( s , c ) c s AHNPAHf(s,c)csA

  • 주어진 입력s
  • 입력 받는 튜링 머신 은 모든 인증서 시도하고 가 임을 확인하는 인증서 이면 중지합니다 .x c c s AMxccsA
  • 복귀 (즉, 참 IFF 복귀 입력에 정지하고 )M의 XH(M,x)Mx

따라서 Halting Problem을 해결하는 다중 시간 알고리즘을 한 번만 호출하면 다항식 시간으로 문제를 해결할 수 있습니다 .NP

그러한 축소는 유용하지 않습니다. 왜냐하면 그것이 "거짓이면 뭔가"인지를 알려주기 때문입니다. 우리는 이미 계산할 수없는 문제에 대한 폴리 타임 알고리즘이 없다는 것을 알고 있습니다.


7
"정의는 상당히 완전하다", 그러나 당신의 대답에서 그 인용을 따르는 것은 아닙니다.

이것에 대해 질문이 있습니다. 적절한 제약 조건에서 가능한 가장 큰 프로그램 세트의 정지 문제를 해결하는 함수를 상상할 수 있지만이 함수는 여전히 계산할 수 없다고 상상할 수 있습니다 (무한한 시간이 주어도 결코 찾을 수 없다는 의미에서) . 우리는 어떻게 든 경우 그러나 않았다 그것에 해결책을 가지고 있습니다, 심지어는 반드시 모든 NP-어려운 문제를 해결해야한다고 나에게 분명하지 않다. 따라서이 답변의 논리가 따르지 않거나 (결정 불가능! = 계산 불가능 함) 내 추론에 결함이 있습니다. 결함은 무엇입니까?
Mehrdad

12
NP 하드에 대한 정의를 포함하여이 답변의 대부분은 부정확합니다. "모든 NP 문제 B에 대해 B에서 A 로의 폴리 타임 감소가있는 경우"문제 A는 NP 하드입니다. 즉 없습니다 "A는 P = NP 후, 폴리 시간이면."와 같은 것을 (후자는 전자의 결과이지만 그 반대의 경우도 마찬가지입니다.) 특히, 계산하기 어려운 문제는 거의 확실하지 않으며 NP가 어렵지 않습니다. 나는 세부 사항을 해결하지 못했지만 (강제적 인 의미에서) 충분히 일반적인 세트의 회원 문제는 트릭을 수행해야합니다. 그러나 정지 세트는 특히 감소에 의해 NP-hard입니다.

7
이 같은 A와 B에서 폴리 시간 단축에 대한 생각 : 그것은 다항식 시간에 실행,하지만 그것은 하나의 단계에서 쿼리에 특별한 능력, 오라클을 가지고 프로그램은 문제 B의 답변 인스턴스는 관계없이 여부의 B에 대한 다중 시간 알고리즘이 있거나 B가 계산 가능한지 여부에 관계없이 여전히 다음과 같은 질문을하는 것이 합리적입니다. 오라클이 요청한 질문에 단일 답변으로 올바르게 대답한다고 가정하면 해당 프로그램을 수행 다항식 시간으로 실행하고 문제 A의 인스턴스를 올바르게 해결합니까?

2
@MikeHaskel 귀하의 오라클 유추는 오라클을 쿼리 한 후 프로그램이 해당 오라클과 동일한 답변으로 중지 해야하는 경우에만 정확합니다. 그렇지 않으면 co-SAT가 SAT로 줄어 듭니다. oracle을 쿼리하고 부정합니다. 튜링 감소와 같은 일부 감소 개념에서는 이것이 허용되지만 표준 폴리-시간 감소 또는 다 대일 감소에서는 그렇지 않습니다.
chi

16

이 질문에 대해서는이 커뮤니티에서 상당한 혼란이있는 것으로 보입니다. 물을 정화하고 계산 성과 NP- 경도의 관계를 밝히기 위해 자세한 답변을 드리겠습니다.

먼저, 관련된 다양한 정의에 대해 명확하고 명시 적으로 밝히면 많은 혼란이 해결 될 것이라고 믿습니다.

문자열은 어떤 고정 된 유한 알파벳 문자의 유한 순서입니다.

의사 결정 문제는 문자열의 집합입니다. (이 세트는 일반적으로 무한합니다.) 의사 결정 문제점을 일부 특성의 문자열 테스트로 생각하십시오. 특성이있는 문자열은 세트에 있고 특성이없는 문자열은 그렇지 않습니다.

B의 두 가지 결정 문제가 있다고 가정합니다 . 말 A가다항식 시간 환원B 어떤 다항식이 있다면 , p는 ( X ) 와 일부 알고리즘 알고리즘 M 같은 그 모든 문자열 S ,ABABp(x)Ms

  • 당신이 제공하는 경우 입력과 S , M의 가 정지보다 적은 수의 P ( | 이야 | ) (단계 | 에요 | 문자열의 길이 ) 및 문자열 출력 M ( ) .MsMp(|s|)|s|sM(s)
  • 에경우만 M ( ) B .sAM(s)B

모든 NP 결정 문제 A 에 대해 AB로 다항식 시간 감소 가능한 경우 결정 문제 NP-hard 입니다.BAAB

의사 결정 문제는 계산 가능한 알고리즘이있는 경우 그 모든 문자열을, S ,Ms

  • 당신이 제공하는 경우 입력과 S , M의 중지하고 출력 중 "예"또는 "아니오".MsM
  • A에 있으면 출력은 "yes"이고 그렇지 않으면 "no"입니다.sA

위의 정의를 사용하면 의사 결정 문제, 축소 또는 NP 경도의 정의에서 의사 결정 문제를 계산할 필요가 없다는 점에서 귀하의 질문에 근본적으로 혼동이 될 수 있다고 생각되는 것을 즉시 확인할 수 있습니다. 정의는 의사 결정 문제를 임의의 문자열 세트로 생각하는 데 완벽하게 적합하며 이러한 세트는 실제로 매우 불쾌 할 수 있습니다.


테이블에 두 가지 질문이 남습니다.

  1. 정의는 계산 불가능한 기능이 NP-hard 일 가능성을 열어 둡니다. 이 있습니까 실제로 , 비 계산 가능한 NP-하드 기능?
  2. 문제가 NP-hard라고 말하는 것은 해결하기 어렵다는 직관이 있습니다. 계산할 수 없다고 말하는 것은 해결하기가 "정말 어렵다"라고 말하는 것과 같습니다. 그렇다면 계산 불가능한 모든 문제가 NP-hard입니까?

질문 1은 대답하기가 더 쉽습니다. NP가 어려운 계산 불가능한 의사 결정 문제를 찾는 데 특히 중요한 두 가지 방법이 있습니다. 첫 번째는 중지 문제입니다. 중지 문제 는 모든 계산 가능한 결정 문제가 다항식 시간 인 H로 환원 될 수 있다는 특성을 가지고 있습니다. NP 문제는 계산 가능하기 때문에 모든 NP 문제는 다항식 시간이 H로 환원 될 수 있으므로 H 는 NP-hard입니다.HHHH

계산 불가능한 NP-hard 문제를 구축하는 또 다른 중요한 방법은 알려진 NP-hard 문제를 계산 불가능한 알려진 문제와 결합 할 수 있다는 것을 관찰하는 것입니다. 하자 NP-열심히하고 B는 비 계산 가능합니다. 결정 문제 A B 를 다음과 같이 구성하십시오. A B 에는 "0"형식의 문자열과 A " 문자열 ,"1 "형식 문자열, B " 문자열이 포함됩니다 . B는 우리가 (문제의) 삭감을 켤 수 있기 때문에 NP-어렵다 에 감소로 BABABABABABAAB: 출력 문자열 앞에 추가 "0"을 출력하도록 알고리즘을 조정하십시오. 를 계산 하려면 "1"로 시작하는 문자열이 세트에 있는지 결정해야하므로 A B 는 계산할 수 없습니다 . B 는 계산할 수 없기 때문에 불가능 합니다.ABABB


질문 2는 상당히 까다 롭지 만 실제로 NP-hard가 아닌 계산 불가능한 결정 문제가 있습니다 (P NP 라고 가정 ). Yuval의 정답은 그러한 의사 결정 문제를 명시 적으로 구성합니다. (객실의 모든 계산 이론가들에게는 "Cohen Π 0 1 -generic"도 트릭을 수행 할 것입니다.) "NP- 어려운 문제는 어렵고 계산할 수없는 문제는 더 어려운 직관을 깨뜨릴 것입니다. "잘못되었습니다.Π10

NP-hardness와 non-computability는 매우 일반적인 의미에서 문제가 "단단하다"고 말하지만, 그것들은 매우 다르며 같은 종류의 현상과 같이 모여서는 안됩니다. 특히, NP-경도는 "긍정적 인"속성은 다음과 같습니다 NP에 하드 문제 위한 치트 시트에 액세스 할 수있는 권한을 부여한다는 의미에서 어려운 , 당신이 문제의 하드 클래스를 해결AA . : 반면에, 비 계산 가능성은 "부정적인"속성입니다 비 계산 가능한 문제 는 의미에서 하드 수 없습니다 해결 자원의 특정 클래스AA .

( "강제 "는 내가 언급 한 "Cohen 제네릭" 을 생성하는 데 사용되는 기술 입니다. 매우 모호하기 때문에 강제는 "일반"인 것을 생성하는 일반적인 방법입니다. 긍정적 인 속성과 모든 부정적인 속성이 없기 때문에 강제로 계산할 수없고 NP-hard가 아닌 문제를 직접 생성 할 수 있습니다.)Π10


2
대각선으로 NP가 어려운 결정 불가능한 언어를 만들 수 없습니까? 모든 결정자와 SAT로부터의 모든 폴리 타임 감소에 대해 대각선으로 표시합니다.
Yuval Filmus

1
@YuvalFilmus 아마도 작동 할 것입니다. SAT에서 폴리 시간 감소에 대한 대각선 화가 가능한 이유에 대한 세부 정보를 작성하는 것이 강제력이 있다는 것을 보여주는 풍미와 비슷하기 때문에 그 용어에 대해서는 생각하지 않았습니다.

1
@YuvalFilmus 나는 또한 당신이 P NP 를 가정해야한다는 설명을 추가 했다. 내 증거에는 "NP에는 문제가 있지만 P에는 문제가 없다"는 증거가 분명히 있었다.

1
@aelguindy 가장 접근하기 쉬운 방법이 무엇인지 잘 모르겠습니다. 나는 매우 일반적이고 강력한 강제 기법을 언급했다 . 나는 교과서가 아닌 사람들로부터 그것을 배웠기 때문에 개인적으로 강제에 대한 훌륭한 언급을 알지 못합니다. 그러나 Yuval이 지적했듯이 강제는 아마도 과잉 일 것입니다. Soare의 "재귀 적으로 열거 가능한 세트 및 학위"는 친숙해지기를 원하는 경우 이러한 스타일의 많은 인수를 다루는 교과서입니다. 다시 말하지만, 대부분은 아마 과잉 일 것입니다. ...

1
@aelguindy 또한 결정 문제 세트를 토폴로지 공간으로 생각하면 Baire 범주 정리 를 마사지하여 증거를 생성 할 수 있습니다. 이 정리는 강제와 밀접한 관련이 있지만 더 오래되고 더 직설적입니다.

11

아니. NP-Hard는 가장 어려운 NP 문제보다 어렵거나 어렵다는 것을 의미합니다. 직관적으로 계산할 수 없으면 NP보다 훨씬 어렵습니다.

위키 백과 :

중지 문제와 같이 NP가 어렵지만 NP가 완료되지 않은 의사 결정 문제가 있습니다.

누구나 계산할 수 없다는 것을 알고 있습니다.


4
중지 할 수없는 문제와 같은 일부 계산 불가능한 문제는 NP-hard이지만 계산할 수없는 모든 문제가 NP-hard라는 것을 의미하지는 않습니다. jmite의 답변에 대한 내 의견을 참조하십시오. NP- 경도는 긍정적 인 속성입니다. 문제에 대한 답변이 NP 문제를 해결하는 데 도움이 될 수 있다고합니다 . NP-hard는 문제가 어느 정도 어렵다는 것을 의미합니다. 어려운 문제가 모두 NP-hard 인 것은 아닙니다.

@MikeHaskel : 중지 문제에 대한 솔루션을 소유하면 모든 문제가 P 중지 문제의 어려움으로 줄어 듭니다.
Joshua

1
@Joshua : 말이되지 않습니다. 그것은 비 증거의 조각과 같습니다. 문제에 솔루션에 유한 비트 수가 있다는 것은 무엇을 의미하며, 이것이 계산할 수없는 모든 문제에 적용되는 이유는 무엇이라고 생각하십니까? "P * 정지"는 무슨 뜻입니까? "n 번째 비트를 통해 줄이면 ..."의 나머지는 무엇입니까?
user2357112는 Monica

1
@Joshua : 핵심 문제는 모든 문제가 Turing 기계에 해당한다고 가정하는 것 같습니다. 모든 문제가 튜링 기계에 해당하는 것은 아닙니다. problem()호출 할 수있는 기능 이 없습니다 .
user2357112는 Monica

1
당신은 아마 채팅이나 뭐이 이동해야
파괴 가능한 레몬

9

완전성을 위해 다음 정리를 증명해 보겠습니다.

P NP 인 경우에만 NP-hard가 아닌 계산할 수없는 언어가 있습니다 .

P = NP 인 경우, 사소하지 않은 언어 ( 와 다른 언어 )는 NP-hard (운동)이며, 특히 계산할 수없는 언어는 NP-hard입니다.,{0,1}

이제 P NP 라고 가정하십시오 . 하자 T는 내가 모든 튜링 기계의 일부 열거합니다. 필요한 언어 L 을 단계적으로 구성 할 것 입니다. 각 단계에서 우리는 계속됩니다 { 0 , 1 , ? } 의 착색 { 0 , 1 } * 우리는 또한 넣어야 L ; 여기에 0 수단을 우리는 문자열이 아닌 결정했다고 L , 1 우리는 문자열에 결정 것을 의미 L , 그리고 ?TiL{0,1,?}{0,1}L0L1L?우리가 아직 결정하지 않았다는 것을 의미합니다. 유한하게 많은 문자열을 제외하고는 모든 색상이 표시 .?

단계에서 , 우리는 생각 T 나는 어느 쪽의 입력을 받아 그것을 거부, 또는 전혀가 정지 기계로. 경우 T는 내가 항상 다음 중단하지 않습니다 우리는 아무것도하지 않습니다. 경우 T 항상 우리가 문자열을 찾을 수 있습니다을 정지합니다은 X 그러한 L ( X ) = ? 한 세트의 L ( X ) : = 0 경우 T I ( x는 ) 받아 L ( X ) : = 1 의 경우 T2iTiTiTixL(x)=?L(x):=0Ti(x)L(x):=1 거부합니다.Ti(x)

스텝 , 우리는 생각 T I는 입력에 (아마도) 부분 함수를 계산하는 컴퓨터로. 경우 T 전체가 아니거나 총하지만 다항식 시간에 실행되지 않거나 총하지만 그 범위는 유한의 경우, 우리는 아무것도하지 않는 경우. 경우 T 다항식 시간 내에 실행 합계이며, 무한한 범위를 가지고, 우리는 문자열 검색 X 되도록 L ( T I ( X ) ) =를 ? . 만약 X S T (즉, 만약 X2i+1TiTiTixL(Ti(x))=?xSATxL(x):=0L(x):=1

{0,1,?}{0,1}

L2iTiTiLTiTiLTiTi2i+1L


3

LLNPLL

ANTM={M,wM is a nondeterministic Turing machine that accepts w}

LNPLMfLANTM

f(x)=M,x

3

나는 사람들이 계산할 수없는 NP-hard 문제가 없다고 생각하게하는 이유는 NP-hardness가 P 나 NP와 같은 경도의 상한이 아니라 문제의 경도에 대한 하한이라는 점을 놓친 것입니다.

NP-hard 인 언어 L은 그것이 NP의 언어보다 위라는 의미입니다. 이제 이것을 이해했다면 임의의 어려운 문제가 있음을 보여 주어야합니다.

AACACAHaltCACA

AAA<AA<A<A<A<...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.