Czy język par słów o równej długości, których odległość hamowania wynosi 2 lub więcej, jest pozbawiona kontekstu?


26

Czy następujący kontekst językowy jest bezpłatny?

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

Jak wskazał sdcvvc, słowo w tym języku można również opisać jako połączenie dwóch słów o tej samej długości, których odległość młotkowania wynosi 2 lub więcej.

Myślę, że to nie jest kontekstowe, ale ciężko mi to udowodnić. Próbowałem przeciąć ten język zwykłym językiem (na przykład 0 1 0 1 ), a następnie użyć lematu pompowania i \ lub homomorfizmów, ale zawsze dostaję język, który jest zbyt skomplikowany, aby go scharakteryzować i zapisać. 0101


Czy próbowałeś pompować ciąg 0u1x1u0x ?
Pål GD

Tak, ale nie udało mi się wypompować tego łańcucha z języka (nie znaczy to, że nie jest to możliwe, tylko że tego nie zrobiłem).
Robert777

1
@ PålGD, prawdopodobnie potrzebujesz sposobu na „zaznaczenie” elementów, na przykład 1u01x01u01x0
vonbrand

8
Ten język można zapisać jako {uv:|u|=|v|,d(u,v)2} gdzie d jest odległością Hamminga. Zauważ, że jeśli zamienimy 2 na 1, nie będzie to kontekst ( cs.stackexchange.com/questions/307 ), ale zastosowana tam sztuczka nie zadziała. Osobiście założę się, że to nie jest kontekstowe.
sdcvvc

1
@sdcvvc: Masz rację, jeden dzieli na u x, tak aby jeden z różnych bitów był u ′, a drugi na x . Poprawiono mnie. uuxux
András Salamon,

Odpowiedzi:


7

Uwaga [2019-07-30] Dowód jest błędny ... pytanie jest bardziej skomplikowane niż się wydaje.

Po nieudanej próbie tutaj jest inny pomysł.

Jeśli przecinamy L z regularnym językiem Lreg=0101010 , otrzymujemy język CF.

Być może mamy więcej szczęścia jeśli używamy L.rmisol=010101010 (ciąg z dokładnie 4 1s).

Niech L1=LLreg , nieformalnie wL1 jeśli można go podzielić na dwie połowy, tak że jedna połowa zawiera dokładnie {0,1,3,4} 1s lub obie połowy zawierają dwie 1 s ale ich pozycje się nie zgadzają.

Załóżmy, że L1 jest CF i niech G będzie gramatyką w normalnej formie Chomsky'ego, i niech

w=uv=0a10b10c10d10eL1

Mamy |u|=|v|(nawet długość) d(u,v)2

Jeśli ograniczymy naszą uwagę do sposobów, w jakie można wygenerować cztery 1-ty w , mamy trzy przypadki pokazane na górze rysunku 1. Centralna część rysunku 1 pokazuje pierwszy przypadek (ale pozostałe są podobne) .

wprowadź opis zdjęcia tutaj
Rycina 1 (pełny obraz można pobrać tutaj )

Jeśli wybierzemy a=e,c=2a i b,da , zobaczymy, że zera między dwiema parami 1s muszą być niezależnie pompowalne (czerwone węzły na rysunku): w szczególności, dla wystarczająco dużego ba , otrzymujemy duplikat nieterminalnego węzła w wewnętrznym poddrzewie (węzeł X na ryc. 2) lub powtarzające się podsekwencje na ścieżce w kierunku pierwszego lub drugiego 1 (węzeł Y na ryc. 2). Należy zauważyć, że Figura 2 jest nieco uproszczony: nie może być bardziej nieterminalowi węzłów pomiędzy dwoma X s, a także między tymi dwoma Ys ( Y...Zi...Y ale przyZi daje tylko 0 po prawej stronie pierwszego 1).

wprowadź opis zdjęcia tutaj
Rysunek 2

Możemy więc naprawić dowolny a=e=k,c=2a , a następnie wybrać wystarczająco duży b aby uzyskać niezależnie pompowalny węzeł w sekwencji zer między pierwszym a drugim 1 . Dla sekwencji zer między trzecim a czwartym 1 możemy wybrać d=b!+b .
Ale 0b jest pompowalne niezależnie, więc istnieje pb pompowalny substrat y , tzn. Taki, że b=xyz,|y|=p,|x|0,|z|0 ixyiz=b!+b . Ciąg, który otrzymujemy to:

