Apakah ada algoritma / prosedur sistematis untuk menguji apakah suatu bahasa biasa?
Dengan kata lain, diberikan bahasa yang ditentukan dalam bentuk aljabar (pikirkan sesuatu seperti ), uji apakah bahasa itu teratur atau tidak. Bayangkan kita sedang menulis layanan web untuk membantu siswa dengan semua pekerjaan rumah mereka; pengguna menentukan bahasa, dan layanan web merespons dengan "reguler", "tidak teratur", atau "Saya tidak tahu". (Kami ingin layanan web menjawab "Saya tidak tahu" sesering mungkin.) Apakah ada pendekatan yang baik untuk mengotomatisasi ini? Apakah ini bisa ditelusuri? Apakah ini dapat diputuskan (yaitu, apakah mungkin untuk menjamin bahwa kita tidak perlu menjawab "Saya tidak tahu")? Apakah ada algoritma yang cukup efisien untuk menyelesaikan masalah ini, dan dapat memberikan jawaban selain "tidak tahu"
Metode klasik untuk membuktikan bahwa suatu bahasa tidak teratur adalah lemma pemompaan. Namun, sepertinya membutuhkan wawasan manual di beberapa titik (misalnya, untuk memilih kata yang akan dipompa), jadi saya tidak jelas apakah ini dapat diubah menjadi sesuatu yang algoritmik.
Metode klasik untuk membuktikan bahwa suatu bahasa biasa adalah dengan menggunakan teorema Myhill – Nerode untuk mendapatkan otomat kondisi-terbatas. Ini terlihat seperti pendekatan yang menjanjikan, tetapi membutuhkan kemampuan untuk melakukan operasi dasar pada bahasa dalam bentuk aljabar. Tidak jelas bagi saya apakah ada cara sistematis untuk secara simbolis melakukan semua operasi yang mungkin diperlukan, pada bahasa dalam bentuk aljabar.
Untuk membuat pertanyaan ini diajukan dengan baik, kita perlu memutuskan bagaimana pengguna akan menentukan bahasa. Saya terbuka untuk saran, tetapi saya memikirkan sesuatu seperti ini:
di mana adalah ekspresi kata dan adalah sistem ketidaksetaraan linear atas variabel panjang, dengan definisi berikut:S
Setiap adalah ekspresi kata. (Ini mewakili variabel yang dapat mengambil kata apa pun di .)Σ ∗
Setiap adalah ekspresi kata. (Di sini menunjukkan kebalikan dari string .)x r x
Setiap adalah ekspresi kata. (Secara implisit, Σ = { a , b , c , ... } , jadi a , b , c , ... mewakili simbol tunggal dalam alfabet yang mendasarinya.)
Masing-masing adalah kata-ekspresi, jika η adalah panjang-variabel.
Rangkaian ekspresi kata adalah ekspresi kata.
Setiap adalah variabel panjang. (Ini mewakili variabel yang dapat mengambil nomor alami apa pun.)
Masing-masing adalah variabel panjang. (Ini mewakili panjang kata yang sesuai.)
Ini tampaknya cukup luas untuk menangani banyak kasus yang kita lihat dalam latihan buku teks. Tentu saja, Anda dapat mengganti metode tekstual lainnya dalam menentukan bahasa dalam bentuk aljabar, jika Anda memiliki saran yang lebih baik.