Apakah ada algoritma / prosedur sistematis untuk menguji apakah suatu bahasa bebas konteks?
Dengan kata lain, diberikan bahasa yang ditentukan dalam bentuk aljabar (pikirkan sesuatu seperti ), uji apakah bahasa tersebut bebas konteks atau tidak. Bayangkan kita sedang menulis layanan web untuk membantu siswa dengan semua pekerjaan rumah mereka; Anda menentukan bahasa, dan layanan web menghasilkan "bebas konteks" atau "tidak bebas konteks". Apakah ada pendekatan yang baik untuk mengotomatisasi ini?
Tentu saja ada teknik untuk bukti manual, seperti lemma pemompaan, lemma Ogden, lemma Parikh, lemma Interchange, dan banyak lagi di sini . Namun, mereka masing-masing memerlukan wawasan manual di beberapa titik, jadi tidak jelas bagaimana mengubahnya menjadi sesuatu yang algoritmik.
Saya melihat Kaveh telah menulis di tempat lain bahwa himpunan bahasa bebas-konteks tidak dihitung secara rekursif, jadi sepertinya tidak ada harapan untuk algoritma apa pun untuk bekerja pada semua bahasa yang mungkin. Oleh karena itu, saya kira layanan web harus dapat menghasilkan "bebas konteks", "tidak bebas konteks", atau "Saya tidak tahu". Apakah ada algoritma yang sering dapat memberikan jawaban selain "Saya tidak tahu", pada banyak bahasa yang cenderung dilihat di buku teks? Bagaimana Anda membangun layanan web seperti itu?
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 S adalah sistem ketidaksetaraan linear atas variabel panjang, dengan definisi berikut:
Setiap adalah ekspresi kata. (Ini mewakili variabel yang dapat menyimpan kata apa pun di Σ ∗ .)
Masing-masing 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 menampung bilangan asli 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 untuk menentukan bahasa dalam bentuk aljabar, jika Anda mau.