w=0k10b!+b102k10b!+b10k

a wL1 . Zatem L1 jest CF i wreszcie L jest CF.

Jeśli dowód jest poprawny (???), można go rozszerzyć na każdy język Lk={uv:|u|=|v|,d(u,v)k},k2


Obawiam się, że nagroda wygaśnie, zanim będziemy w stanie zweryfikować ten dowód, więc jeśli nie pojawią się żadne drastyczne informacje w ciągu najbliższych 4 godzin, otrzymamy punkty za najlepszą jak dotąd próbę.
jmite

@jmite: nie martw się, istnieje duża szansa, że ​​jest to zła próba, tak jak poprzednia (która trwała około 30 minut przed wykryciem trywialnego błędu) :-) :-)
Vor

Skąd ta różnica? Gałęzie gramatyki nie mają związku z połówkami słowa. Ale myślę, że to nie ma znaczenia; jeśli dowód działa, to rozróżnienie przypadków nie jest potrzebne. Spojrzenie na założoną gramatykę i użycie dowodu lematu pompującego zamiast samego lematu jest fajną sztuczką (należy to robić częściej). Mam jeden (prawdziwy) problem: jeśli pompujesz podciąg o wartości , otrzymujesz 0 b + p ( i - 1 ) ; Nie rozumiem, jak dostałeś się do b + b ! . Nie uważaj, że to powinno zaszkodzić dowodowi, ale lepiej sprawdź. Możesz także wyprostować notację (i literówki).0b0b+p(i1)b+b!
Raphael

1
@Raphael: dzięki za komentarze. Być może się mylę, ale jeśli wybierzesz docelową długość następnie dla każdej długości pompowania p ciąg 0 b można rozłożyć na 0 x y z , ( | x y z | = b , | y | = p b ) i można go przepompować do x y i z = b + b ! , rzeczywiście w twoim przykładzie p na pewno dzieli b !b+b!p0b0xyz,(|xyz|=b,|y|=pb)xyiz=b+b!b!, więc istnieje dla którego p ( i - 1 ) = b ! , ale pierwotna długość ciągu wynosi b , więc całkowita długość pompowana wynosi | x y ( i - 1 ) z | = b + b ! . Pamiętam to z kilku ćwiczeń, które wykorzystują lemat Ogdena ... teraz sprawdzę je dwukrotnie. (i1)p(i1)=b!b|xy(i1)z|=b+b!
Vor

@Raphael: ... I didn't find the proof anywhere but only a paper by Zach Tomaszewski that proves that the complement of 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 y 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 } is not Context-Free.

It is helpful to keep in mind the characterization 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 10i10j such that i<j and i+j is even. It is clearly in the language L, by cutting u and x 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 10j10j 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 p or more distinguished symbols that are marked on the string, p being the pumping length for marked symbols (but the lemma can pump more because it can pump also unmarked symbols). The pumping marked-length p depends only on the language. This attempt will fail, but the failure will be a hint.

We can then choose i=p and we mark symbols on the first sequence of i 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 u is said to be an erasure of a string v iff it is obtained from v by erasing symbols in v. We will note uv.

Lp>0q>0wpLpwww=uxyzv with string u, x, y, z, v, such that

  1. xz has at least one marked position,
  2. xyzp
  3. x^y^z^
    1. x^xy^yz^z
    2. 1≤∣x^z^∣≤q, 1≤∣y^∣≤q, and
    3. uxjx^iy^z^izjv is in L for every i0 and for every j0.

Proof: Similar to the proof of Ogden's lemma, but the subtrees corresponding to the strings y and xz 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^z^ and y^ by a constant q. The strings xj and zj, for j0, corresponding to an unpruned version of the tree, are used mainly with j=1 to simplify the accounting when the lemma is applied.

We modify the above proof attempt by marking the p leftmost symbols 0, but they are followed by 2q 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+2q 0's between the 1's (actually i=p+q would be sufficient, since the rightmost 1 cannot be in z^, which would allow to simply remove it).

What is left is to have chosen j 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 j is to be greater than i. And we also know that the number of 0's that are pumped at each pumping is between 1 and q. So let h be product of the first q integers. We choose j=i+h.

Hence, since the pumping increment d - whatever it is - is in [1,q], it divides h. Let k be the quotient. If we pump exactly k times, we get a string 10j10j 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.