해결을위한 Oracle 호출 수의 하한


9

나는 쉬운 운동 (아래 스포일러) 인 다음과 같은 질문에 직면했다.

우리는 주어진다 n 정지 문제의 사례 (즉, TM) M1,...,Mn), 우리는 정확히 어느 것이 중단되는지 결정해야합니다. ϵ. 즉, 우리는 출력해야합니다{i:Mi halts on ϵ}. 중지 문제에 대한 오라클이 제공되지만 최소한의 횟수 만 사용해야합니다.

그것이 할 수 있음을 보여주는 것은 어렵지 않습니다. log(n+1) 전화.

내 질문은 : 우리는 하한을 증명할 수 있습니까? 그러한 경계를 찾기가 매우 어렵다고 의심 할만한 이유가 있습니까?

질문 자체에 대한 답변 (스포일러, 호버 마우스) :

의 경우를 고려 3TM. TM을 만들 수 있습니다H2 그 실행 M1,M2,M3동시에 두 개 이상이 정지되면 정지합니다 (그렇지 않으면 멈춤). 마찬가지로 TM을 구성 할 수 있습니다H1그들 중 적어도 하나가 정지하면 정지합니다. 그런 다음 오라클을 호출 할 수 있습니다H2. 정지하면 머신을 병렬로 실행하고 정지 할 때까지 기다릴 수 있습니다. 그런 다음 마지막 오라클에서 오라클을 호출 할 수 있습니다. 오라클이 "아니오"라고 말하면 오라클을 실행합니다H1. 정지하면 기계가 정지 할 때까지 기계를 작동 시키며 정지하는 유일한 기계입니다. 만약H1멈추지 않으며, 아무도 멈추지 않습니다. 이것을 확장n 기계는 쉽다.

이 질문에 대한 첫 번째 관찰은 정보 이론 도구를 사용하여 해결하는 것이 불가능 해 보인다는 것입니다. 오라클없이 기계를 실행하여 정보를 얻는 능력에 결정적으로 의존하기 때문입니다.


@Kaveh-Neal Young이 썼 듯이 정확한 정지 기계 세트를 계산해야합니다.
Shaull

답변:


11

결과는에서 찾을 수 있습니다

그들의 증거는 실제로 당신의 문제를보다 적은 것으로 해결할 수 없다는 것을 보여줍니다 log2n모든 세트 에 대한 쿼리X멈춤 문제 자체는 물론이다. 일부 표기법의 경우 문제가 때때로 표시됩니다.CnK 또는 CnHALT (정지 문제에 대해 가장 좋아하는 표기법에 따라 다름).

이것과 많은 관련 결과는 다음을 참조하십시오.


10

편집 : 내가 대답 한 주장은 잘못이 아니었지만 약간 오해의 소지가 있었는데, 일부 는 상한이 타이트해야한다는 것을 보여주었습니다. n (실제로는 빡빡해야하기 때문에 실제로는 사소합니다. n=2 바운드는 1)입니다.

보다 정확한 주장은 다음과 같습니다. 상한의 경우log2n 어떤 특정에 대한 느슨한 n그런 다음 모두 를 위해 n 필요한 오라클 호출 수는 O(1).

(확실히 아닙니다 O(1)따라서 상한이 결코 풀리지 않습니다! 그러나 나는 실제로 여기에서 그것을 증명하지 못하고 문제에 대한 다른 대답을 고려할 때 추구 할 가치가없는 것 같습니다.)

최대 출력계산 하는 문제를 고려하십시오 .

주어진 n튜플 (M1,,Mn) 튜링 머신의 최대 출력을 계산합니다. ϵ). 정지 된 것이 없으면 0을 반환합니다.

