Bisakah Anda menunjukkan bagaimana membangun fungsi Ackerman (sebenarnya saya tertarik pada versi yang diusulkan oleh Rózsa Péter dan Raphael Robinson) melalui operator standar rekursif mu? Saya mencoba makalah asli oleh Péter dan Robinson, tetapi makalah Péter menggunakan bahasa yang berbeda dari makalah Inggris dan Robinson "Rekursi dan Rekursi Ganda" dan "Fungsi Rekursif Primitif" juga tidak membantu: pertama-tama tampaknya lebih relevan, tetapi digunakan juga disebut operator rekursi ganda untuk mendefinisikan fungsi Ackerman, sehingga dalam hal ini dicari definisi eksplisit operator dalam istilah rekursif.
Yang paling dekat dengan jawabannya adalah P. Smith dalam "Pengantar teorema Godel" (CUP, 2007) (29,4 Fungsi Ackermann-Peter adalah μ-rekursif), tetapi ia muncul dengan yang berikut: "membuat argumen kedap air cukup membosankan meskipun tidak sulit. Tidak ada yang bisa dipelajari dari menguraikan detailnya di sini: jadi kami tidak akan melakukannya. "
Saya juga mencoba buku Rózsa Péter "Fungsi Rekursif" (1967, Academic press). Ada banyak varian untuk operator rekursi yang diberikan di sana. Biasanya satu mengurangi ke yang lain. Saya percaya bahwa ada jenis operator rekursi yang cocok untuk definisi fungsi Ackerman dan urutan langkah-langkah yang menguranginya menjadi redursi primitif dan operator minimisasi, tetapi saya mendapati diri saya tidak dapat menyelidiki sepanjang jalan turun.
sumber
Jawaban:
Memecah fungsi Ackermann sampai ke operator dasar akan sangat panjang, tapi di sini ada sketsa:
Perhatikan bahwa ketika menghitung secara rekursif, pada setiap titik perhitungan Anda berurusan dengan ekspresi dari bentuk . Diberikan fungsi pasangan berpasangan dengan terbalik , kita dapat menyandikan status ini sebagai (hanya dalam kasus ) .Kita kemudian dapat mendefinisikan fungsi evaluasi satu langkah, dengan syarat:A ( m 1 , A ( m 2 , ... , A ( m k , z ) ... ) p ( π 1 , π 2 ) p ( z , p ( k , p ( m k , ... , p ( m 2 , m 1 ) ... ) pA(m,x) A(m1,A(m2,…,A(mk,z)…) p (π1,π2) p(z,p(k,p(mk,…,p(m2,m1)…) k = 0p(z,0) k=0
Anda kemudian mendapatkan fungsi evaluasi n-langkah menggunakan rekursi primitif:
Akhirnya, bungkus rekursi di sekitar untuk menemukan titik di mana kita sampai pada keadaan bentuk - akan menjadi .μ E p(z,0) z A(m,x)
sumber
Ini adalah varian dari ide yang diposting oleh Kaveh, tetapi saya tetap memposting karena memungkinkan Anda untuk menyapu banyak detail buruk di bawah karpet tanpa benar-benar melakukan handwaving.
Fakta kuncinya adalah bahwa grafik fungsi Ackermann adalah primitif rekursif. Tidak sulit untuk menemukan ikatan rekursif primitif yang sangat kasar pada kode untuk tabel nilai Ackermann yang diperlukan untuk memverifikasi bahwa . Jangan mencoba untuk mendapatkan batas yang tajam - semakin kasar semakin mudah! Sesuatu seperti harus cukup baik, tetapi itu tergantung pada pilihan skema pengkodean Anda. Karena verifikasi nilai-nilai tabel dapat dijelaskan oleh rumus terikat, itu adalah primitif rekursif.B(m,n,w) A(m,n)=w B(m,n,w)=2mww
Setelah Anda memiliki definisi rekursif primitif untuk grafik dari fungsi Ackermann, cukup tentukan .G(m,n,w) A(m,n)=μwG(m,n,w)
Sayangnya, strategi ini tidak berfungsi untuk semua fungsi yang didefinisikan oleh rekursi ganda (atau ganda). Alasan kerjanya untuk fungsi Ackermann - seperti yang akan Anda lihat ketika mencoba mencari baik - adalah ia tumbuh sangat monoton. Untuk kasus umum, Anda harus menggunakan ide Kaveh dan minta mencari tabel nilai yang sesuai. Ini pada dasarnya adalah alasan yang sama mengapa Teorema Bentuk Normal Kleene perlu melakukan proyeksi setelah menerapkan operator .B(m,n,w) μ μ
sumber