Setelah 2 upaya gagal, yang dibantah oleh @Hendrik Jan (terima kasih), ini satu lagi, yang tidak lebih berhasil. @Vor menemukan contoh bahasa CF deterministik di mana konstruksi yang sama akan berlaku, jika benar. Ini memungkinkan pengidentifikasian kesalahan dalam penambatan string dalam penerapan lemma. Lemma itu sendiri tampaknya tidak bersalah. Ini jelas konstruksi yang terlalu sederhana. Lihat lebih detail di komentar.y
Bahasa tidak bebas konteks.L={uxvy∣u,v,x,y∈{0,1}∗{ϵ} , ∣u∣=∣v∣ , u≠v , ∣x∣=∣y∣ , x≠y }
Sangat membantu untuk mengingat karakterisasi mana d adalah jarak Hamming, yang diusulkan oleh @sdcvvc. Yang perlu dipikirkan adalah 2 posisi yang dipilih di setiap setengah string sehingga simbol yang sesuai berbeda.L={uv:|u|=|v|,d(u,v)≥2}
Maka Anda menganggap string sedemikian rupa sehingga dan adalah genap. Ini jelas dalam bahasa L, dengan memotong dan mana saja di antara keduanya 1. Kami ingin memompa string itu pada bagian pertama antara 1, sehingga akan menjadi yang tidak seharusnya dalam bahasa. i < j i + j u x 10 j 10 j10i10ji<ji+jux10j10j
Kami pertama-tama mencoba menggunakan lemma Ogden , yang seperti lemma pemompaan, tetapi berlaku untuk atau lebih simbol yang ditandai yang ditandai pada string, menjadi panjang pemompaan untuk simbol yang ditandai (tetapi lemma dapat memompa lebih banyak karena dapat memompa juga simbol tanpa tanda). Panjang pompa yang ditandai hanya bergantung pada bahasa. Upaya ini akan gagal, tetapi kegagalan akan menjadi petunjuk.p pppp
Kami kemudian dapat memilih dan kami menandai simbol pada urutan pertama dari 0's. Kita tahu bahwa tidak ada satu pun dari 1 yang ada di pompa, karena bisa memompa sekali (eksponen 0) alih-alih memompa masuk. Dan memompa keluar 1 akan membuat kita keluar dari bahasa.ii=pi
Namun, kita bisa memompa di kedua sisi 1 kedua secepat atau bahkan lebih cepat di sisi kanan, sehingga 1 kedua tidak akan pernah melewati tengah tali. Juga lemma Ogden tidak memperbaiki batas atas untuk ukuran apa yang dipompa, sehingga tidak mungkin untuk mengatur pemompaan untuk mendapatkan 1 paling kanan tepat di tengah-tengah tali.
Kami menggunakan versi modifikasi dari lemma, di sini disebut Nash's Lemma, yang dapat mengatasi kesulitan ini.
Pertama-tama kita perlu definisi (mungkin memiliki nama lain dalam literatur, tapi saya tidak tahu yang mana - bantuan dipersilahkan). String dikatakan sebagai penghapusan string jika diperoleh dari dengan menghapus simbol dalam . Kami akan mencatat .v v v u ≺ vuvvvu≺v
Nash Lemma:
Jika adalah bahasa bebas konteks, maka ada dua nomor dan sehingga untuk setiap string panjang setidaknya di , dan setiap cara “menandai” atau lebih posisi di , dapat ditulis sebagai dengan string , , , , , sedemikian rupa sehinggap > 0 q > 0 w p L p w w w = u x y z v u x y z vLp>0q>0wpLpwww=uxyzvuxyzv
- xz memiliki setidaknya satu posisi yang ditandai,
- pxyz memiliki posisi paling banyak ditandai, danp
- ada 3 string , , sedemikian rupa
y zx^y^z^
- y ≺y z ≺zx^≺x , , ,y^≺yz^≺z
- 1 ≤ | y | ≤ q1≤∣x^z^∣≤q , , dan1≤∣y^∣≤q
- L i ≥ 0 j ≥ 0uxjx^iy^z^izjv ada di untuk setiap dan untuk setiap .Li≥0j≥0
Bukti : Mirip dengan bukti lemma Ogden, tetapi subpohon yang sesuai dengan string dan dipangkas sehingga mereka tidak mengandung jalur dengan dua kali non-terminal yang sama (kecuali untuk akar dari dua subpohon ini). Ini tentu membatasi ukuran string yang dihasilkan dan oleh konstan . String dan , untuk , terkait dengan versi pohon yang tidak ditandai, digunakan terutama dengan untuk menyederhanakan akuntansi ketika lemma diterapkan.x z x z y q x j z j j ≥ 0 j = 1yxzx^z^y^qxjzjj≥0j=1
Kami memodifikasi upaya bukti di atas dengan menandai simbol paling kiri 0, tetapi mereka diikuti oleh simbol 0 untuk memastikan bahwa kami memompa di bagian kiri string, di antara kedua 1 itu. Itu membuat total 0's antara 1's (sebenarnya akan cukup, karena 1 paling kanan tidak bisa di , yang akan memungkinkan untuk hanya menghapusnya).2 q i = p + 2 q i = p + q zp2qi=p+2qi=p+qz^
Yang tersisa adalah memilih sehingga kita dapat memompa tepat angka yang tepat dari 0 sehingga kedua urutannya sama. Namun sejauh ini, satu-satunya kendala pada adalah lebih besar dari . Dan kita juga tahu bahwa jumlah 0 yang dipompa pada setiap pemompaan adalah antara 1 dan q. Jadi biarkan menjadi produk dari integer pertama . Kami memilih .j i h q j = i + hjjihqj=i+h
Oleh karena itu, karena kenaikan pemompaan - apa pun itu - ada di , ia membagi . Biarkan menjadi hasil bagi. Jika kita memompa tepat kali, kita mendapatkan string yang tidak ada dalam bahasa. Karenanya L tidak bebas konteks.[ 1 , q ] h k k 10 j 10 jd[1,q]hkk10j10j
.
Saya pikir saya tidak akan pernah melihat
string yang indah seperti pohon.
Karena jika tidak memiliki parse,
senar tidak berarti apa-apa selain lelucon