Apakah bahasa pasangan kata-kata dengan panjang yang sama yang jarak hamming-nya 2 atau lebih bebas dari konteks?


26

Apakah konteks bahasa berikut ini gratis?

L={uxvyu,v,x,y{0,1}+,|u|=|v|,uv,|x|=|y|,xy}

Seperti yang ditunjukkan oleh sdcvvc, sebuah kata dalam bahasa ini juga dapat digambarkan sebagai gabungan dari dua kata dengan panjang yang sama dengan jarak hamming yang 2 atau lebih besar.

Saya pikir ini bukan konteks bebas tetapi saya kesulitan membuktikannya. Saya mencoba memotong bahasa ini dengan bahasa biasa (seperti misalnya) kemudian menggunakan lemma pemompaan dan \ atau homomorfisme tetapi saya selalu mendapatkan bahasa yang terlalu rumit untuk dikarakterisasi dan ditulis turun. 0101


Apakah Anda mencoba memompa string ? 0u1x1u0x
Pål GD

Ya, tapi saya gagal memompa string ini keluar dari bahasa (itu tidak berarti bahwa itu tidak mungkin, hanya saja saya gagal melakukannya).
Robert777

1
@ PålGD, Anda mungkin perlu cara untuk "menandai" bagian-bagiannya, seperti1u01x01u01x0
vonbrand

8
Bahasa ini dapat ditulis sebagai mana adalah jarak Hamming. Perhatikan bahwa jika kita mengganti 2 dengan 1, itu bebas konteks ( cs.stackexchange.com/questions/307 ) tetapi trik yang digunakan di sana tidak akan berfungsi. Secara pribadi saya bertaruh itu tidak bebas konteks. {uv:|u|=|v|,d(u,v)2}d
sdcvvc

1
@ sdcvvc: Anda benar, satu partisi ke sehingga salah satu bit yang berbeda ada di dan yang lain di . Saya berdiri dikoreksi. uuxux
András Salamon

Jawaban:


7

Catatan [2019-07-30] Buktinya salah ... pertanyaannya lebih rumit daripada kedengarannya.

Setelah upaya yang gagal di sini adalah ide lain.

Jika kita memotong dengan bahasa reguler kita mendapatkan bahasa CF.LLreg=0101010

Mungkin kita dapat memiliki lebih banyak keberuntungan jika kita menggunakan (string dengan tepat 4 1s).Lreg=010101010

Misalkan , secara informal jika dapat dibagi menjadi dua bagian, sedemikian sehingga setengahnya mengandung persis atau kedua bagian mengandung dua tetapi posisi mereka tidak cocok.L1=LLregwL1{0,1,3,4} 1s1

Misalkan adalah CF dan biarkan menjadi tata bahasanya dalam bentuk normal Chomsky, dan biarkanL1G

w=uv=0a10b10c10d10eL1

Kami memiliki(panjang genap) dan|u|=|v|d(u,v)2

Jika kita membatasi perhatian kita pada cara-cara di mana empat 1s dapat dihasilkan, kita memiliki tiga kasus yang ditunjukkan di bagian atas gambar 1. Bagian tengah gambar 1 menunjukkan kasus pertama (tetapi yang lainnya serupa) .w

masukkan deskripsi gambar di sini
Gambar 1 (gambar lengkap dapat diunduh di sini )

Jika kita memilih dan kita melihat bahwa nol antara dua pasang 1s harus dapat dipompa secara independen (titik merah pada gambar): khususnya, untuk cukup besar , kita mendapatkan duplikat nonterminal node pada subtree internal (simpul X pada gambar 2) atau pengulangan di jalur menuju yang pertama atau kedua 1 (simpul Y pada gambar 2). Perhatikan bahwa Gambar 2 sedikit disederhanakan: mungkin ada lebih banyak node nonterminal antara kedua , dan juga antara dua ( tetapi dengan yang hanya menghasilkan 0s di sebelah kanan yang pertama 1).a=e,c=2ab,dabaXYsY...Zi...YZi

masukkan deskripsi gambar di sini
Gambar 2

Jadi kita dapat memperbaiki sembarang , lalu pilih cukup besar untuk mendapatkan simpul yang dapat dipompa secara independen pada urutan nol antara pertama dan kedua . Untuk urutan nol antara angka 1 ketiga dan keempat, kita dapat memilih . Tapi dapat dipompa secara independen sehingga ada dipompa substring , yaitu sedemikian sehingga dan . String yang kita dapatkan adalah:a=e=k,c=2ab1d=b!+b0 b p b y b = x y z , | y | = p , | x | 0 , | z | 0 x y i z = b ! + b
0bpbyb=xyz,|y|=p,|x|0,|z|0xyiz=b!+b

w=0k10b!+b102k10b!+b10k

tapi kami tidak . Jadi bukan CF dan akhirnya bukan CF.wL1L1L

Jika buktinya benar (???) dapat diperluas ke setiap bahasaLk={uv:|u|=|v|,d(u,v)k},k2


