Mengapa menggunakan bahasa dalam teori Kompleksitas

10

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:

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.

Matteo
sumber
1
Bukankah ini tercakup oleh pertanyaan referensi kami ?
Raphael
@ Raphael - Terima kasih telah menunjukkan pertanyaan itu kepada saya, itu referensi yang bagus! Saya membacanya sekarang, tetapi saat ini saya percaya ini bisa menjadi tambahan untuk pertanyaan cs.stackexchange.com/questions/13669/… . Bagi saya sepertinya sudah dijawab, tolong beri tahu saya jika Anda kurus
Matteo
3
Bahasa hanyalah seperangkat string panjang hingga, yang sama dengan fungsi yang memetakan string hingga hingga 1 atau 0. Jadi Anda benar-benar bertanya "mengapa begitu banyak teori kompleksitas tentang masalah keputusan" dan jawabannya adalah jenis tugas komputasi yang paling sederhana (nontrivial), dan seringkali tugas komputasi yang lebih rumit dapat direduksi menjadi masalah keputusan.
Sasho Nikolov

Jawaban:

10

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?1061091012

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.

Ya ampun
sumber
7
Bahasa tentu bukan satu-satunya cara merumuskan masalah. Misalnya, Anda dapat memformalkan sesuatu seperti bilangan kromatis sebagai fungsi dari grafik ke bilangan asli. Dan, sebenarnya, ada cukup banyak pekerjaan pada masalah fungsi dan optimisasi.
David Richerby
2
Benar, tetapi bagaimana Anda akan berurusan dengan kompleksitas penghitungan angka berwarna tanpa konsep bahasa atau mesin?
jmite
1
Terima kasih atas jawaban Anda, saya mengerti. Namun saya masih memiliki 2 pertanyaan: 1) tidakkah fakta bahwa kita menggunakan bahasa memengaruhi hasil tentang kompleksitas atau decidability masalah? yaitu apakah suatu masalah dapat dipecahkan dalam aritmatika floating point tetapi tidak dalam aritmatika integer (yaitu pemrograman integer)? 2) Bagaimana kita melakukan pemetaan ini dari semua jenis data ke bahasa unik yang menggambarkan semuanya (karena kita ingin mengevaluasi kompleksitas masalah dan abstrak dari input spesifik)? Terima kasih lagi!
Matteo
3
@ jmite Anda butuh mesin, ya, tapi belum tentu bahasa.
Raphael
2
@Raphael banyak kelas kompleksitas yang biasanya didefinisikan dalam hal waktu berjalan mesin dapat dikarakterisasi dalam hal kompleksitas deskriptif.
Sasho Nikolov
7

Ada dua jawaban dasar untuk pertanyaan Anda:

  1. Ada lebih banyak teori kompleksitas daripada bahasa, misalnya kelas fungsi, kompleksitas aritmatika, dan subareas algoritma aproksimasi dan ketidakmungkinan.

  2. 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

L.M.fM.xM.fM.(x)L..

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.

dalamn

Yuval Filmus
sumber
3

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).

Thomas Klimpel
sumber
Ini sepertinya tidak menjawab pertanyaan. Orang masih bisa berbicara tentang morfisme di antara masalah apa pun yang digunakan sebagai objek dalam kategori yang sesuai.
David Richerby
@DavidRicherby Poin yang ingin saya sampaikan adalah bahwa memaku morfisme yang tepat lebih menantang daripada memakukan benda yang sesuai (= bahasa). (Terutama karena biasanya ada lebih dari satu gagasan morfisme yang tepat.) Tanpa morfisme, Anda tidak dapat berbicara tentang masalah isomorfik (atau algoritma). Namun, bahasa memberi Anda cara untuk tetap berbicara tentang kesetaraan masalah. Mungkin saya tidak menjelaskan ini dengan benar, tetapi (bagi saya) ini adalah alasan yang bagus untuk "menggunakan bahasa dalam teori kompleksitas".
Thomas Klimpel