Ambiguitas dalam bahasa reguler dan bebas konteks

11

Saya memahami klaim berikut ini sebagai benar:

  1. Dua derivasi berbeda dari string dalam CFG yang diberikan kadang-kadang dapat menghubungkan pohon parse yang sama dengan string.
  2. Ketika ada derivasi dari beberapa string dalam CFG yang diberikan yang menghubungkan pohon parse yang berbeda, CFG bersifat ambigu.
  3. Beberapa bahasa bebas konteks yang dihasilkan oleh CFG ambigu juga dihasilkan oleh CFG yang ambigu.
  4. Beberapa bahasa sedemikian rupa sehingga satu-satunya CFG yang dapat menghasilkan mereka (dan ada beberapa seperti itu) adalah ambigu.

Q1. Saya memahaminya juga tidak dapat diputuskan apakah CFG yang sewenang-wenang bersifat mendua, dalam pengertian poin 3 di atas. Atau apakah itu lebih diputuskan apakah bahasa bebas konteks itu ambigu, dalam arti poin 4? Atau keduanya tidak dapat diputuskan?

Q2. Manakah dari poin 1-4 yang menjadi salah ketika kita mengganti "bebas konteks" dengan "biasa"? Apakah tata bahasa dan bahasa reguler selalu tidak ambigu?

dubiousjim
sumber
Bahasa yang Anda sebutkan dalam poin 4 adalah "Inherently ambiguous". Untuk Q1, saya pikir tidak dapat dipastikan apakah GRAMMAR ambigu. Dengan demikian Baik 3 dan 4 tidak dapat ditentukan.
Lamine
Benar, bahasa point 4 disebut "inherently ambiguous".
dubiousjim
4
Q1: keduanya tidak dapat diputuskan. Q2: 1 tidak mungkin, karena paling tidak ada satu terminal yang tidak muncul dalam bentuk apa pun, sehingga setiap derivasi adalah paling kiri dan paling kanan; 2 itu masih benar; 3 masih benar jika Anda menghapus bit `` juga ''; 4 tidak lagi benar, misalnya dengan menentukan tata bahasa Anda, Anda akan mendapatkan yang tidak ambigu.
Sylvain
1
@ Silvain membuat itu jawaban?
Yuval Filmus
@ Silvain, terima kasih, dan ya buat itu menjadi jawaban. Bisakah saya mengkonfirmasi saya mengerti? kembali 2: Jadi ada tata bahasa reguler yang dapat menghasilkan string yang sama dengan pohon parse yang berbeda? (Saya sejak menemukan referensi untuk "NFA ambigu", tapi saya tidak yakin itu menggunakan "ambig" dalam arti saya). Re 3 dan 4, saya pikir Anda mengatakan bahwa beberapa bahasa reguler dapat dihasilkan oleh tata bahasa reguler yang ambigu, tetapi akan selalu juga dihasilkan oleh tata bahasa reguler yang tidak ambigu juga?
dubiousjim

Jawaban:

19

Tentang Q1: Baik masalah ambiguitas (diberikan CFG, apakah ambigu) maupun masalah ambiguitas yang melekat (diberikan CFG, apakah bahasanya secara inheren ambigu, yaitu apakah CFG yang setara ambigu) tidak dapat diputuskan. Berikut ini adalah referensi asli:


