Ada sedikit kebebasan dalam apa yang kami anggap "nilai yang sama". Biarkan saya menunjukkan bahwa tidak ada algoritma seperti itu jika "nilai yang sama" berarti "setara dengan pengamatan". Saya akan menggunakan sebagian dari kalkulus konstruksi, yaitu Sistem T Gödel (cukup ketik kalkulus, bilangan alami, dan rekursi primitif pada mereka), sehingga argumen berlaku untuk kalkulus yang jauh lebih lemah.λ
Diberi nomor , biarkan menjadi sesuai angka yang mewakili itu, yaitu, n aplikasi dari s u c c ke 0 . Diberikan Turing mahcine M , misalkan ⌈ M ⌉ adalah angka yang mengkode M dengan cara yang masuk akal.¯ nnn¯¯¯ns u c c0M.⌈ M.⌉M.
Katakan bahwa dua istilah tertutup adalah sama , ditulis t ≃ u , ketika untuk semua n ∈ N , tt , u : n a t → n a tt ≃ un ∈ N danstn¯¯¯ baik menormalkan ke angka yang sama (mereka menormalkan ke angka karena kita berada dalam claculus sangat normalisasi).sn¯¯¯
Misalkan kita memiliki suatu algoritma, yang memberikan istilah tertutup tipe menghitung istilah ekuivalen minimal. Kemudian kita bisa menyelesaikan oracle Hentikan sebagai berikut.n a t → n a t
Ada istilah seperti itu, untuk semua n ∈ N dan semua mesin Turing M ,
S ( ⌈ M ⌉ , ¯ n ) menormalkan ke ¯ 1 jika T perhentian dalam n langkah , dan menormalkan untuk ¯ 0 sebaliknya. Ini sudah dikenal, karena simulasi mesin Turing untuk sejumlah langkah n adalah primitif rekursif.S: N a t × n a t → n a tn ∈ NM.S( ⌈ M⌉ , n¯¯¯)1¯¯¯Tn0¯¯¯n
Ada finitely banyak istilah tertutup yang istilah minimal setara dengan λ x : n a t .Z1, ... , Zk . Algoritma minimisasi kami mengembalikan salah satunya ketika kami memberikannya λ x : n a t .λ x : n a t .0 , dan bahkan mungkin demikian halnya bahwa λ x : n a t .λ x : n a t .0 sebenarnya satu-satunya istilah minimal tersebut. Semua ini tidak masalah, satu-satunya hal yang penting adalah bahwa ada banyak istilah minimal yang setara dengan λ x : n a t .λ x : n a t .0 .λ x : n a t .0
Sekarang, mengingat mesin apa pun , pertimbangkan istilah
u : = λ x : n a t .M.
Jika M berjalan selamanya maka u ¯ n menormalkan ke ¯ 0 untuk setiap n dan setara dengan λ x : n a t .
kamu :=λx:nat.S(⌈M⌉,x)
Mun¯¯¯0¯¯¯n . Untuk memutuskan apakah
M berjalan selamanya, kami makan
u ke dalam algoritma minimzation kami dan cek apakah algoritma kembali salah satu dari
Z 1 , ... , Z k . Jika ya, maka
M berjalan selamanya. Jika tidak, maka berhenti. (Catatan: algoritma tidak perlu menghitung
Z 1 , ... , Z k dengan sendirinya, ini bisa sulit-kode ke algoritma.)
λ x : nat.0M.kamuZ1, ... ,ZkM.Z1, ... ,Zk
Akan menyenangkan untuk mengetahui argumen yang bekerja dengan gagasan kesetaraan yang lebih lemah, misalnya hanya -reducibility.β
Seperti yang dikatakan Andrej, masalahnya tidak dapat diputuskan jika Anda mengizinkan penggantian satu istilah dengan yang lain, yang secara ekstensi sama. Namun, Anda mungkin akan tertarik dalam berbagi optimal ekspresi, dalam arti berikut: diberikan pengurangan jelas bahwa kejadian dari istilah u dapat dibagi dalam memori , dan setiap pengurangan yang diterapkan ke yang satu dapat diterapkan ke yang lain.
Dalam pengertian ini, diketahui cara mengurangi istilah yang tidak diketik secara optimal, mengurangi berbagi sebanyak mungkin. Ini dijelaskan di sini: /programming//a/41737550/2059388 dan kutipan yang relevan adalah J. Lamping's Algoritma untuk pengurangan kalkulus lambda yang optimal . Ada sedikit keraguan bahwa teorema untuk kalkulus yang tidak diketik dapat diperluas ke CIC.
Pertanyaan lain yang relevan adalah jumlah informasi jenis yang dapat dihapus ketika melakukan konversi jenis, atau memang bagaimana melakukan konversi yang efisien, yang merupakan bidang penelitian aktif, lihat misalnya tesis Mishra-Linger .
sumber
Biarkan saya bersikeras pada sudut pandang yang tersentuh oleh jawaban cody.
Sejauh yang melihatnya, pertanyaan tentang menemukan terkecil yang setara dengan term lain tidak benar-benar menarik, bahkan jika ada algoritma yang menghitungnya. Faktanya, sebagian besar program yang Anda tulis dalam λ -calculus (atau kalkulus apa pun dari λ -cube) sudah dalam bentuk normal, atau paling tidak menuju bentuk normal, sehingga mereka sudah pada "terkecil" dalam arti yang Anda gambarkan. Selain itu, menjadi "kecil" tidak berarti lebih efisien seperti yang dibahas dalam pertanyaan ini .λ λ λ λ
Jadi masalah yang Anda tunjukkan (yang dinormalisasi meledak ukurannya) adalah masalah nyata hanya ketika Anda ingin menerapkan fungsi ke argumen, dan mengurangi ke bentuk normal untuk mendapatkan hasilnya. Misalnya, Anda memiliki istilah menghitung fungsi f pada string biner. Maka Anda memiliki MM. f
manal(|x|)adalah jumlah langkah reduksi menggunakan reduksi paling kiri, yang dijamin untuk menemukan bentuk normal jika ada (dalam CoC, selalu ada, tetapi apa yang saya katakan berlaku untuk kasus yang tidak diketik juga). Sekarang anggaplah, lebih jauh lagi, bahwal(n)=O(nk)untuk beberapa konstantak. Dapatkah Anda menyimpulkan bahwafadalah waktu polinomial yang dapat dihitung?
Sangat mudah untuk membangun contoh-contoh -terms yang ukurannya meningkat secara eksponensial dengan pengurangan (paling kiri), yaitu, dalam langkah Θ ( n ) Anda mendapatkan istilah ukuran you ( 2 n ) . Hal ini dapat membuat kita sangat ragu-ragu dalam hal jawaban positif untuk pertanyaan di atas: tampaknya λ -kalkulus mampu melakukan sejumlah pekerjaan eksponensial dalam waktu linier. Dengan kata lain, tampaknya λ -calculus bukanlah model perhitungan yang masuk akal dalam hal kompleksitas.λ Θ ( n ) Θ ( 2n) λ λ
Meskipun sah, keraguan di atas berasal dari asumsi yang salah arah, yaitu bahwa -terms adalah representasi efisien dari diri mereka sendiri. Mereka tidak! Dengan sedikit bercanda, λ -terms adalah representasi yang sangat tidak efisien dari keadaan yang harus dijalankan oleh mesin yang mengeksekusinya.λ λ
Ternyata ada sintaksis, yang disebut kalkulus dengan substitusi eksplisit linierλ dan diperkenalkan oleh Beniamino Accattoli, yang sangat baik dalam mewakili fenomena berbagi yang disinggung dalam jawaban cody. Secara khusus, sintaks ini dapat digunakan untuk memberikan representasi istilah yang sangat setia dari mesin abstrak dari segala jenis (lihat makalah Beniamino ICFP 2014 "Distilling Abstract Machines", yang saya penulis bersama. Saya meminta maaf untuk promosi diri tetapi sepertinya relevan sini).
Sintaks yang sama ini dapat digunakan untuk membuktikan bahwa, berlawanan dengan intuisi naif, jawaban untuk pertanyaan di atas adalah ya, memang: jumlah langkah paling kiri ke bentuk normal adalah ukuran biaya yang wajar, bahkan jika ukurannya meledak, karena sebenarnya ada cara lain untuk mewakili perhitungan yang sama (menggunakan substitusi eksplisit linier) di mana:
Ini semua dijelaskan dalam makalah Accattoli dan Dal Lago "Pengurangan Beta adalah Invariant, Memang" (LICS 2014 dan kemudian saya pikir ada versi jurnal yang lebih baru).
sumber