Algoritma untuk menguji apakah suatu bahasa bebas konteks

18

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?L.={SebuahnbnSebuahn:nN}

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:

L.={E:S}

di mana adalah ekspresi kata dan S adalah sistem ketidaksetaraan linear atas variabel panjang, dengan definisi berikut:ES

  • Setiap adalah ekspresi kata. (Ini mewakili variabel yang dapat menyimpan kata apa pun di Σ .)x,y,z,...Σ

  • Masing-masing adalah ekspresi kata. (Secara implisit, Σ = { a , b , c , ... } , jadi a , b , cSebuah,b,c,...Σ={Sebuah,b,c,...} mewakili simbol tunggal dalam alfabet yang mendasarinya.)Sebuah,b,c,...

  • Masing-masing adalah kata-ekspresi, jikaSebuahη,bη,cη,... adalah panjang-variabel.η

  • Rangkaian ekspresi kata adalah ekspresi kata.

  • Setiap adalah variabel panjang. (Ini mewakili variabel yang dapat menampung bilangan asli apa pun.)m,n,hal,q,...

  • Masing-masing |x|,|y|,|z|,... 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.

DW
sumber
Bukankah lebih mudah memulai dengan keteraturan bahasa?
Yuval Filmus
@YuvalFilmus, pasti akan! Sekarang Anda menyebutkannya, itu ide yang bagus. Apakah menurut Anda masalahnya layak untuk bahasa biasa? Dengan senang hati saya akan menanyakan korespondensi tentang bahasa reguler, jika menurut Anda itu mungkin berharga.
DW
2
Tentunya akan lebih mudah untuk bahasa biasa. Omong-omong, non-decidability umum tidak selalu berlaku untuk bahasa dari formulir yang Anda sebutkan.
Yuval Filmus
4
Saya khawatir masalah ini mungkin terbuka, setidaknya ada kasus khusus: cstheory.stackexchange.com/questions/17976 . Mungkin ada cara untuk mendapatkan keraguan atas masalah Anda yang lebih umum, tapi saya tidak melihatnya.
sdcvvc
akan sangat membantu untuk memberikan beberapa contoh kata dalam bahasa tersebut. sarankan penelitian lebih lanjut / kolaborasi dalam Ilmu Komputer Obrolan
vzn

Jawaban:

0

Oleh teorema Rice , untuk melihat apakah bahasa yang diterima oleh mesin Turing memiliki properti non-sepele (di sini: menjadi bebas konteks) tidak dapat ditentukan. Jadi, Anda harus membatasi kekuatan mesin pengenalan Anda (atau deskripsi) untuk membuatnya tidak Turing lengkap untuk berharap jawaban.

Untuk beberapa deskripsi bahasa, jawabannya adalah sepele: Jika itu dengan ekspresi reguler, itu teratur, sehingga bebas konteks. Jika berdasarkan konteks, tata bahasa gratis, apalagi.

vonbrand
sumber
Saya setuju dengan semua komentar Anda, tetapi saya tidak yakin saya melihat bagaimana ini menjawab pertanyaan atau menggunakan ini bagaimana menjawab pertanyaan. Saya menyadari semua fakta itu. Saya menjelaskan cara tertentu dalam menentukan bahasa. Apakah Anda menyarankan itu Turing-lengkap? Sepertinya tidak akan lengkap dengan Turing bagi saya. Sistem ketidaksetaraan linear bukanlah Turing-complete, jadi saya curiga / berspekulasi saya sudah cukup membatasi untuk tidak menyelesaikan Turing. Juga, untuk metode yang saya berikan untuk menentukan bahasa, itu tidak sepele, karena itu bukan ekspresi reguler dan bukan tata bahasa bebas konteks.
DW
-2

Bahasa apa pun diterima oleh Push Down Automata, adalah CFL. Berikut ini rincian terperinci untuk menentukan apakah suatu bahasa CFL atau tidak. periksa apakah bahasa CFL atau tidak

SiluPanda
sumber
Ini bukan algoritma.
xskxzr
Saya tidak melihat bagaimana ini menjawab pertanyaan. Saya sadar bahwa bahasa bebas konteks jika diterima oleh PDA, tetapi sepertinya tidak membantu menemukan algoritma dari formulir yang diminta dalam pertanyaan. Artikel geeksforgeeks yang Anda tautkan tidak menyediakan algoritme lengkap untuk masalah ini; itu hanya daftar kasus khusus yang tidak lengkap yang lebih mudah (dan itu bukan referensi yang bagus, karena beberapa pernyataannya agak samar / meragukan).
DW
AFAIK, belum ada algoritma yang terstruktur dengan baik untuk itu. (koreksi saya jika saya salah). Yang terbaik yang bisa kita lakukan adalah memeriksa kasus.
SiluPanda
-3

Coba perangkat lunak JFLAP jika Anda hanya ingin memeriksa CFG. Anda bahkan dapat meminta pengembang JFLAP untuk memberikan kode atau algoritma untuk perangkat lunak tersebut. Anda bisa mendapatkan JFLAP dari sini http://www.jflap.org/jflaptmp/ gratis tetapi memerlukan JDK atau JRE atau sesuatu. Atau mungkin Anda dapat mencoba beberapa perangkat lunak serupa lainnya dan pengembangnya.

Haseeb Hassan Asif
sumber
1
Saya tidak yakin ini menjawab pertanyaan. JFLAP tidak memiliki fitur yang menerima bahasa dalam notasi matematika dan memberi tahu Anda apakah itu bebas konteks atau tidak.
Yuval Filmus
THEOREM 2.20 dalam buku Sipser Suatu bahasa bebas konteks jika dan hanya jika beberapa automat pushdown mengenalinya. Dan Anda dapat membangun PDA dalam JFLAP dari tata bahasa
Haseeb Hassan Asif
Anda mungkin benar tentang notasi matematika yang tidak bisa dimasukkan ke dalam JFLAP tetapi Anda masih bisa meletakkan semua aturan tata bahasa dan itu bisa mengubahnya menjadi PDA atau mengatakan itu bukan CFG atau kesalahan lainnya
Haseeb Hassan Asif
{Sebuahnbncn:nN}
1
Saya membayangkan bahwa JFLAP dapat mengubah tata bahasa bebas konteks ke PDA yang setara, tetapi ini sama sekali tidak membantu di sini.
Yuval Filmus