Ada banyak metode untuk membuktikan bahwa suatu bahasa tidak teratur , tetapi apa yang harus saya lakukan untuk membuktikan bahwa beberapa bahasa itu teratur?
Misalnya, jika saya diberi tahu bahwa adalah biasa, bagaimana saya bisa membuktikan bahwa berikut ini juga teratur?L ′
Bisakah saya menggambar robot hingga nondeterministis untuk membuktikan ini?
Jawaban:
Ya, jika Anda dapat menemukan salah satu dari yang berikut:
untuk beberapa bahasa , maka L adalah reguler. Ada model yang lebih setara , tetapi di atas adalah yang paling umum.L L
Ada juga properti yang berguna di luar dunia "komputasi". juga biasa jikaL
Anda dapat membangunnya dengan melakukan operasi tertentu pada bahasa reguler, dan operasi itu ditutup untuk bahasa biasa , seperti
dan lebih banyak lagi , atau
Dalam contoh yang diberikan, kami memiliki beberapa (biasa) Bahasamu sebagai dasar dan ingin mengatakan sesuatu tentang bahasa L ' berasal dari itu. Mengikuti pendekatan pertama - membuat model yang cocok untuk L ′ - kita dapat mengasumsikan model mana pun yang setara untuk L yang kita inginkan; itu akan tetap abstrak, tentu saja, karena L tidak diketahui. Dalam pendekatan kedua, kita dapat menggunakan L secara langsung dan menerapkan properti closure untuk mencapai deskripsi L ′ .L L′ L′ L L L L′
sumber
Metode dasar
Metode logis (sering digunakan dalam verifikasi formal)
Metode lanjutan
Lemma pemompaan yang canggih. Lihat misalnya
[1] J. Jaffe, A lemma pemompaan yang diperlukan dan cukup untuk bahasa reguler, Sigact News - SIGACT 10 (1978) 48-49.
[2] A. Ehrenfeucht, R. Parikh, dan G. Rozenberg, Memompa lemma untuk set reguler, SIAM J. Comput. 10 (1981), 536-541.
[3] S. Varricchio, Kondisi pemompaan untuk set reguler, SIAM J. Comput. 26 (1997) 764-771.
Perintah baik kuasi. Lihat
[4] W. Bucher, A. Ehrenfeucht, D. Haussler, Total regulator yang dihasilkan oleh relasi derivasi, Theor. Komputasi. Sci. 40 (1985) 131–148.
[5] M. Kunz, Solusi Reguler untuk Ketidaksetaraan Bahasa dan Perintah yang Baik .
Dukungan seri rasional.N
Metode aljabar berdasarkan Transduksi (lihat juga Operasi yang mempertahankan bahasa reguler ).
sumber
Jawaban oleh Ran G. memberikan daftar yang cukup luas dari model-model yang setara yang dapat digunakan untuk menentukan bahasa reguler (dan daftar berjalan, automata dua arah, logika MSO, tapi itu tercakup oleh tautan di bawah 'model yang lebih setara) '). Dan seperti yang ditekankan Raphael, kita perlu argumen untuk meyakinkan hadirin bahwa representasi yang dipilih memang benar.
Mempertimbangkan kembali pertanyaan, ia menambahkan 'Misalnya '. Itu berarti kita harus memberikan konstruksi yang valid bahwa, mengingat salah satu model di atas kita asumsikan menentukan bahasa L , mengubah model itu menjadi satu untuk L ′ . Ini umumnya akan menjadi jenis model yang sama, tetapi tidak harus: kita misalnya dapat mulai dengan FSA deterministik untuk L dan diakhiri dengan model nondeterminitic untuk L ′ .… L L′ L L′
Ini termasuk kemungkinan untuk menggunakan operasi penutupan: dalam operasi yang diberikan secara eksplisit dalam contoh kita memiliki .L′=(Σ∗∖L)⋅Σ∗
Jadi, poin saya adalah bahwa jawabannya adalah besar, tetapi kita harus menambahkan "dari ke L ' pembangunan", bila tidak membangun bahasa tertentu dari awal.L L′
sumber
Kadang-kadang Anda akan menemukan bahasa yang ditetapkan sebagai "semua string di mana setiap k substring -element dari s memenuhi ", di mana k adalah beberapa konstanta tetap. Dalam hal ini, bahasanya akan teratur. Idenya di sini adalah untuk mendefinisikan otomat terbatas yang beberapa di antaranya menyatakan "mengingat" simbol input k yang paling baru dilihat , seperti dalam jawaban untuk pertanyaan ini .s k s k k
<some property>
sumber
Metode lain, tidak tercakup oleh jawaban di atas, adalah transformasi otomat terbatas . Sebagai contoh sederhana, mari kita tunjukkan bahwa bahasa reguler ditutup di bawah operasi acak , didefinisikan sebagai berikut:
Versi yang lebih canggih dari metode ini melibatkan menebak . Sebagai contoh, mari kita tunjukkan bahwa bahasa reguler ditutup dengan pembalikan , yaitu, (Di sini ( w 1 ... w n ) R = w n ... w 1
(Kita dapat menghilangkan jika kita mengizinkan beberapa status awal.) Komponen menebak di sini adalah status akhir kata setelah pembalikan.q′0
Menebak seringkali melibatkan juga verifikasi. Salah satu contoh sederhana adalah penutupan di bawah rotasi : Misalkan L diterima oleh DFA ⟨ Σ , Q , F , δ , q 0 ⟩ . Kami membangun sebuah NFA ⟨ Σ , Q ' , F ' , δ ' , q '
Varian lain dari teknik ini menggunakan penghitung terbatas. Sebagai contoh, mari kita pertimbangkan untuk mengubah penutupan jarak sunting : Mengingat DFA ⟨ Σ , Q , F , δ , q 0 ⟩ untuk L , e membangun sebuah NFA ⟨ Σ , Q '
sumber
Suatu bahasa adalah normal jika Anda dapat menulis pemindai yang memutuskan string acak apakah mereka termasuk dalam bahasa yang menggunakan tidak lebih dari jumlah memori yang tetap - yaitu pengenalan dapat dilakukan dalam ruang O (1) .
sumber
Transformasi ekspresi reguler adalah salah satu cara untuk membuktikan penutupan di bawah operasi tertentu. Dua contoh paling sederhana adalah penutupan di bawah pembalikan dan penutupan di bawah homomorfisme .
sumber
Cara lain adalah membangun bahasa menggunakan operasi di mana Anda tahu mereka ditutup. Ini merupakan perluasan untuk menunjukkan ekspresi reguler, karena Anda memiliki lebih banyak operasi yang tersedia (membalikkan string, komplemen, persimpangan, memotong sepotong, tetap bagian, homomorfisma dan homomorfisma terbalik, ...)
sumber