ภาษาของคู่ของคำที่มีความยาวเท่ากันซึ่งระยะการแฮ็มเป็น 2 หรือมากกว่านั้นโดยไม่มีบริบทหรือไม่


26

บริบทภาษาต่อไปนี้ฟรีหรือไม่ L={uxvyu,v,x,y{0,1}+,|u|=|v|,uv,|x|=|y|,xy}

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

ตามที่อธิบายไว้โดย sdcvvc คำในภาษานี้ยังสามารถอธิบายได้ว่าเป็นการรวมกันของคำสองคำที่มีความยาวเท่ากันในระยะการเชื่อมต่อที่มีค่าเท่ากับ 2 หรือมากกว่า

ฉันคิดว่ามันไม่ใช่บริบท แต่ฉันมีเวลาพิสูจน์ยาก ฉันพยายามตัดภาษานี้ด้วยภาษาปกติ (เช่น เป็นต้น) จากนั้นให้ใช้บทแทรกและบทหรือ \ ลง. 0101 0101


คุณลองปั๊มสตริง0 u 1 x 1 u 0 x0u1x1u0xหรือไม่?
Pål GD

ใช่ แต่ฉันล้มเหลวในการปั๊มสตริงนี้ออกจากภาษา (ไม่ได้หมายความว่ามันเป็นไปไม่ได้เพียงแค่ว่าฉันไม่ได้ทำเช่นนั้น)
Robert777

1
@ PålGDคุณอาจต้องใช้วิธี "ทำเครื่องหมาย" ส่วนเช่น1 u 0 1 x 0 1 u 0 1 x 01u01x01u01x0
vonbrand

8
ภาษานี้สามารถเขียนเป็น{ u v : | คุณ| = | v | , d ( u , v ) 2 }{uv:|u|=|v|,d(u,v)2}โดยที่ddคือระยะทางแฮมมิง โปรดทราบว่าหากเราแทนที่ 2 ต่อ 1 จะเป็น contextfree ( cs.stackexchange.com/questions/307 ) แต่เคล็ดลับที่ใช้ที่นั่นจะไม่ทำงาน โดยส่วนตัวฉันเดิมพันว่ามันไม่ได้เป็นบริบท
sdcvvc

1
@sdcvvc: คุณมีสิทธิหนึ่งพาร์ทิชันยูuเข้าU ' xuxเพื่อให้เป็นหนึ่งในบิตที่แตกต่างกันอยู่ในU 'uและอื่น ๆ ในx xฉันยืนแก้ไขแล้ว
András Salamon

คำตอบ:


7

หมายเหตุ [2019-07-30]การพิสูจน์นั้นผิด ... คำถามนั้นซับซ้อนกว่าที่คิดไว้

หลังจากความพยายามที่ล้มเหลวที่นี่มันเป็นความคิดอื่น

หากเราตัดLLกับภาษาปกติL r e g = 0 10 10 10 Lreg=0101010เราจะได้ภาษา CF

บางทีเราอาจมีโชคมากขึ้นถ้าเราใช้L r e g = 0 10 10 10 10 Lreg=010101010 (สตริงที่มี 4 1 วินาที)

ให้L 1 = L L r e gL1=LLreg , อย่างไม่เป็นทางการw L 1wL1ถ้ามันสามารถแบ่งได้เป็นสองส่วนเช่นครึ่งหนึ่งมี{ 0 , 1 , 3 , 4 } {0,1,3,4} 1 วินาที1s หรือครึ่งทั้งสองมีสอง11วินาที แต่ตำแหน่งของพวกเขาไม่ตรงกัน

สมมติว่าL 1L1เป็น CF และให้GGเป็นไวยากรณ์ในรูปแบบปกติของ Chomsky แล้วปล่อยให้

w = u v = 0 a 1 0 b 1 0 c 1 0 d 1 0 eL 1

w=uv=0a10b10c10d10eL1

เรามี| คุณ| = | v | |u|=|v|(ความยาวเท่ากัน) และd ( u , v ) 2d(u,v)2

หากเรา จำกัด ความสนใจของเราในวิธีที่สามารถสร้างสี่ 1s ของwwเรามีสามกรณีที่แสดงที่ด้านบนของรูปที่ 1 ส่วนที่กลางของรูปที่ 1 แสดงกรณีแรก (แต่คนอื่น ๆ ที่คล้ายกัน) .

enter image description here
รูปที่ 1 (สามารถดาวน์โหลดภาพเต็มได้ที่นี่ )

