튜링의 의미에서 계산 가능한 숫자를 열거 할 수있는 이유는 무엇입니까? 매우 분명해야하지만 현재는 보이지 않습니다.
튜링의 의미에서 계산 가능한 숫자를 열거 할 수있는 이유는 무엇입니까? 매우 분명해야하지만 현재는 보이지 않습니다.
답변:
계산 가능한 숫자의 정의가 다음과 같다고 가정합니다 : 입력시 Turing 기계가 있습니다. 와 함께 정지 숫자의 비트.
계산 가능한 수를 생성하는 튜링 머신의 재귀 열거가 있다고 가정하십시오. 대각 화를 사용하여이 재귀 열거의 일부가 아닌 새로운 계산 가능한 숫자를 얻을 수 있습니다.
Turing 기계를 열거하여 계산 가능한 숫자를 열거하려고하지만 모든 Turing 기계가 계산 가능한 숫자에 해당하는 것은 아니며 일반적으로 모든 입력 (0 또는 1 출력 제외)에 대해 Turing 기계가 중지되는지 여부를 결정합니다. 그러나 클럭킹 튜링 머신을 사용하여 실행 시간이 다항식 인 모든 효율적인 계산 가능한 숫자를 열거 할 수 있습니다.
열거 가능한 경우, 자연수 (예 : 계산 가능)를 가진 형용사가있는 경우, 계산 가능한 숫자는 열거 할 수 없습니다.
"NPTM (Number-Printing Turing Machine)"은 모든 상태 전이에 대해 아무것도 인쇄하지 않거나 10 진수, 빼기 부호 또는 마침표를 인쇄 할 수있는 Turing Machine입니다. 이것은 실수의 십진수 표현을 인쇄하기에 충분합니다.
빈 테이프에서 시작하여 NPTM에 의해 충분한 시간이 주어지면 임의로 긴 표현으로 인쇄 할 수있는 임의의 실수로 계산 가능한 실수를 정의 할 수 있습니다. 또한 주어진 NPTM에 의해 숫자가 계산된다고 가정합니다. 잘 구성된 실제 숫자를 인쇄 한 후 정지하거나 (이 경우 숫자는 유한 10 진수 표현 임) 유한 한 시간 안에 올바른 형식의 숫자를 인쇄합니다 소수점을 사용하여 더 많은 시간을 주어 더 많은 자릿수를 인쇄하여 숫자의 정밀도를 높입니다.
예를 들어, 어떤 숫자의 무한 시퀀스를 인쇄하는 기계를 가지고 있다면 1111111111111111111
실제 숫자는 오른쪽에 무한한 표현 만 있기 때문에 어떤 숫자도 계산 한다고 말할 수 없기 때문에 나중에이 조건이 필요 했습니다. 소수점 마침표. 반면에, 기기 3.14
가 인쇄 한 다음 인쇄를 중단하지만 멈추지 않는 경우 단순히 숫자의 정밀도가 증가하지 않기 때문에 실수를 계산한다고 할 수 없으므로이 특정 기기는이를 구성하지 않습니다. 더욱이.
다음은 일부 숫자를 계산하는 NPTM의 예입니다. 다음과 같은 NPTM
1
한 다음 정지합니다. 숫자 1을 계산합니다.1.0
한 다음 정지합니다. 또한 숫자 1을 계산합니다.1.0000000
하고 영점 인쇄를 계속 유지합니다. 이것은 또한 1 번을 계산합니다.3.14
한 다음 정지합니다. 숫자 3.14를 계산합니다.3.14159
하고 다음의 숫자를 영원히 인쇄합니다.. 이 숫자를 계산.-42.
한 다음 정지합니다. 숫자 -42를 계산합니다.그리고 이것은 숫자를 계산 하지 않는 NPTM의 예입니다 . 다음과 같은 NPTM
123123123
한 다음 시퀀스를 123
영원히 인쇄합니다 . 이 무한 시퀀스는 실수를 나타내지 않으므로 숫자를 계산하지 않습니다.1.0.0
한 다음 정지합니다. 이 유한 시퀀스가 제대로 형성되지 않았기 때문이 아닙니다.....-..---
한 다음 정지합니다. 이것은 잘 구성된 실수가 아니기 때문이 아닙니다.3.14
는 멈추지 않지만 다른 어떤 것도 인쇄하지 않습니다. 정밀도가 시간이 지남에 따라 증가하지 않기 때문에 숫자를 계산하지 않습니다.당신은 아이디어가 있습니다. 그런 다음 NPTM의 두 가지 클래스가 있습니다. 실제 숫자를 계산하는 클래스와 그렇지 않은 클래스입니다.
계산 가능한 숫자에 대한 열거를 찾는 데 따른 문제점은 NPTM 자체가 계산 가능하더라도 한 종류의 NPTM을 다른 것으로 구분할 수있는 절차가 없다는 것입니다.
계산 가능한 집합의 정의를 고려하십시오. 셀 수 있으려면, 일부 bijective 기능이 있어야합니다 .
계산 가능한 숫자가 셀 수 있음을 "증명"하기 위해 NPTM 계산에서 이러한 기능을 정의하려는 유혹을받을 수 있습니다 (그리고 사람들이 계산 가능한 숫자를 셀 수 있다고 생각할 때 사람들이 자주하는 일입니다). 이 같은:
NPTM은 셀 수 있으므로 형용사 기능이 있습니다 따라서 존재하는 모든 NPTM을 영원히 열거 할 수 있습니다. 따라서 모든 계산 가능한 숫자를 열거하고 bijective 함수를 정확하게 정의하려면, 간단히 모든 NPTM을 열거해야하지만 실수를 계산하는 것만 계산하십시오. 그러나 어떻게 실수를 계산하는지 어떻게 알 수 있습니까?
글쎄, 우리는하지 않습니다. 즉시 인쇄 1.0
한 다음 인쇄를 중지하고 Post 대응 문제 의 인스턴스를 해결하려고 하는 기계를 생각해 보십시오 . 문제가 해결되면 멈추고 기계는 단지 1 위를 계산했습니다. 그러나 그 문제는 결정할 수 없으므로 결코 멈추지 않을 것이며 결코 멈추지 않으면 실수를 계산하지 않습니다. 그러나 Halting 문제 도 결정할 수 없기 때문에 중단 될지 알 수 없습니다 ! 따라서이 특정 기계와 무한히 많은 다른 기계가 실제 숫자를 계산하는지 아닌지를 알 수있는 방법이 없으므로이 방법으로 bijective 함수를 빌드 / 정의 할 수 없습니다.
bijection을 정의하는 순진한 방법은 실패하며, 방법이 없다는 것을 증명하는 것은 그리 어렵지 않습니다. Yuval Filmus가 제안했듯이 대각선 화를 사용할 수 있습니다.