Pengertian penghitungan yang efisien


11

Algoritma mesin Turing polinomial-waktu dianggap efisien jika run-time-nya, dalam kasus terburuk, dibatasi oleh fungsi polinomial dalam ukuran input. Saya mengetahui tesis kuat Gereja-Turing:

Model perhitungan yang masuk akal dapat disimulasikan secara efisien pada mesin Turing

Namun, saya tidak mengetahui teori yang kuat untuk menganalisis kompleksitas komputasi dari algoritma -calculus.λ

Apakah kita memiliki gagasan tentang efisiensi komputasi untuk setiap model perhitungan yang diketahui? Apakah ada model yang hanya berguna untuk pertanyaan komputasi tetapi tidak berguna untuk pertanyaan kompleksitas komputasi?

Jawaban:


9

Sejauh yang saya tahu, model utama dari komputasi adalah λ-calculus, mesin Turing dan fungsi rekursif . Saya tidak mengetahui situasi mengenai kompleksitas dalam fungsi rekursif, mereka mungkin atau mungkin tidak berguna untuk kompleksitas.

Dapat dianggap sebagai kebetulan kebetulan bahwa mesin Turing, yang tidak bisa dibilang mesin yang sangat tidak efisien, juga merupakan model kompleksitas yang sangat baik. Apa yang membuat hal-hal alami adalah bahwa ada banyak transformasi yang melibatkan TM yang jumlahnya banyak. (Mesin universal, simulasi mesin tap dengan mesin 1-tap, dari alfabet acak ke biner, mensimulasikan PRAM , ...) dan polinomial adalah kelas fungsi yang stabil oleh operasi dan komposisi aritmatika - yang membuat mereka kandidat yang baik untuk teori kompleksitas.n

Kalkulus murni tidak berguna untuk kompleksitas. Namun sistem tipe sederhana ikut bermain dan memungkinkan jaminan penghentian untuk beberapa istilah λ dengan cara yang sangat mudah. Kemudian beberapa sistem lain (sistem T , F , ..) memungkinkan ekspresi yang hebat sambil menjaga pemutusan hubungan kerja.

Efisiensi atau kompleksitas menjadi penyempurnaan dari penghentian dan jenis yang terkait erat dengan logika, kemudian muncul logika linier ringan yang menjadi ciri beberapa kelas kompleksitas. ( Dasar , P, dan beberapa variasi untuk PSPACE dan lainnya). Penelitian dalam domain ini sangat aktif dan tidak terbatas pada kelas kompleksitas ini, dan bahkan tidak terbatas pada kalkulus λ.

tl; dr: λ-calculus berguna untuk teori komputabilitas, terminasi, dan kompleksitas.

Namun untuk memberikan kredit ketika kredit jatuh tempo, mesin Turing adalah cara yang baik dan dengan suara bulat untuk mendefinisikan apa itu kompleksitas, tetapi itu hanya berlaku untuk batasan longgar seperti "polinomial", bukan untuk batas ketat yang model PRAM seperti lebih cocok.


Lalu mengapa kita melakukan sebagian besar analisis runtime kami menggunakan model seperti RAM?
Raphael

O(1)O(log|memory|)ncatatan27

@ Raphael: Anda bereaksi terhadap kalimat terakhir saya, bukan?
jmad

Ya, saya lakukan (demi pembaca yang tidak berpengalaman).
Raphael

1

β

(λx.term)vterm[x: =v]
1

β

@Gilles: Karena kita tidak tahu berapa biaya nyata (model kesatuan) untuk mengimplementasikan pengurangan optimal, komentar Anda tidak terlalu relevan. Untuk saat ini, studi-studi ini hanya menyediakan penyempurnaan dari masalah yang dinyatakan dalam jawaban ini.
Stéphane Gimenez

1

Tentang memasukkan λ-kalkulus dalam model kompleksitas standar, berikut adalah abstrak dari beberapa (sangat) penelitian baru pada subjek. Ini memberikan jawaban untuk pertanyaan ini untuk beberapa bentuk reduksi β yang terbatas. Pada dasarnya, kompleksitas dalam model biaya standar mirip dengan menghitung langkah β-reduksi ketika terbatas pada reduksi head (yang mencakup strategi panggilan-dengan-nama-dan-panggilan-nilai).

Tentang Invarians dari Model Biaya Kesatuan untuk Pengurangan Kepala oleh Beniamino Accattoli dan Ugo Dal Lago. (WST2012, tautan ke proses )

Kalkulus λ adalah model komputasi yang diterima secara luas untuk program fungsional tingkat tinggi, namun tidak ada model biaya langsung dan universal yang diterima untuk itu. Sebagai akibatnya, kesulitan komputasi dalam mereduksi λ-term menjadi bentuk normal biasanya dipelajari dengan alasan pada algoritma implementasi konkret. Di sini, kami menunjukkan bahwa ketika pengurangan head adalah dinamika yang mendasarinya, model biaya kesatuan memang invarian. Ini meningkatkan hasil yang diketahui, yang hanya berurusan dengan pengurangan (panggilan-menurut-nilai atau nama-menurut-nama) yang lemah. Invarian terbukti dengan cara kalkulus linear dari substitusi eksplisit, yang memungkinkan untuk mendekomposisi setiap langkah reduksi head dengan baik dalam λ-kalkulus menjadi langkah substitusi yang lebih elementer, sehingga membuat kombinatorik reduksi head lebih mudah dipikirkan.


λ
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.