Коли Алан Тьюрінг виявив комп'ютер, для нього було запропоновано кілька моделей. Тьюрінг довів, що деякі (3) з цих моделей можуть імітувати одна одну І обчислювати функцію Акермана, тоді як інші моделі можуть імітувати одна одну, але не функцію Акермана (тому вони не можуть імітувати 3). Тому ці 3 моделі (машина Тьюрінга, фон Неймана та одна, яку я не знаю) були обрані архітектурою для комп'ютера. Це не означає, що функція Акермана є межею комп'ютера, але я вважаю, що це важка наука. Я не знаю жодних обчислювальних функцій, які зростають швидше, ніж функція Акермана.
Зараз я не думаю, що існує практична проблема, яка відповідає вашому питанню, але, можливо, ми можемо її побудувати. Нам потрібно обмежити вхід. Оскільки ми не можемо використовувати O (n), ми не можемо перевірити весь вхід. Насправді ми навіть не можемо перевірити довжину введення, як це було б O (log n). Отже, нам потрібно в якості першого параметра представити довжину решти вводу, наприклад c таке, що Ackermann (c) - довжина вводу. Оскільки це також не підходить, ми вимагаємо в якості першого значення вводити параметр c таким чином, що bb (c) є приблизно довжиною входу, де bb - функція зайнятого бобра. Ця функція є непорушною, але bb (c), безумовно, існує. Потім алгоритм виглядає так:
for (int i=0; i<c; i++) {
if (input[i] == null) {
return false;
}
}
return true;
Метою алгоритму є перевірка того, що якщо c - зворотний bb, якщо тоді вхідна довжина більша bb (c).
Якщо є обчислювана функція, яка зростає швидше, ніж функція Акермана, я думаю, ми можемо використовувати її зворотну для створення алгоритму, який відповідає на ваше запитання на будь-якому вході.