Sudah diketahui umum bahwa komplemen bebas konteks. Tapi bagaimana dengan komplemen ?
fl.formal-languages
context-free
domotorp
sumber
sumber
Jawaban:
Masih CFL saya percaya, dengan adaptasi dari bukti klasik. Ini sketsa.
Pertimbangkan , yang merupakan komplemen dari , dengan kata-kata panjangnya tidak mod dihapus.L={xyz:|x|=|y|=|z|∧(x≠y∨y≠z)} {www} 0 3
Biarkan . Jelas, adalah CFL, karena Anda dapat menebak posisi dan menganggap bahwa berakhir setelah itu. Kami menunjukkan bahwa .L′={uv:|u|≡3|v|≡30∧u2|u|/3≠v|v|/3} L′ p u p/2 L=L′
Karenanya, dalam , ini adalah posisi: atau, dengan kata lain, posisi dalam . Ini menunjukkan bahwa .w |u|+|v|/3=3p/2+|w|/3−p/2=|w|/3+p, p y u2|u|/3=xp≠yp=v|v|/3
Jika , maka biarkan menjadi karakter pertama dari , sehingga adalah ; adalah sisa dari . Lalu: karenanya sama, .yp≠zp u 32(|w|/3+p) w u2|u|/3 yp v w |u|+|v|/3=2|w|/3+p v|v|/3=zp
sumber
Inilah cara saya berpikir untuk menyelesaikan masalah ini, dengan PDA. Menurut pendapat saya, secara intuitif lebih jelas.
Kami menggunakan trik biasa menggunakan stack untuk mempertahankan integer dengan memiliki simbol "bottom-of-stack" baru , menyimpan nilai absolutsebagai jumlah penghitung pada stack, dan sgn ( ) oleh keadaan PDA. Dengan demikian kita dapat menambah atau mengurangi dengan melakukan operasi yang sesuai.t Z |t| t t
Tujuannya adalah menggunakan nondeterminisme untuk menebak posisi dua simbol yang Anda bandingkan, dan menggunakan tumpukan untuk merekam , di mana adalah jarak antara kedua simbol ini.t:=|x|−3d d
Kami mencapai ini sebagai berikut: peningkatan untuk setiap simbol yang terlihat sampai simbol tebakan pertama dipilih, dan merekam di negara bagian. Untuk setiap simbol input selanjutnya, sampai Anda memutuskan Anda telah melihat , kurangi dengan ( untuk panjang input dan untuk jarak). Tebak posisi simbol kedua dan catat apakah . Terus menambah untuk simbol input selanjutnya. Terima jika (terdeteksi oleh di atas) dan .t a a b t 2 1 −3 b a≠b t t=0 Z a≠b
Hal yang menyenangkan tentang ini adalah bahwa harus benar-benar jelas bagaimana memperluas ini ke kekuatan yang sewenang-wenang.
sumber
Perspektif yang berbeda ("berorientasi tata bahasa") untuk membuktikan bahwa komplemen dari adalah CF untuk setiap fix menggunakan properti closure.{wk} k
Pertama perhatikan bahwa dalam komplemen selalu ada sedemikian rupa sehingga . Kami fokus pada dan mulai dengan tata bahasa CF sederhana yang menghasilkan:{wk} i wi≠wi+1 w1≠w2
Misalnya untuk , kita memiliki ,k=3 L={ab0,a0b000,a00b00000,...} GL={S→ab0|aX00,X→0X00|0b0}
Kemudian menerapkan penutupan di bawah homomorfisme terbalik , dan penyatuan :
Homomorfisme pertama:φ(1)→a,φ(0)→b,φ(1)→0,φ(0)→0
Homomorfisme kedua:φ′(0)→a,φ′(1)→b,φ′(1)→0,φ′(0)→0
Terapkan penutupan di bawah shift siklik ke untuk mendapatkan set string panjang bukan dari bentuk :L′ kn wk
Terakhir, tambahkan rangkaian string reguler yang panjangnya tidak dapat dibagi oleh untuk mendapatkan pelengkap :k {wk}
sumber