Jika Anda berasumsi bahwa -calculus adalah model bahasa pemrograman fungsional yang baik, maka orang mungkin berpikir: the -calculus memiliki gagasan kompleksitas waktu yang tampaknya sederhana: cukup hitung jumlah langkah pengurangan .λλβ( λ x . M) N→ M[ N/ x]
Tetapi apakah ini ukuran kompleksitas yang baik?
Untuk menjawab pertanyaan ini, pertama-tama kita harus menjelaskan apa yang kita maksud dengan ukuran kompleksitas. Satu jawaban yang baik diberikan oleh tesis Slot dan van Emde Boas : segala ukuran kompleksitas yang baik harus memiliki hubungan polinomial dengan gagasan kanonik kompleksitas waktu yang didefinisikan menggunakan mesin Turing. Dengan kata lain, harus ada penyandian yang 'masuk akal' Dari istilah -calculus ke mesin Turing, seperti untuk beberapa polinomial , dalam kasus ini untuk setiap istilah ukuran: direduksi menjadi nilai dalam -pengurangan langkah tepat saat berkurang menjadi nilait r ( . )λhalM.| M.|M.p ( | M| ) βt r ( M)p ( | t r ( M) | ) langkah-langkah mesin Turing.
Untuk waktu yang lama, tidak jelas apakah ini dapat dicapai dalam kalkulus λ. Masalah utama adalah sebagai berikut.
- Ada istilah yang menghasilkan bentuk normal (dalam jumlah polinomial langkah) yang berukuran eksponensial. Bahkan menuliskan bentuk normal membutuhkan waktu yang eksponensial.
- Strategi reduksi yang dipilih memainkan peran penting. Sebagai contoh, ada sekumpulan istilah yang berkurang dalam jumlah polinomial dari langkah-langkah β paralel (dalam arti optimal λ-reduksi ), tetapi yang kerumitannya non-elementer (artinya lebih buruk daripada eksponensial).
Makalah " Pengurangan Beta adalah Invariant, Memang " oleh B. Accattoli dan U. Dal Lago mengklarifikasi masalah ini dengan menunjukkan pengkodean 'masuk akal' yang menjaga kompleksitas kelas P fungsi waktu polinomial, dengan asumsi pengurangan panggilan-nama dengan nama paling kiri dari luar . Wawasan utama adalah ledakan eksponensial hanya dapat terjadi karena alasan 'tidak menarik' yang dapat dikalahkan dengan pembagian yang tepat. Dengan kata lain, kelas P sama apakah Anda mendefinisikannya dengan menghitung langkah mesin Turing atau (paling kiri) -pengurangan.β
Saya tidak yakin apa situasinya untuk strategi evaluasi lainnya. Saya tidak menyadari bahwa program serupa telah dilakukan untuk kompleksitas ruang.