Persimpangan konteks bebas dengan bahasa reguler

16

Perpotongan bahasa bebas konteks L dengan bahasa reguler M, dikatakan selalu bebas konteks. Saya memahami bukti konstruksi produk silang, tetapi saya masih belum mengerti mengapa ini bebas konteks tapi tidak teratur.

Bahasa yang dihasilkan oleh persimpangan semacam itu memiliki string yang diterima baik oleh PDA dan DFA. Karena itu diterima oleh DFA, bukankah itu harus menjadi bahasa biasa? Plus, jika persimpangan adalah biasa, itu juga berarti bebas konteks, karena semua bahasa biasa juga bebas konteks.

Adakah yang bisa menjelaskan kepada saya mengapa bahasa yang diperoleh dari persimpangan seperti itu tidak teratur?

sanjeev mk
sumber
12
Pertimbangkan. * Sebagai bahasa reguler dan persimpangannya dengan konteks yang bebas.
Pemrogram
1
Ini akan menjadi string dari konteks yang bebas. Tetapi string-string itu juga dihasilkan oleh bahasa biasa, jadi itu akan menjadi bahasa bebas konteks yang juga teratur.
sanjeev mk
8
Bahasanya bisa teratur. Tapi biasanya tidak. Pikirkan lagi tentang contoh tandingan yang diberikan oleh Programmer. Mungkin seharusnya jawabannya. Setiap konteks bahasa bebas adalah bagian dari bahasa biasa. Memang benar bahwa persimpangan bahasa CF dan REG akan diterima oleh DFA REG, tetapi juga penting apa yang ditolak.
Karolis Juodelė
1
@ WD Relevan tetapi seseorang mengusulkannya sebagai penipuan dan bukan itu. Pertanyaan ini menanyakan mengapa persimpangan tidak selalu teratur; yang lain bertanya mengapa persimpangan tidak selalu non-reguler. Pengaturan spesifik dari pertanyaan ini (berbicara tentang string yang diterima oleh DFA dan PDA, jadi mereka diterima oleh DFA, jadi bahasanya teratur, kan?) Berarti bahwa jawaban untuk pertanyaan lain tidak Aku benar-benar menjawab yang satu ini dengan baik.
David Richerby

Jawaban:

20

LPMFPF.

FFP.

The cross product proof consists of constructing an automaton PF which contains the mechanics of both P and F, and which accepts only words for which both sides accept. The cross-product automaton is a PDA (and therefore the recognized language is context-free) — intuitively, because the cross product with an n-state DFA consists of taking n copies of P and adding (q,a,[q]) arrows between matching states in P where the DFA has a arrows. The result is not a finite automaton in general (not even a non-deterministic one) because the P part relies on the stack and this reliance does not go away in PF in general.

A trivial example is that A is regular, and if L is context-free but not regular then LA=L is context-free but not regular.

Gilles 'SO- stop being evil'
sumber
2
+1 I almost posted an answer that's equivalent to your last sentence. Frankly, the rest of the answer seems unnecessary. :)
Patrick87
did not get "adding (q,a,[q]) arrows between matching states in P where the DFA has a arrows.". Unable to visualize how the product PDA will be.
anir