Является ли следующий языковой контекст бесплатным?
Как указывает sdcvvc, слово в этом языке также может быть описано как конкатенация двух слов одинаковой длины, расстояние Хемминга которых равно 2 или больше.
Я думаю, что это не зависит от контекста, но мне трудно доказать это. Я попытался пересечь этот язык с обычным языком (например, 0 ∗ 1 ∗ 0 ∗ 1 ∗ ), а затем использовать лемму прокачки и \ или гомоморфизмы, но я всегда получаю язык, который слишком сложен, чтобы его охарактеризовать и записать.
Ответы:
Примечание [2019-07-30] Доказательство неверно ... вопрос сложнее, чем кажется.
После неудачной попытки здесь это другая идея.
Если мы пересекаемL с регулярным языком Lreg=0∗10∗10∗10∗ мы получаем язык CF.
Возможно, нам повезет больше, если мы будем использоватьL′reg=0∗10∗10∗10∗10∗ (строка с ровно 4 1s).
ПустьL1=L∩L′reg , неофициально w∈L1 если его можно разбить на две половины, так что одна половина содержит ровно {0,1,3,4} 1s или обе половины содержат две 1 с но их позиции не совпадают.
Предположим, чтоL1 - CF, и пусть G - его грамматика в нормальной форме Хомского, и пусть
У нас есть|u|=|v| (четная длина) и d(u,v)≥2
Если мы ограничим наше внимание способами, которыми можно сгенерировать четыре 1-й точкиw , у нас будут три случая, показанные в верхней части рисунка 1. В центральной части рисунка 1 показан первый случай (но остальные похожи) ,
Рисунок 1 (полную картину можно скачать здесь )
Если мы выберемa=e,c=2a и b,d≫a мы увидим, что нули между двумя парами единиц должны прокачиваться независимо (красные узлы на рисунке): в частности, для достаточно больших b≫a , мы получаем дублирующий нетерминальный узел на внутреннем поддереве (узел X на рисунке 2) или повторяющуюся подпоследовательность на пути к первому или второму 1 (узел Y на рисунке 2). Обратите внимание, что рисунок 2 немного упрощен: может быть больше нетерминальных узлов между двумя X s, а также между двумя Ys ( Y→...→Zi→...Y но сZi который выдает только 0 справа от первого 1).
фигура 2
Таким образом, мы можем зафиксировать произвольныйa=e=k,c=2a , а затем выбрать достаточно большой b чтобы получить независимо прокачиваемый узел на последовательности нулей между первым и вторым 1 . Для последовательности нулей между третьим и четвертым 1 мы можем выбрать d=b!+b . 0b прокачивается независимо, поэтому существует подстрока y , перекачиваемая p≤b , т.е. такая, что b = x y z , |y b=xyz,|y|=p,|x|≥0,|z|≥0 и xyiz=b!+b . Строка, которую мы получаем:
Но
ноw′∉L1 . Таким образом, L1 не является CF и, наконец, L не является CF.
If the proof is correct (???) it can be extended to every languageLk={uv:|u|=|v|,d(u,v)≥k},k≥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 they 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 languageL={uxvy∣u,v,x,y∈{0,1}∗{ϵ} , ∣u∣=∣v∣ , u≠v , ∣x∣=∣y∣ , x≠y } is not Context-Free.
We first try to use Ogden's lemma, which is like the pumping lemma, but applies top 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 choosei=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 stringu is said to be an erasure of a string v iff it is obtained from v by erasing symbols in v . We will note u≺v .
Nash's Lemma : IfL is a context-free language, then there exists two numbers p>0 and q>0 such that for any string w of length at least p in L , and every way of “marking” p or more of the positions in w , w can be written as w=uxyzv with string u , x , y , z , v , such that
Proof: Similar to the proof of Ogden's lemma, but the subtrees corresponding to the stringsy 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 j≥0 , 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 thep 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 chosenj 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 incrementd - 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
источник
by this question I thinkL is context-free and generated by the following grammar
SABXY→AXBY∣BYAX→0∣0A0∣0A1∣1A0∣1A1→1∣0B0∣0B1∣1B0∣1B1→0∣0X0∣0X1∣1X0∣1X1→1∣0Y0∣0Y1∣1Y0∣1Y1
источник