의 기능으로 n이 함수를 계산하는 데 필요한 최악의 Oracle 호출 수는 다음 중 어느 것을 결정하는 데 필요한 수와 같습니다. n주어진 기계가 정지합니다. (어떤 기계가 정지했는지 아는 경우 최대 출력을 쉽게 계산할 수 있습니다. 반대로, 어떤 기계가 정지했는지 알고 싶다면 문제 설명의 구성에 따라 기계를 구성 할 수 있습니다{Mi} (i=1,2,,n) 어디 Mi 모든 실행 n 주어진 기계를 병렬로 멈춘 후 정지 및 출력 i 만약 i그들 중 이제까지 중단되었습니다. 최대 출력은 중단되는 숫자를 알려줍니다. 그로부터 정확히 어떤 정지를 계산할 수 있습니다.)

자 이제 n0 가장 작은 정수이다 n (있는 경우) 다음을 보유합니다.

사용 C(n)=max{kZ:2k<n}오라클 전화, 하나의 최대 출력을 계산할 수 주어진 기계. (즉, 상한은 대해 엄격하지 않습니다 .)nn

이므로 분명히 입니다. 실제로, 이므로 이기도 하지만 (Oracle 호출없이) 지정된 시스템 의 최대 출력을 계산할 수 없습니다. 이제 더 큰 고려하십시오 .n0>1C(1)=1n0>2C(2)=02n

제 : 경우 유한하고, 임의의에 대해 , 하나의 최대 출력을 계산할 수 에서 주어진 시스템 오라클 전화. n0nnC(n0)( 이 유한이면 입니다.)n0C(n0)=O(1)

증명. . 우리는 에 유도함으로써 그것을 증명합니다 . 기본 사례는 이며 과 정의로 유지됩니다 .nnn0n0C

하자 주어진, 그 TM 될 튜링 기계만을 사용하여 최대 출력을 계산 오라클 호출한다.Q0n0C(n0)

수정하십시오 . 머신 주어지면 다음과 같이 최대 출력을 계산하십시오.n>n0nM1,,Mn

첫 번째 기계에 . 실행 고려 다음에 기계. 참고 것을 하게 오라클을 호출하고, 거기에만 이러한 호출에 오라클 가능한 응답. 정의상 입니다. 하자 나타 일 수 응답. 각 , 건설 기계 시뮬레이션 다음과 같이 이들 머신을 :M1,,Mn0Q0n0Q0C(n0)n=2C(n0)n=2C(n0)<n0oiii=1,,nMiQ0

TM (입력 ) :Miϵ

  1. 시뮬레이션 온 기계 , 대신 오라클를 호출에 따라 오라클 응답을 가정 .Q0n0(M1,,Mn0)oi
  2. 이 시뮬레이션은 중단되지 않을 수 있습니다 (예 : 가 오라클이 실제로 반환하는 것이 아닌 경우 ).oi
  3. 시뮬레이션이 멈추는 경우,하자 있는 최대 출력 될 주어질 것이라고 말했습니다.hiQ0
  4. 모든 머신을 더브 테일하십시오 . 그중 하나가 출력하면 를 중지하고 출력 .n0(M1,,Mn0)hihi

이제 주어진 머신 순서 에서 첫 번째 머신 을 이러한 머신 . 이 기계 순서에서 하여 계산 된 값을 리턴하십시오 . (오라클은 되풀이하기 전에 호출되지 않으므로 오라클은 기본 사례에 도달 한 후에 만 ​​호출됩니다.)nn0M1,,Mn0n<n0M1,,Mnn(n0n)<n

이 계산이 올바른 이유는 다음과 같습니다. 들어 되도록 오라클에 의해`올바른 '응답 인 쿼리에, 멈추고 원래의 정확한 최대 출력을 제공 할 기계. 따라서 기계 의 최대 출력 은 최소한 기계 의 최대 출력 입니다. 반면 4 단계에서는 가 의 최대 출력보다 큰 출력을 제공 할 수 없습니다 . 따라서, 기계 의 최대 출력ioiQ0Min0n(M1,,Mn)n0(M1,,Mn0)Mi(M1,,Mn0)n(M1,,Mn) 은 대체 하는 머신 의 최대 출력과 같습니다 . QEDn0

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