ถ้าเราเลือก= E , C = 2และ, d »เราจะเห็นว่าศูนย์ระหว่างสองคู่ของ 1s จะต้อง pumpable อิสระ (โหนดสีแดงในภาพ): โดยเฉพาะอย่างยิ่งสำหรับขนาดใหญ่พอที่» , เราได้โหนดที่ไม่ใช่เทอร์มินัลซ้ำกันบนทรีย่อยภายใน (โหนด X ในรูปที่ 2) หรือลำดับที่ซ้ำกันในเส้นทางไปทางแรกหรือที่สอง 1 (โหนด Y ในรูปที่ 2) โปรดทราบว่ารูปที่ 2 เป็นเล็กน้อยง่าย: จะมีต่อมน้ำ nonterminal มากขึ้นระหว่างสองX s และยังระหว่างสองY s ( Y a=e,c=2ab,dabaXYs. . Z ฉัน . . YY...Zi...Yแต่กับ Z iZiที่สร้างเพียง 0s ทางด้านขวาของ 1 แรก)

enter image description here
รูปที่ 2

ดังนั้นเราจึงสามารถแก้ไขโดยพล= E = k , C = 2แล้วเลือกขนาดใหญ่พอที่จะได้รับโหนด pumpable อิสระในลำดับของศูนย์ระหว่างครั้งแรกและครั้งที่สอง1 สำหรับลำดับของศูนย์ระหว่าง 1 และ 3 ที่สี่เราสามารถเลือกd = b ! + แต่0 เป็น independtly pumpable จึงมีP ย่อย pumpable Yคือดังกล่าวว่า= x Y Z , |a=e=k,c=2ab1d=b!+b
0bpbyy | = p , | x | 0 , | z | 0b=xyz,|y|=p,|x|0,|z|0และ x y i z = b ! +xyiz=b!+b สตริงที่เราได้รับคือ:

w = 0 k 1 0 b ! + b 1 0 2 k 1 0 b ! + b 1 0 k

w=0k10b!+b102k10b!+b10k

แต่W 'LwL1 1 ดังนั้นL 1L1ไม่ใช่ CF และสุดท้ายLLไม่ใช่ CF

If the proof is correct (???) it can be extended to every language Lk={uv:|u|=|v|,d(u,v)k},k2Lk={uv:|u|=|v|,d(u,v)k},k2


I'm afraid the bounty will expire before we can actually verify this proof, so unless any drastic information arises in the next 4 hours, this gets the points for being the best attempt so far.
jmite

@jmite: don't worry there are high chances that it is a wrong attempt like the previous one (which lasted for about 30 mins before discovering a trivial error) :-) :-)
Vor

Why the case distinction? The branches in the grammar have no relation with the halves of the word. But I think it does not matter; if the proof works, this case distinction is not needed. Looking at an assumed grammar and using the proof of the Pumping lemma instead of the lemma itself is a nice trick (one should do this more often). I have one (real) concern: if you pump a substring of 0b0b, you get 0b+p(i1)0b+p(i1); I don't see how you get to b+b!b+b!. Don't think that should harm the proof, but better check. Also, you might want to straighten out some notation (and typos).
Raphael

1
@Raphael: thanks for the comments. Perhaps I'm wrong, but if you pick as target length b+b!b+b! then for every pumping length pp, the string 0b0b can be decomposed in 0xyz,(|xyz|=b,|y|=pb)0xyz,(|xyz|=b,|y|=pb) and can be pumped to xyiz=b+b!xyiz=b+b!, indeed in your example p surely divides b!b!, so there is a (i1)(i1) for which p(i1)=b!p(i1)=b!, but the original string length is bb, so the total pumped length is |xy(i1)z|=b+b!|xy(i1)z|=b+b!. I remember it from a couple of exercises that use the Ogden's lemma ... now I'll double check them.
Vor

@Raphael: ... I didn't find the proof anywhere but only a paper by Zach Tomaszewski that proves that the complement of Ldup={ww}Ldup={ww} is CF (see question ), so perhaps it is a new result (though simple); and a pumping-lemma-style theorem can be derived for languages with strings that contain a finite number of a particular symbol and substrings of arbitary length between them.
Vor

2

After 2 failed attempts, that were disproved by @Hendrik Jan (thank you), here is another one, that is not more successful. @Vor found an example of a deterministic CF language where the same construction would apply, if correct. This allowed identifying an error in the anchoring of the yy string in the application of the lemma. The lemma itself does not seem at fault. This is clearly too simplistic a construction. See more details in the comments.


The language L={uxvyu,v,x,y{0,1}{ϵ} , u∣=∣v , uv , x∣=∣y , xy }L={uxvyu,v,x,y{0,1}{ϵ} , u=v , uv , x=y , xy } is not Context-Free.

It is helpful to keep in mind the characterization L={uv:|u|=|v|,d(u,v)2}L={uv:|u|=|v|,d(u,v)2} where d is the Hamming distance, proposed by @sdcvvc. What one needs to think about are 2 selected positions in each half string such that the corresponding symbols differ.

