Quando Alan Turing descobriu o computador, havia vários modelos para o computador proposto. Turing provou que alguns (3) desses modelos poderiam simular-se E calcular a função de Ackermann, enquanto outros modelos poderiam simular-se, mas não a função de Ackermann (para que não pudessem simular o 3). Portanto, esses três modelos (Turing Machine, von Neumann e um que eu não conheço), foram escolhidos como a arquitetura para um computador. Isso não significa que a função Ackermann seja o limite do computador, mas suponho que seja uma ciência difícil. Não conheço nenhuma função computável que cresça mais rápido que a função Ackermann.
Agora, não acho que exista um problema prático que corresponda à sua pergunta, mas talvez possamos construir um. Porém, precisamos colocar restrições na entrada. Como não podemos usar O (n), não podemos verificar toda a entrada. De fato, não podemos nem mesmo verificar o comprimento da entrada, pois seria O (log n). Portanto, precisamos como primeiro parâmetro uma representação do comprimento do restante da entrada, por exemplo c, de modo que Ackermann (c) seja o comprimento da entrada. Como isso também não é adequado, exigimos como primeiro valor em nossa entrada o parâmetro c, de forma que bb (c) seja sobre o comprimento da entrada, onde bb é a função de castor ocupado. Essa função é incomputável, mas bb (c) certamente existe. Então, o algoritmo é assim:
for (int i=0; i<c; i++) {
if (input[i] == null) {
return false;
}
}
return true;
O objetivo do algoritmo é verificar se, se c é o inverso de bb, se o comprimento da entrada é maior que bb (c).
Se existe uma função computável que cresce mais rapidamente que a função Ackermann, acho que podemos usá-la inversa para criar um algoritmo que responda à sua pergunta em qualquer entrada.