Alan Turing이 컴퓨터를 발견했을 때 컴퓨터에 제안 된 여러 모델이있었습니다. 튜링은 이러한 모델 중 일부 (3)가 서로를 시뮬레이션하고 Ackermann 함수를 계산할 수있는 반면 다른 모델은 서로를 시뮬레이션 할 수 있지만 Ackermann 함수는 시뮬레이션 할 수 없으므로 3을 시뮬레이션 할 수 없음을 증명했습니다. 따라서이 3 가지 모델 (Turing Machine, von Neumann 및 내가 모르는 모델)이 컴퓨터의 아키텍처로 선택되었습니다. 이것은 Ackermann 기능이 컴퓨터의 한계라는 것을 의미하지는 않지만 어려운 과학이라고 생각합니다. Ackermann 함수보다 빠르게 증가하는 계산 가능한 함수를 알지 못합니다.
이제는 귀하의 질문과 일치하는 실제적인 문제가 있다고 생각하지 않지만 아마도 우리는 하나를 구성 할 수 있습니다. 입력에 제약을 두어야합니다. O (n)을 사용할 수 없으므로 전체 입력을 확인할 수 없습니다. 실제로 입력 길이는 O (log n)이므로 확인할 수 없습니다. 따라서, 우리는 Ackermann (c)가 입력의 길이가되도록 c와 같이 나머지 입력 길이의 표현을 첫 번째 매개 변수로 필요로합니다. 이것 또한 적합하지 않기 때문에, bb (c)가 입력의 길이와 같고, 여기서 bb는 사용중 비버 함수가되도록, 입력 c의 첫 번째 값으로 매개 변수 c를 요구합니다. 이 함수는 계산할 수 없지만 bb (c)는 확실히 존재합니다. 그런 다음 알고리즘은 다음과 같습니다.
for (int i=0; i<c; i++) {
if (input[i] == null) {
return false;
}
}
return true;
알고리즘의 목적은 c가 bb의 역수이면 입력 길이가 bb (c)보다 큰지 확인하는 것입니다.
Ackermann 함수보다 더 빠르게 계산할 수있는 계산 가능한 함수가 있다면, 입력에 대한 질문에 답하는 알고리즘을 역으로 사용할 수 있다고 생각합니다.