Saya khawatir hadiah akan kedaluwarsa sebelum kita benar-benar dapat memverifikasi bukti ini, jadi kecuali jika ada informasi drastis muncul dalam 4 jam ke depan, ini mendapat poin untuk menjadi upaya terbaik sejauh ini.
jmite

@ jamite: jangan khawatir ada kemungkinan besar bahwa itu adalah upaya yang salah seperti yang sebelumnya (yang berlangsung selama sekitar 30 menit sebelum menemukan kesalahan sepele) :-) :-)
Vor

Mengapa perbedaan kasus? Cabang-cabang dalam tata bahasa tidak memiliki hubungan dengan belahan kata. Tapi saya pikir itu tidak masalah; jika buktinya berhasil, perbedaan kasus ini tidak diperlukan. Melihat tata bahasa yang diasumsikan dan menggunakan bukti lemma pemompaan alih-alih lemma itu sendiri adalah trik yang bagus (kita harus melakukan ini lebih sering). Saya memiliki satu masalah (nyata): jika Anda memompa substring dari , Anda mendapatkan ; Saya tidak melihat bagaimana Anda bisa menjadi. Jangan berpikir itu akan merusak buktinya, tetapi periksa lebih baik. Juga, Anda mungkin ingin meluruskan beberapa notasi (dan kesalahan ketik). 0 b + p ( i - 1 ) b + b !0b0b+p(i1)b+b!
Raphael

1
@ Raphael: terima kasih atas komentarnya. Mungkin saya salah, tetapi jika Anda memilih sebagai target panjanglalu untuk setiap panjang pemompaan , string dapat didekomposisi dalam dan dapat dipompa ke, memang dalam contoh Anda p pasti membagi, jadi ada yang, tetapi panjang string asli adalah , sehingga total panjang yang dipompa adalah. Saya ingat dari beberapa latihan yang menggunakan lemma Ogden ... sekarang saya akan memeriksanya. p 0 b 0 x y z , ( | x y z | = b , | y | = p b ) x y i z = b + b ! b ! ( i - 1 ) p ( i - 1 ) = b ! b | x y ( i -b+b!p0b0xyz,(|xyz|=b,|y|=pb)xyiz=b+b!b!(i1)p(i1)=b!b|xy(i1)z|=b+b!
Vor

@ Raphael: ... Saya tidak menemukan buktinya di mana pun tetapi hanya sebuah makalah oleh Zach Tomaszewski yang membuktikan bahwa komplemen adalah CF (lihat pertanyaan ), jadi mungkin ini adalah yang baru hasil (meskipun sederhana); dan teorema gaya-lemma pemompaan dapat diturunkan untuk bahasa dengan string yang berisi jumlah terbatas dari simbol tertentu dan substring dengan panjang arbiter di antara mereka. Ldup={ww}
Vor

2

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={uxvyu,v,x,y{0,1}{ϵ} , u∣=∣v , uv , x∣=∣y , xy }

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 vuvvvuv

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

  1. xz memiliki setidaknya satu posisi yang ditandai,
  2. pxyz memiliki posisi paling banyak ditandai, danp
  3. ada 3 string , , sedemikian rupa y zx^y^z^
    1. yy zzx^x , , ,y^yz^z
    2. 1 | y | q1≤∣x^z^∣≤q , , dan1≤∣y^∣≤q
    3. L i 0 j 0uxjx^iy^z^izjv ada di untuk setiap dan untuk setiap .Li0j0

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^qxjzjj0j=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


Namun, perhatikan bahwa lintasan di babak kedua membaca tumpukan secara terbalik. Itu tampaknya berarti bahwa kedua posisi berada di posisi yang sama di kedua bagian, tetapi sebaliknya?
Hendrik Jan

Anda benar ... Saya melakukan kesalahan ... sekarang saya tahu apa yang mengganggu saya di belakang kepala saya.
babou

Saya mengenali argumennya (karena saya tidak bisa membuatnya bekerja ketika saya mencoba sendiri).
Hendrik Jan

Haruskah saya meninggalkan jawaban yang salah ini? Entah bagaimana itu membantu, saya pikir, karena membuat masalah yang mirip dengan . Masalahnya adalah bahwa aturan situs tidak dimaksudkan untuk mendorong hasil yang salah untuk diskusi (maksud saya, saya tidak menikmati downvotes lebih dari orang lain). aibjckaibjck
babou

@ HendrikJan Apakah saya melakukan kesalahan lagi? (BTW, terima kasih telah membuat diskusi)
babou

-1

oleh pertanyaan ini saya pikir bebas konteks dan dihasilkan oleh tata bahasa berikut LSAXBYBYAXA00A00A11A01A1B10B00B11B01B1X00X00X11X01X1Y10Y00Y11Y01Y1


4
Ini salah; Anda tidak dapat menjaga bahwa panjang AX sama dengan BY. Misalnya, tata bahasa Anda menghasilkan S -> AXBY -> A011 -> 0A1011 -> 001011 yang tidak dalam bahasa asli. Juga, simbol A dan X Anda menghasilkan bahasa yang sama, sama untuk B dan Y; mereka bisa digabung.
sdcvvc
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.