Alan Turing bilgisayarı keşfettiğinde, önerilen bilgisayar için birkaç model vardı. Turing, bu modellerin bazılarının (3) birbirini simüle edebileceğini ve Ackermann işlevini hesaplayabildiğini kanıtlarken, diğer modeller Ackermann işlevini değil simüle edebilir (böylece 3'ü simüle edemediler). Bu nedenle, bu 3 model (Turing Machine, von Neumann ve bilmediğim) bir bilgisayar mimarisi olarak seçildi. Bu, Ackermann işlevinin bilgisayarın sınırı olduğu anlamına gelmez, ancak sanırım zor bilimdir. Ackermann fonksiyonundan daha hızlı büyüyen herhangi bir hesaplanabilir fonksiyonun farkında değilim.
Şimdi, sorunuzla eşleşen pratik bir sorun olduğunu düşünmüyorum, ama belki de bir tane oluşturabiliriz. Yine de girdiye kısıtlamalar koymamız gerekiyor. O (n) kullanamadığımız için tüm girdiyi kontrol edemeyiz. Aslında, girişin uzunluğunu O (log n) olacağı için bile kontrol edemeyiz. Bu nedenle, ilk parametre olarak, girişin geri kalanının uzunluğunun, örneğin Ackermann'ın (c) girişin uzunluğu olacağı şekilde bir temsiline ihtiyacımız var. Bu da uygun olmadığından, giriş parametremizde ilk değer olarak c parametresini istiyoruz, öyle ki bb (c) girişin uzunluğu hakkındadır, burada bb meşgul kunduz işlevidir. Bu işlev tutarsızdır ancak bb (c) kesinlikle vardır. Sonra algoritma şöyle gider:
for (int i=0; i<c; i++) {
if (input[i] == null) {
return false;
}
}
return true;
Algoritmanın amacı, c'nin bb'nin tersi olması durumunda, giriş uzunluğunun bb (c) 'den büyük olup olmadığını kontrol etmektir.
Ackermann işlevinden daha hızlı büyüyen hesaplanabilir bir işlev varsa, herhangi bir girdide sorunuzu cevaplayan bir algoritma oluşturmak için tersini kullanabileceğimizi düşünüyorum.