Penutupan terhadap hasil bagi kanan dengan bahasa tetap

13

Saya sangat suka bantuan Anda dengan yang berikut:

Untuk setiap tetap saya perlu untuk memutuskan apakah ada penutupan di bawah operator berikut:L2

  1. Ar(L)={xyL2:xyL}

  2. Al(L)={xyL:xyL2} .

Opsi yang relevan adalah:

  1. Bahasa reguler ditutup di bawah resp . , untuk bahasa apa punAlArL2

  2. Untuk beberapa bahasa , bahasa reguler ditutup di bawah resp. , dan untuk beberapa bahasa , bahasa reguler tidak ditutup di bawah resp . .L2AlArL2AlAr

Saya percaya bahwa jawaban untuk (1) harus (2), karena ketika saya mendapatkan kata dalam dan saya dapat membuat otomat yang dapat menebak di mana beralih ke , tetapi kemudian perlu memverifikasi yang milik L 2 dan jika tidak akan biasa, bagaimana melakukannya? Jawabannya adalah (1).wLw=xyxyyL2

Apa yang harus saya lakukan untuk menganalisis operator-operator itu dengan benar dan untuk menentukan apakah bahasa reguler ditutup di bawah mereka atau tidak?

Jozef
sumber
Apa itu ? Apakah maksud Anda ' tidak ditutup' di bagian kedua (b)? Apa itu L ? AL
Alex ten Brink
Anda masih belum mendefinisikan ? L
Gopi
@Gopi adalah bahasa input. A ( ) adalah operator pada bahasa dalam kedua kasus. LA()
Lucas Cook
@ Gopi: adalah parameter A , L 2 diperbaiki. LAL2
Raphael
Aduh, salahku, bagaimana aku tidak melihat ini.
Gopi

Jawaban:

11

Untuk menjawab pertanyaan ini, kita perlu membiarkan setiap . Jadi mari kita berpikir bahwa L 2 adalah bahasa yang sangat kompleks (katakanlah, beberapa bahasa yang tidak dapat ditentukan.)L2L2


Mari kita mulai dari pertanyaan mudah: (pertanyaan bagian 2). Ambil L 2 menjadi tidak dapat ditentukan, dan L = { ε } . Apa yang terjadi?Al(L)L2L={ε}

(moral: Selalu periksa "ekstrem": kosong , L = { ε } dan L = Σ ...)LL={ε}L=Σ


Sekarang untuk . Ini adalah pertanyaan yang bagus (biasanya pertanyaan bonus di Final / Pekerjaan Rumah). Memang, bahasa reguler ditutup di bawah A r untuk bahasa apa pun L 2 . Bahkan diputuskan L 2 . Keren kan?ArArL2L2

Jadi bagaimana kita membangun otomat untuk jika tidak ada mesin yang menerima L 2 ?Ar(L)L2

Di sinilah keajaiban "pemikiran abstrak", yaitu, bukti eksistensial . Jika seseorang memberi kita kita dapat menggunakan informasi ini untuk menunjukkan bahwa ada ada beberapa otomat untuk memecahkan A ( L ) . Sekarang detailnya.L2A(L)

Kita mulai dari otomat dari (panggilan D F A L ). Asumsikan bahwa setelah pemrosesan x kita berakhir dalam keadaan q . Kami harus menerima jika ada y L 2 seperti bahwa jika kita terus dari q pengolahan y kita akan berakhir dalam keadaan final D F A L . Tidak ada mesin yang bisa memberi tahu kita jika y ada di L 2 , tapi kita bisa membuat q status akhir dari D F A A LLDFALxqyL2qyDFALyL2qDFAALjika kondisi di atas berlaku, yaitu, jika ada beberapa sehingga jika kita mulai dari q dan proses y kita berakhir dalam keadaan final D F A L .yL2qyDFAL

jadi untuk membangun kita memeriksa masing-masing negara bagian D F A L dan membuat masing-masing negara q keadaan menerima jika kita dapat mengambil beberapa y L 2 dan ini y akan membawa kita dari q ke keadaan menerima D F A L .DFAALDFALqyL2yqDFAL

Jadi ok, tidak terbatas, dan kita mungkin tidak memiliki komputer untuk mendaftar semua kata dalam L 2 , tetapi semua ini tidak masalah ... otomat di atas didefinisikan dengan baik, bahkan jika saya tidak dapat menggambarnya Anda negara bagian demi negara. Sihir.L2L2

Ran G.
sumber
Sepertinya Anda memposting jawaban untuk masalah itu sendiri pada saat yang sama. :]
Lucas Cook
baik .. jawaban saya memiliki spoiler di dalamnya .. mungkin saya harus memasang peringatan spoiler, jadi orang dapat mulai dengan jawaban Anda dan jika ini tidak cukup - maka dapatkan detailnya ..
Ran G.
Wow, jawaban yang bagus, sangat membantu. Terima kasih banyak, Ran!
Jozef
7

Saya tidak yakin apakah Anda mencari jawaban untuk masalah tersebut atau tidak, jadi saya tidak memberikannya secara langsung. (Aku bisa jika kamu menginginkannya.)

Kamu bertanya:

Apa yang harus saya lakukan untuk menganalisis operator-operator itu dengan benar dan untuk menentukan apakah bahasa reguler ditutup di bawah mereka atau tidak?

Pendekatan awal Anda bagus. Seperti dengan semua pertanyaan teori "terbuka", Anda harus mendapatkan perasaan intuitif apakah itu benar atau tidak. Biasanya ini adalah dengan mencoba contoh-contoh (umum dan tepi-kasus) atau menyelidiki kasus-kasus khusus (misalnya bagaimana jika teratur? Bebas konteks?). Untuk masalah ini, Anda perlu mengembangkan beberapa dugaan apakah Anda dapat membangun otomat / regex untuk operator atau tidak. Setelah itu:L2

  • Jika Anda berpikir bahwa Anda bisa, Anda harus mampu membangun ini otomat / regex untuk setiap bahasa masukan biasa .L
  • Jika Anda berpikir tidak bisa, Anda biasanya akan menemukan contoh bahasa dan L 2 sehingga A x tidak ditutup.LL2Ax

(dan jika satu pendekatan tidak berhasil, Anda selalu dapat mencoba yang lain.)


Untuk masalah itu sendiri:

Keduanya adalah operator hasil bagi yang tepat. (Saya percaya hasil bagi kiri melibatkan meninggalkan postfix bukan awalan.) Perbedaan antara keduanya adalah bahwa sementara A r ( L ) = L / L 2 , di mana L 2 diperbaiki di keduanya.Al(L)=L2/LAr(L)=L/L2L2

Anda memiliki intuisi tentang , jadi inilah sesuatu untuk dipikirkan untuk A l : A l memberikan versi modifikasi dari L 2 . Karena L 2 bisa jadi tidak teratur, apakah mungkin A l membiarkan L 2 tidak berubah? Jika demikian, maka A l tidak teratur dalam kasus itu. Kalau tidak, kita harus berpendapat bahwa A l membuat L 2 teratur dalam semua kasus.ArAlAlL2L2AlL2AlAl L2

Lucas Cook
sumber