Then you consider a string 10i10j10i10j such that i<ji<j and i+ji+j is even. It is clearly in the language L, by cutting uu and xx anywhere between the two 1's. We want to pump that string on the first part between the 1's, so that it will become 10j10j10j10j which is not supposed to be in the language.

We first try to use Ogden's lemma, which is like the pumping lemma, but applies to pp or more distinguished symbols that are marked on the string, pp being the pumping length for marked symbols (but the lemma can pump more because it can pump also unmarked symbols). The pumping marked-length pp depends only on the language. This attempt will fail, but the failure will be a hint.

We can then choose i=pi=p and we mark symbols on the first sequence of ii 0's. We know that none of the two 1's will be in the pump, because it can pump out once (exponent 0) instead of pumping in. And pumping out the 1's would get us out of the language.

However, we could be pumping on both sides of the second 1 as fast or even faster on the right side, so that the second 1 would never get across the middle of the string. Also Ogden's lemma does not fix an upper limit to the size of what is being pumped, so that it is not possible to organize the pumping to get the rightmost 1 exactly across the middle of the string.

We use a modified version of the lemma, here called Nash's Lemma, which can handle these difficulties.

We first need a definition (it probably has another name in the literature, but I do not know which - help is welcome). A string uu is said to be an erasure of a string vv iff it is obtained from vv by erasing symbols in vv. We will note uvuv.

Nash's Lemma : If LL is a context-free language, then there exists two numbers p>0p>0 and q>0q>0 such that for any string ww of length at least pp in LL, and every way of “marking” pp or more of the positions in ww, ww can be written as w=uxyzvw=uxyzv with string uu, xx, yy, zz, vv, such that

  1. xzxz has at least one marked position,
  2. xyzxyz has at most pp marked positions, and
  3. there are 3 strings ˆxx^, ˆyy^, ˆzz^ such that
    1. ˆxxx^x, ˆyyy^y, ˆzzz^z,
    2. 1≤∣ˆxˆz∣≤q1x^z^q, 1≤∣ˆy∣≤q1y^q, and
    3. uxjˆxiˆyˆzizjvuxjx^iy^z^izjv is in LL for every i0i0 and for every j0j0.

Proof: Similar to the proof of Ogden's lemma, but the subtrees corresponding to the strings yy and xzxz are pruned so that they do not contain any path with twice the same non-terminal (except for the roots of these two subtrees). This necessarily limits the size of the generated strings ˆxˆzx^z^ and ˆyy^ by a constant qq. The strings xjxj and zjzj, for j0j0, corresponding to an unpruned version of the tree, are used mainly with j=1j=1 to simplify the accounting when the lemma is applied.

We modify the above proof attempt by marking the pp leftmost symbols 0, but they are followed by 2q2q symbols 0 to make sure that we pump in the left part of the string, between the two 1's. That make a total of i=p+2qi=p+2q 0's between the 1's (actually i=p+qi=p+q would be sufficient, since the rightmost 1 cannot be in ˆzz^, which would allow to simply remove it).

What is left is to have chosen jj so that we can pump exactly the right number of 0's so that the two sequences are equal. But so far, the only constraint on jj is to be greater than ii. And we also know that the number of 0's that are pumped at each pumping is between 1 and q. So let hh be product of the first qq integers. We choose j=i+hj=i+h.

Hence, since the pumping increment dd - whatever it is - is in [1,q][1,q], it divides hh. Let kk be the quotient. If we pump exactly kk times, we get a string 10j10j10j10j which is not in the language. Hence L is not context-free.

.

I think that I shall never see
A string lovely as a tree.
For if it does not have a parse,
The string is naught but a farce


Note however that the pass over the second half reads the stack in reverse. That seems to mean that the two positions are in the same position in both halves, but in reverse?
Hendrik Jan

you are correct ... I goofed ... now I know what was nagging me at the back of my head.
babou

I recognized the argument (because I could not make it work when I tried myself).
Hendrik Jan

Should I leave this wrong answer ? It is somehow helping, I think, as it make the problem suspiciously similar to aibjckaibjck. The problem is that rules of the site are not intended to encourage wrong results for discussion ( I mean I do not enjoy downvotes more than anyone else).
babou

@HendrikJan Did I goof again ? (BTW, thanks for making it a discussion)
babou

-1

by this question I think L is context-free and generated by the following grammar SAXBYBYAXA00A00A11A01A1B10B00B11B01B1X00X00X11X01X1Y10Y00Y11Y01Y1


4
This is incorrect; you cannot guard that length of AX is the same as BY. For example, your grammar generates S -> AXBY -> A011 -> 0A1011 -> 001011 which is not in the original language. Also, your symbols A and X generate the same language, same for B and Y; they can be merged.
sdcvvc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.