Seberapa besar otomat LR (1) untuk suatu bahasa dibandingkan dengan otomat LR (0) yang sesuai?

10

Dalam parser LR (0), setiap negara terdiri dari koleksi item LR (0), yang merupakan produksi yang dianotasi dengan suatu posisi. Dalam parser LR (1), setiap negara terdiri dari kumpulan item LR (1), yang merupakan produksi yang dianotasi dengan posisi dan karakter lookahead.

Diketahui bahwa diberi status dalam otomat LR (1), himpunan konfigurasi yang dibentuk dengan menjatuhkan tokenead lookup dari setiap item LR (1) menghasilkan himpunan konfigurasi yang sesuai dengan beberapa keadaan dalam otomat LR (0). Dalam pengertian itu, perbedaan utama antara otomat LR (1) dan otomat LR (0) adalah bahwa otomat LR (1) memiliki lebih banyak salinan keadaan dalam otomat LR (0), yang masing-masing dianotasi dengan lookahead informasi. Untuk alasan ini, LR (1) automata untuk CFG yang diberikan biasanya lebih besar dari parser LR (0) yang sesuai untuk CFG tersebut.

Pertanyaan saya adalah seberapa besar otomat LR (1) dapat. Jika ada n simbol terminal berbeda dalam alfabet tata bahasa, maka pada prinsipnya kita mungkin perlu mereplikasi setiap negara dalam otomat LR (0) setidaknya satu kali per subset dari simbol terminal berbeda tersebut, yang berpotensi mengarah ke LR (1) ) automaton yang kali lebih besar dari automaton LR (0) yang asli. Mengingat bahwa masing-masing item dalam otomat LR (0) terdiri dari serangkaian item LR (0) yang berbeda, kita mungkin mendapatkan blowup yang lebih besar.n2n

Yang mengatakan, saya sepertinya tidak bisa menemukan cara untuk membangun keluarga tata bahasa yang otomat LR (1) secara signifikan lebih besar daripada otomat LR (0) yang sesuai. Semua yang saya coba telah menyebabkan peningkatan ukuran yang sederhana (biasanya sekitar 2-4x), tetapi saya tidak bisa menemukan pola yang mengarah ke ledakan besar.

Adakah keluarga tata bahasa bebas konteks yang diketahui yang LR (1) automata secara eksponensial lebih besar daripada LR (0) automata yang sesuai? Atau diketahui bahwa dalam kasus terburuk, Anda tidak bisa benar-benar mendapatkan ledakan eksponensial?

Terima kasih!

templatetypedef
sumber
masalah seperti ini kadang-kadang bisa diterima untuk pengujian empiris. apa yang akan Anda pikirkan tentang contoh individual yang dihasilkan secara acak yang (dipilih untuk) menunjukkan ledakan? ada pola dalam jenis pertanyaan ini yang konstruksi "tampak acak" menunjukkan paling "kompleksitas" ...
vzn
2
Contoh kasus terburuk biasanya sulit ditemukan dengan pengambilan sampel acak, setidaknya jika rata-rata kasus secara signifikan lebih baik.
Raphael
ps akan sangat membantu jika Anda memasukkan contoh-contoh kasus
blowup
ide / petunjuk: LR parsing permutasi (cstheory.se)
vzn
LALR (1) umumnya disajikan sebagai cara untuk mendekati kekuatan LR (1) agar berguna dengan banyak status yang lebih sedikit (menggunakan kata-kata buku Naga). Saya bertanya-tanya apakah faktor 2 sampai 4 saja sudah cukup untuk menganggap LR (1) sebagai penghalang sampai penemuan LALR (1). Jika saya memikirkannya ketika mereka dapat diakses, saya akan melihat di Aho & Ullman Teori parsing, terjemahan, dan kompilasi dan Teknik Grune Parsing jika mereka memiliki sesuatu tentang angka.
Pemrogram

Jawaban:

2

Tata bahasa

ST0TnSebuahTn+1TnbTn+1TnbTn+1tnTNtN

memiliki status LR (0)

TNtN˙
diperluas ke varian di LR (1) automata karena semua partisi { t 0 ... t N - 1 } adalah kemungkinan tampilan-kepala yang muncul dalam konteks yang berbeda. Jumlah negara di LR (0) otomat di sisi lain adalah linear dalam hal N . Dengan demikian faktor ekspansi dari urutan 2 N / N adalah mungkin.2N{t0...tN-1}N2N/N

Sunting: Saya harus memeriksa nanti ketika saya punya lebih banyak waktu, saya pikir menambahkan akan memberikan faktor eksponensial pada hampir semua status LR (0). TNT0Itu berakibat pada konflik pengurangan-pengurangan.

Pemrogram
sumber
0

Batas bawah semacam itu kadang-kadang sulit dikonstruksikan dan dapat membangkitkan teori CS yang lebih dalam (misalnya dalam kasus, pemisahan kelas kompleksitas). Makalah ini tampaknya memberikan konstruksi teoretis / batas bawah yang Anda cari misalnya dalam Teorema 5 yang menempatkan batas bawah pada simbol total dan karenanya juga menyatakan. Referensi juga termasuk konstruksi serupa lainnya / batas bawah.

f(n,k)=214(n-k)/n2k=0,1;...,n-1L.nn3f(n,k)f(n,k)

Pada ukuran parser dan LR (k) -gram / Leunga, Wotschkeb

vzn
sumber
2(n-1)/4/n22n/4/n2terikat pada ukuran otomat LR (0) untuk bahasa itu. Jadi jawaban ini tidak menjawab pertanyaan yang diajukan.
DW
1.1892
DW menganggap keberatan Anda sah & mendekati penataan rambut. Terima kasih banyak untuk klarifikasi / detail. ini adalah jawaban ilmiah yang relevan / hampir langsung untuk / studi sistematis pertanyaannya yang pada dasarnya adalah tentang konstruksi bahasa kasus terburuk / ledakan di LR (n). mungkin ini (hampir?) "hasil yang paling dikenal" di daerah tersebut. jawaban yang sah untuk pertanyaan itu mungkin negatif, alias TIDAK, tidak ada hasil yang lebih baik daripada yang ditemukan oleh si penanya (dia belum benar-benar memamerkannya ) atau dalam literatur. bersemangat menunggu jawaban yang lebih pasti sendiri!
vzn