Tentang Q2: Tata bahasa biasa adalah tata bahasa bebas "satu sisi linear" konteks, di mana paling banyak satu nonterminal muncul di bagian kanan aturan apa pun, dan di mana nonterminal itu adalah yang terakhir (dalam tata bahasa linear kanan ) atau pertama (di tata bahasa linear kiri ) posisi. Tata bahasa seperti itu dengan mudah diterjemahkan ke dalam automata keadaan terbatas yang setara (kira-kira dengan mempertimbangkan setiap nonterminal sebagai suatu keadaan), yang tidak ambigu jika tata bahasa regulernya tidak ambigu. Kelas tata bahasa reguler yang tidak ambigu dan automata yang tidak ambigu telah dipelajari secara khusus oleh Stearns dan Hunt (1985) , yang menunjukkan bahwa mereka menikmati algoritma yang dapat dilacak untuk masalah inklusi.

  1. βAγβαγAαAX1,,XmAX1Xm

    γAηBθABAαγαηBθBβγAηβθγαηβθ(selalu menurunkan nonterminal paling kiri dalam bentuk sentensial apa pun) atau derivasi paling kanan memaksakan urutan tetap untuk mengunjungi pohon derivasi, dan kemudian ada derivasi tunggal untuk pohon derivasi yang diberikan.

    Dalam tata bahasa bebas konteks linear , tidak ada pilihan seperti itu, karena ada paling banyak satu nonterminal dalam bentuk sentensial apa pun, dan ada derivasi tunggal untuk pohon derivasi tertentu, yang paling kiri dan paling kanan.

  2. www

  3. dan 4. Jika Anda mengambil tampilan automata keadaan-terbatas, cukuplah untuk menentukan automaton Anda yang mendua untuk mendapatkan automat yang tidak ambigu untuk bahasa yang sama: akan ada proses tunggal untuk kata tertentu. Otomat deterministik ini setara dengan tata bahasa reguler yang tidak ambigu. 

    SAB,Aa,BaaSAaSBaSa

O(|G|2)(q,q)qq

Sylvain
sumber
1

GΣ

Saya tidak mengerti tentang bahasa apa yang Anda gunakan untuk berbicara 4. Setiap bahasa CF memiliki tata bahasa yang ambigu.

Q2. Semuanya dapat diputuskan jika Anda memiliki kesepakatan dengan tata bahasa biasa. Anda hanya harus membangun DFA minimal dan menggunakannya Anda dapat membangun tata bahasa yang tidak ambigu. Jika Anda memiliki kesepakatan dengan bahasa reguler yang ditentukan oleh tata bahasa CF, jawabannya adalah tidak - lihat Q1.

Alexander Rubtsov
sumber
Terima kasih, klarifikasi yang baik untuk Q2. Pertanyaan tentang bahasa biasa dapat dianggap baik jika bahasa tersebut ditentukan oleh tata bahasa biasa; tapi itu belum berarti mereka dapat dipilih jika bahasa tersebut ditentukan oleh CFG --- itulah yang Anda katakan, kan? Jadi, apakah kita tahu bahwa pertanyaan tentang ambiguitas dan sebagainya yang tidak dapat diputuskan untuk CFG sewenang-wenang juga tidak dapat diputuskan ketika dibatasi pada CFG yang kebetulan menghasilkan bahasa biasa?
dubiousjim
Tidak mungkin, tetapi mereka selalu dapat diperhitungkan. Maksud saya ketika Anda memiliki kesepakatan dengan bahasa yang dijelaskan oleh tata bahasa biasa - subkelas CFG, semua pertanyaan yang Anda sukai dapat dipilih. Tetapi beberapa CFG non-reguler dapat menghasilkan bahasa reguler, dan tidak dapat dipastikan untuk memverifikasi apakah CFG menghasilkan bahasa reguler.
Alexander Rubtsov
2
@ alexandr-rubtsov "Ketika Anda berurusan dengan bahasa yang dijelaskan oleh tata bahasa biasa, pertanyaan apa pun yang Anda suka dapat dipilih". Ini terlihat seperti pernyataan yang terlalu optimis ...
J.-E.
Terima kasih, maksud saya "mungkin" dalam fungsi retorisnya, bukan dalam arti "siapa yang tahu?"
dubiousjim
@ J.-E.Pin ya saya seharusnya lebih halus dan mengatakan sesuatu seperti «semua pertanyaan alami seperti ambiguitas».
Alexander Rubtsov
0

Itu tergantung pada apakah Anda mengganti 'bebas konteks' dengan 'biasa' hanya di depan 'bahasa', atau juga di depan 'tata bahasa'.

Semua bahasa reguler dihasilkan oleh tata bahasa reguler , dan khususnya, oleh tata bahasa reguler yang tidak ambigu, misalnya LL (1) tata bahasa reguler-kanan, yang semuanya tidak ambigu.

reinierpost
sumber