Ini adalah tindak lanjut dari pertanyaan lain di sini , dan saya harap itu tidak terlalu filosofis. Seperti yang ditunjukkan oleh Raphael dalam komentar pada pertanyaan saya sebelumnya, saya tidak benar-benar mendapatkan definisi "computable", tetapi menurut beberapa makalah yang saya baca, definisi itu juga tidak begitu jelas dalam hal model perhitungan yang lebih lemah daripada menggunakan turing. mesin karena pengkodean input dan output.
Definisi khas dari turing yang dapat dihitung adalah sebagai berikut:
Definisi 1: Suatu fungsi disebut turing computable iff jika ada mesin turing yang menghitung menggunakan pengkodean bilangan alami yang sesuai sebagai string.
Definisi berbeda dalam apa sebenarnya pengkodean yang cocok , tetapi kebanyakan merujuk ke pengkodean biner , pengkodean unary atau pengkodean desimal sebagai pengkodean yang tetap dan sesuai. Dimungkinkan juga untuk menunjukkan bahwa memperbaiki satu encoding diperlukan untuk definisi turing computability. Tetapi apa yang membuat, katakanlah, pengkodean biner dari bilangan asli menjadi spesial sehingga kita dapat mengacomasinya sebagai pengkodean yang cocok? Mungkin karena cocok dengan gagasan intuitif tentang apa arti komputabilitas secara kebetulan .
Sekarang bagaimana jika kita melihat model komputasi yang lebih lemah daripada mesin turing? Sebagai contoh, mari kita pertimbangkan set dari mesin turing "pincang" dengan alfabet yang hanya dapat bergerak ke kanan, dan definisi turing lumpuh yang dapat dihitung yang konsisten dengan turing yang dapat dihitung:
Definisi 2: Suatu fungsi disebut turing yang dilumpuhkan yang dapat dihitung atau dalam jika ada mesin turing yang dilumpuhkan yang menghitung menggunakan pengkodean yang sesuai dari bilangan asli sebagai Sebuah benang.
Jika kita mendefinisikan "encoding cocok" sebagai "encoding biner", maka fungsi adalah tidak dihitung di . Jika kita aksioma "encoding yang sesuai" sebagai "encoding unary", maka dapat dihitung dalam . Ini tampaknya aneh mengingat fakta bahwa setiap orang dapat memperbaiki salah satu pengkodean intuitif yang tak terhingga banyaknya. Seharusnya jelas jika model komputasi dapat menghitung atau tidak tanpa merujuk ke beberapa pengkodean spesifik - setidaknya saya belum pernah melihat ada yang menyebutkan pengkodean apa yang digunakan ketika menyatakan "program loop lebih lemah daripada mesin turing".
Setelah pengantar ini, akhirnya saya dapat mengutarakan pertanyaan saya: Bagaimana cara mendefinisikan "pengkodean yang cocok" dan "komputabilitas" untuk model komputasi sewenang - wenang yang tidak sesuai dengan gagasan intuitif tentang komputabilitas? Apakah ini mungkin dalam kerangka turing computability?
Sunting: Saya mempersingkat pengantar, itu tidak menambah pertanyaan.
sumber
Pertama-tama, Anda tidak dapat memperbaiki "penyandian yang cocok" menjadi string biner, atau penyandian lainnya. Ini karena Anda akan kehilangan terlalu banyak model komputasi, karena model komputasi yang berbeda mungkin memiliki model input dan output yang sangat berbeda. Dengan kata lain, mereka mungkin tidak "berbicara".
Misalnya, istilah kalkulus lambda yang tidak diketik adalah variabel, atau penerapan satu istilah ke yang lain, atau abstraksi dari istilah lambda. Input dan output adalah istilah, string acak. Namun, kalkulus lambda yang tidak diketik adalah Turing-complete karena terdapat "pengkodean yang cocok" yang mengkodekan bilangan alami sebagai istilah lambda dari bentuk tertentu, dan di bawah pengodean ini untuk setiap fungsi yang dihitung ada terdapat istilah lambda yang menghitungnya.
Anda dapat memformalkan "penyandian yang sesuai" jika Anda memperbaiki mesin Turing sebagai model perhitungan komputasi Anda, dan kemudian mengharuskan pengkodean dan dekode dari dan ke string biner harus dilakukan oleh mesin Turing yang selalu berhenti. Misalnya, mesin Turing akan dapat menerjemahkan angka alami sebagai string biner ke istilah Lambda yang menyatakan angka ini, mensimulasikan pengurangan dalam kalkulus lambda, dan menerjemahkan hasilnya kembali ke string biner.
Untuk model perhitungan yang lebih sederhana saya akan mengharapkan pendekatan yang sama: mengambil model referensi perhitungan dan memperbaiki pengkodean bilangan alami, dan kemudian memastikan bahwa pengkodean dan decoding dilakukan dengan contoh dari model sederhana itu. Seperti yang Anda catat, untuk mesin Turing lumpuh, menggunakan angka yang disandikan unary dan biner tidak akan menghasilkan model perhitungan yang setara.
sumber