Cuando Alan Turing descubrió la computadora, solía haber varios modelos para la computadora propuesta. Turing demostró que algunos (3) de estos modelos podían simularse entre sí Y calcular la función de Ackermann, mientras que los otros modelos podían simularse entre sí, pero no la función de Ackermann (por lo que no podían simular el 3). Por lo tanto, estos 3 modelos (Turing Machine, von Neumann y uno que no conozco), fueron elegidos como la arquitectura para una computadora. Esto no significa que la función de Ackermann sea el límite de la computadora, pero supongo que es una ciencia difícil. No conozco ninguna función computable que crezca más rápido que la función de Ackermann.
Ahora, no creo que haya un problema práctico que coincida con su pregunta, pero quizás podamos construir uno. Sin embargo, necesitamos poner restricciones en la entrada. Como no podemos usar O (n), no podemos verificar toda la entrada. De hecho, ni siquiera podemos verificar la longitud de la entrada, ya que sería O (log n). Por lo tanto, necesitamos como primer parámetro una representación de la longitud del resto de la entrada, por ejemplo c tal que Ackermann (c) sea la longitud de la entrada. Como esto tampoco es adecuado, exigimos como primer valor en nuestra entrada el parámetro c, de modo que bb (c) sea aproximadamente la longitud de la entrada, donde bb es la función de castor ocupado. Esta función es incuestionable pero bb (c) ciertamente existe. Entonces, el algoritmo es como:
for (int i=0; i<c; i++) {
if (input[i] == null) {
return false;
}
}
return true;
El propósito del algoritmo es verificar que si c es el inverso de bb, si la longitud de entrada es mayor que bb (c).
Si hay una función computable que crece más rápido que la función de Ackermann, creo que podemos usar su inversa para crear un algoritmo que responda a su pregunta en cualquier entrada.