Dalam Topik Lanjutan dalam Jenis dan Bahasa Pemrograman disebutkan, dalam bab tentang sistem tipe sub-struktural, bahwa kalkulus affine lambda "dibuat dengan hati-hati" dengan kombinator rekursi untuk daftar hanya dapat mengetik istilah yang memiliki waktu berjalan polinomial (tidak menyajikan buktinya karena kerumitan). Ini akan sangat menarik jika kita juga bisa menyelesaikan setiap masalah dalam P. Saya bisa mencoba menemukan solusi untuk masalah P-lengkap menggunakan kalkulus yang disajikan oleh saya tidak yakin ini benar-benar akan membuktikan apa pun. Bagi saya itu tidak berarti bahwa hal itu dapat membentuk sebelumnya semua pengurangan yang diperlukan untuk menggunakan solusi untuk masalah P-lengkap (meskipun tampaknya memang mungkin).
Jika kalkulus affine lambda tidak diketahui mampu menyelesaikan masalah dengan tepat di P, adakah kalkulus yang dikenal yang dapat menyelesaikan dengan tepat masalah di P?
Jawaban:
Sunting: tebakan saya pada paragraf pertama di bawah ini salah! Ugo Dal Lago menunjukkan kepada saya sebuah makalah kemudian oleh Martin Hofmann (muncul dalam POPL 2002), yang saya tidak sadari, menunjukkan (sebagai akibat wajar dari hasil yang lebih umum) bahwa sistem dari buku ATTPL sebenarnya lengkap untuk ( meskipun tidak dapat menghitung setiap fungsi dalam F P ). Jadi, yang mengejutkan saya, jawaban untuk pertanyaan utama adalah ya.P F P
Mengenai sistem yang Anda maksud (dari buku ATTPL), saya cukup yakin itu tidak dapat memutuskan setiap bahasa di . Ini tentu tidak bisa menghitung setiap fungsi di F P : seperti yang disebutkan dalam catatan bab itu, bahwa sistem diambil dari Lics Martin Hofmann 1999 kertas ( "jenis Linear dan non-size meningkat jumlahnya banyak waktu komputasi"), di mana ia ditampilkan bahwa fungsi yang diwakili adalah polytime dan non-size-meningkatP F P , yang mengecualikan banyak fungsi polytime. Ini juga tampaknya memberikan batasan serius pada ukuran kaset dari mesin Turing yang dapat Anda simulasikan dalam bahasa itu. Dalam makalahnya, Hofmann menunjukkan bahwa Anda dapat menyandikan perhitungan ruang linear; Dugaan saya adalah bahwa Anda tidak akan dapat melakukan lebih banyak lagi, yaitu , kelas yang sesuai dengan sistem itu kira-kira merupakan masalah yang dapat dipecahkan secara simultan dalam ruang polytime dan linear.
Mengenai pertanyaan kedua, ada beberapa -calculi yang dapat memecahkan persis masalah dalam P . Beberapa dari mereka disebutkan dalam catatan bab ATTPL yang Anda maksudkan (Bagian 1.6): Leivant's λ -calculus (lihat makalahnya POPL 1993, atau makalah dengan Jean-Yves Marion "Lambda Calculus Characterizations of Poly-Time) ", Fundamenta Informaticae 19 (1/2): 167-184, 1993), yang berkaitan dengan Bellantoni dan Cook karakterisasi F P ; dan λ -kalki yang berasal dari logika linier cahaya Girard ( Informasi dan Komputasi , 143: 175–204, 1998) atau dari logika linear lunak Lafont ( Ilmu Komputer Teoritisλ P λ F P λ 318 (1-2): 163-180, 2004). Ketik sistem yang muncul dari dua sistem logis yang terakhir ini dan memastikan penghentian polytime (sambil tetap menikmati kelengkapan) dapat ditemukan di:
Patrick Baillot, Kazushige Terui. Jenis cahaya untuk perhitungan waktu polinomial dalam kalkulus lambda. Informasi dan Perhitungan 207 (1): 41-62, 2009.
Marco Gaboardi, Simona Ronchi Della Rocca. Dari logika ringan ke tugas mengetik: studi kasus. Jurnal Logika IGPL 17 (5): 499-530, 2009.
Anda akan menemukan banyak referensi lain di kedua makalah itu.
Sebagai penutup, izinkan saya memperluas komentar Neel Krishnaswami. Situasinya agak halus. Semua di atas -calculi dapat dilihat sebagai pembatasan bate lebih umum, di mana Anda dapat menghitung lebih dari sekedar fungsi polytime, mengatakan untuk sistem misalnya F. Dengan kata lain, Anda mendefinisikan properti Φ sistem F program P : string → bool sedemikian rupa sehingga:λ Φ P:string→bool
tingkat kesehatan: menyiratkan bahwa bahasa yang diputuskan oleh P adalah dalam P ;Φ(P) P P
kelengkapan: untuk setiap , ada sistem F program P yang memutuskan L sedemikian rupa sehingga Φ ( P ) .L∈P P L Φ(P)
Yang menarik adalah bahwa properti yang diungkapkan oleh murni sintaksis dan, khususnya, dapat ditentukan. Oleh karena itu, kelengkapan hanya dapat bertahan dalam arti ekstensional: jika L adalah bahasa favorit Anda dalam P dan jika P adalah algoritma favorit Anda untuk menentukan L yang diekspresikan dalam sistem F, mungkin Φ ( P ) tidak berlaku. Yang Anda tahu adalah bahwa ada beberapa sistem lain program F P ′ memutuskan L dan sedemikian rupa sehingga Φ ( P ′ ) berlaku. Sayangnya, mungkin saja P ′Φ L P P L Φ(P) P′ L Φ(P′) P′ jauh lebih dibuat dari Anda . Memang, kelengkapan terbukti dengan mengkodekan mesin Turing clock polinomi sebagai persyaratan sistem F memuaskan Φ . Oleh karena itu, satu-satunya cara dijamin untuk menyelesaikan L menggunakan algoritma favorit Anda adalah mengimplementasikan algoritma itu pada mesin Turing dan kemudian menerjemahkannya dalam sistem F menggunakan pengkodean yang diberikan dalam bukti kelengkapan (pengkodean Anda sendiri mungkin tidak berfungsi!). Bukan solusi yang paling elegan dalam hal pemrograman ... Tentu saja, dalam banyak kasus program "alami" P memuaskan Φ . Namun, dalam banyak kasus lain itu tidak: dalam makalah LICS 1999 yang disebutkan di atas, Hofmann memberikan semacam penyisipan sebagai contoh.P Φ L P Φ
Sistem tipe yang sengaja lengkap , yang dapat mengetik persis program-program polytime dari bahasa yang lebih luas (sistem F dalam contoh saya di atas) memang ada. Tentu saja, mereka tidak dapat diputuskan secara umum. Lihat
Ugo Dal Lago, Marco Gaboardi. Jenis Ketergantungan Linear dan Kelengkapan Relatif. Metode Logis dalam Ilmu Komputer 8 (4), 2011.
sumber