Bangun PDA untuk komplemen dari

16

Saya bertanya-tanya apakah ini bahkan mungkin, karena {anbncnn0}CFL . Oleh karena itu PDA yang dapat membedakan kata w{anbncnn0} dari sisa {abc} mungkin juga menerimanya, yang kedengarannya bertentangan dengan saya.

Saya kira saya perlu mengambil keuntungan dari sifat PDA yang tidak deterministik tetapi saya kehabisan ide. Jika Anda bisa memberikan saran, saya akan sangat menghargainya.

hauptbenutzer
sumber
Poin menarik tentang itu sepertinya kontradiktif. Memang, bahasa bebas konteks tidak ditutup dengan mengambil pelengkap ... jadi ada banyak contoh bahasa bebas konteks yang bisa "diterima" dalam arti yang Anda singgung. Saya bukan ahli teori dan, dengan demikian, tidak bisa benar-benar mendamaikan ini, tapi mungkin orang lain bisa berpura-pura mengapa ini bukan sesuatu yang perlu dikhawatirkan?
Patrick87
Perhatikan bahwa ini menggeneralisasi: komplemen adalah CFG. {anbncndnen}
sdcvvc
Pertanyaan serupa .
Raphael

Jawaban:

15

Tidak, ini bebas konteks. Untuk menerima , Anda harus memastikan bahwa tiga angka sama. Untuk menerima sebuah * b * c *a n b n c n , Anda hanya perlu memastikan bahwa Anda berada di salah satu dari tiga kasus berikut:anbncnSebuahbcSebuahnbncn

  1. Jumlah berbeda dari jumlah b s; atauSebuahb
  2. Jumlah berbeda dari jumlah c ; atauSebuahc
  3. Jumlah s berbeda dari jumlah c s.bc

Tulis PDA untuk masing-masing kasus ini, kemudian gabungkan dengan melompat nondeterministis ke masing-masing dari keadaan awal.

Patrick87
sumber
Saya telah menuliskan kasus-kasus ini dengan baik, tetapi saya kehilangan ide untuk menghubungkannya. Terima kasih!
hauptbenutzer
4
Sebenarnya Anda hanya membutuhkan dua kasing saja.
sdcvvc
@ sdcvvc Poin bagus. :)
Patrick87
Untuk jumlah karakter yang berbeda, anggap ini sebagai inspirasi: . Seharusnya mudah untuk merekatkan a + ke kiri ini atau c + ke kanan dan mengubahnya menjadi PDA. Untuk kasus rumit (yang tidak Anda butuhkan) S a S c | A | C ; A a B |SxSy|X|Y;Xx|xX;Yy|yYSebuah+c+ . SaSc|A|C;AaB|aA;CBc|Cc;Bε|bB
Jonas Kölker