Saya baru saja mulai masuk ke teori komputasi, yang mempelajari apa yang dapat dihitung, seberapa cepat, menggunakan berapa banyak memori dan dengan model komputasi mana.
Saya punya pertanyaan yang cukup mendasar, tetapi saya benar-benar berharap beberapa dari Anda dapat membantu saya memahami konsep di baliknya:
Mengapa semuanya berpusat di sekitar gagasan dan definisi BAHASA (yaitu bahasa reguler dan bahasa bebas konteks)? Dan bagaimana hal ini berhubungan dan menggambarkan kompleksitas suatu algoritma dan kemungkinan model komputasi untuk menyelesaikannya?
Saya membaca beberapa pertanyaan terkait ini:
- /cstheory/14811/what-is-the-enlightenment-im-supposed-to-attain-after-studying-finite-automata
- /cstheory/8539/how-practical-is-automata-theory
tetapi masih belum memiliki jawaban untuk keraguan saya, karena mereka memberikan pembenaran praktis mengapa mereka penting (yang saya mengerti) tetapi tidak membantu saya memahami mengapa teori kompleksitas didasarkan pada mereka.
Jawaban:
Itu karena bahasa adalah cara terbaik (satu-satunya?) Yang kita miliki untuk memformalkan konsep "masalah".
Algoritma (Mesin Turing) memiliki kinerja, yang kami nyatakan melalui kompleksitas O-besar. Masalah (bahasa) milik kelas kompleksitas. Ini biasanya ditentukan oleh keberadaan: jika ada mesin yang menerima bahasa yang berjalan dalam kinerja yang diberikan (ruang atau waktu), maka bahasa tersebut termasuk kelas kompleksitas yang sesuai.L.
Ada beberapa alasan untuk ini. Pertama adalah bahwa bahasa adalah platform independen. Anda tidak khawatir tentang apakah integer adalah 32 atau 64 bit, atau apakah operasi floating point berjalan paralel dengan operasi lain. Hal-hal ini memberikan peningkatan kinerja di tingkat mikro, tetapi analisis kompleksitas tertarik pada tingkat makro. Saat Anda menskalakan input dari 100 menjadi hingga hingga , bagaimana kinerja algoritma berubah? Apakah ia beralih dari menggunakan 1 juta sel pita menjadi 1 miliar, atau dari 1 juta sel lebih banyak daripada jumlah atom di alam semesta?106 109 1012
Yang kedua adalah bahwa bahasa hanyalah abstraksi yang bagus untuk data. Anda membutuhkan sesuatu yang dapat Anda lakukan sebagai bukti, sesuatu yang dapat Anda modelkan secara formal. Pengkodean input dan output Anda sebagai string berarti bahwa Anda sekarang berhadapan bukan dengan bit dalam memori, tetapi dengan objek matematika dengan properti tertentu. Anda dapat bernalar tentang mereka dan membuktikan bukti tentang mereka dalam arti formal, dan sangat sederhana.
Teori kompleksitas cenderung berfokus pada masalah keputusan karena mereka akhirnya menjadi sulit. Ketika versi keputusan salesman keliling NP-complete (yaitu apakah ada tur lebih pendek dari panjang ), maka jelas menemukan jalur terpendek lebih sulit. Tidak ada banyak fokus pada masalah fungsi / optimasi karena masih ada banyak pertanyaan terbuka dan masalah yang belum terpecahkan tentang masalah keputusan yang lebih sederhana.k
Saya kira inilah tantangan saya untuk Anda: temukan cara untuk menjelaskan masalah yang bukan bahasa secara matematis. Saya tidak tahu apakah bahasa itu spesial, tetapi saya pikir itu adalah alat paling sederhana yang kami punya, yang paling mudah untuk diatasi.
sumber
Ada dua jawaban dasar untuk pertanyaan Anda:
Ada lebih banyak teori kompleksitas daripada bahasa, misalnya kelas fungsi, kompleksitas aritmatika, dan subareas algoritma aproksimasi dan ketidakmungkinan.
Alasan historis: salah satu makalah dasar dalam teori komputabilitas adalah membahas Hilbert's Entscheidungsproblem (suatu bentuk masalah penghentian).
Sayangnya saya tidak tahu banyak tentang yang terakhir, tetapi biarkan saya memperluas yang pertama.
Kompleksitas di luar bahasa
Kompleksitas sirkuit aritmatika (atau teori kompleksitas aljabar ) berkaitan dengan kompleksitas komputasi berbagai polinomial. Kelas kompleksitas penting di sini adalah VP dan VNP, dan teori kompleksitas geometris adalah proyek penting yang berusaha memisahkan VP dan VNP (dan kemudian P dan NP) menggunakan geometri aljabar dan teori representasi.
Contoh penting lain dari kompleksitas aljabar adalah perkalian matriks cepat. Di sini pertanyaan dasarnya adalah seberapa cepat kita dapat melipatgandakan dua matriks ? Pertanyaan serupa menanyakan seberapa cepat kita dapat mengalikan bilangan bulat, seberapa cepat kita dapat menguji bilangan bulat untuk primality (ini adalah masalah keputusan!) Dan seberapa cepat kita dapat faktor bilangan bulat.
Optimasi cembung berkaitan dengan masalah optimisasi yang dapat diselesaikan (atau hampir dipecahkan) secara efisien. Contohnya adalah pemrograman linier dan pemrograman semidefinite, keduanya memiliki algoritma yang efisien. Di sini kami tertarik pada solusi optimal dan optimal itu sendiri. Karena sering ada lebih dari satu solusi optimal, komputasi solusi optimal tidak direpresentasikan dengan baik sebagai masalah keputusan.
sumber
Mari kita lihat pertanyaan ini dari perspektif teori kategori. Masalah keputusan (atau bahasa) kemudian akan sesuai dengan objek kategori, dan pengurangan yang diizinkan antara dua masalah akan sesuai dengan morfisme (panah) kategori.
Berbicara tentang bahasa memiliki keuntungan bahwa kesetaraan bahasa didefinisikan dengan baik (yaitu dengan kesetaraan ekstensional). Dua masalah yang tidak terkait mungkin mengarah ke bahasa yang sama, dan kemudian kita diizinkan untuk menganggapnya setara. Jika kita ingin berbicara tentang masalah isomorfik sebagai gantinya, kita harus mendefinisikan morfisme yang diperbolehkan antara dua masalah. Tetapi morfisme yang diizinkan tergantung pada kelas kompleksitas aktual yang sedang dipertimbangkan, yang membuat pendekatan ini kurang cocok untuk membandingkan kelas kompleksitas yang berbeda.
Gagasan masalah isomorfik biasanya akan lebih kasar daripada gagasan tentang bahasa yang sederajat, yaitu dua masalah dapat bersifat isomorfik, bahkan jika bahasa yang terkait tidak setara. Yang lebih buruk adalah bahwa sering ada gagasan masuk akal yang berbeda untuk morfisme yang diizinkan, yang hanya setuju sehubungan dengan isomorfisma yang diizinkan. Berfokus pada bahasa memungkinkan untuk menunda masalah seperti itu sampai kita merasa ingin berbicara tentang beberapa gagasan pengurangan yang masuk akal (seperti pengurangan Karp vs pengurangan Cook).
sumber