Jest uzupełnieniem {www | …} Bez kontekstu?

12

Dobrze wiadomo, że uzupełnienie jest pozbawione kontekstu. Ale co z dopełnieniem ?{wwwΣ}{wwwwΣ}

domotorp
źródło
1
Odkryłem, że jest to Twierdzenie 4 w P. Dömösi, S. Horváth, M. Ito, L. Kászonyi, M. Katsura: Języki formalne składające się z prymitywnych słów. link.springer.com/chapter/10.1007/3-540-57163-9_15
domotorp

Odpowiedzi:

11

Nadal CFL, jak sądzę, z adaptacją klasycznego dowodu. Oto szkic.

Zastanów się , który jest uzupełnieniem , z usuniętymi słowami o długości nie mod .L={xyz:|x|=|y|=|z|(xyyz)}{www}03

Niech . Oczywiście jest CFL, ponieważ możesz odgadnąć pozycję i uznać, że kończy po tym. Pokazujemy, że .L={uv:|u|3|v|30u2|u|/3v|v|/3}Lpup/2L=L

  • LL w = x y z L p x py p u 3 p / 2 w v u 2 | u | / 3 = x p v | v | / 3 : Niech . Załóżmy, że istnieje takie jak . Następnie napisz dla pierwszych pierwszych znaków , a dla pozostałych. Oczywiście . Co to jest ? Pierwszy: w=xyzLpxpypu3p/2wvu2|u|/3=xpv|v|/3

|v|/3=(|w|3p/2)/3=|w|/3p/2.

Zatem w jest to pozycja: lub innymi słowy, pozycja w . To pokazuje, że .w

|u|+|v|/3=3p/2+|w|/3p/2=|w|/3+p,
pyu2|u|/3=xpyp=v|v|/3

Jeśli , niech będzie pierwszymi znakami , tak że to ; jest resztą . Następnie: stąd podobnie, .ypzpu32(|w|/3+p)wu2|u|/3ypvw

|u|+|v|/3=2|w|/3+p
v|v|/3=zp

  • LLw = u v L p = 2 | u | / 3 p + | w | / 3 = 2 | u | / 3 + | u v | / 3 = | u | + | v | / 3. w p = u 2 | u | / 3 : Cofamy poprzedni proces. Niech . Napisz . Następnie: Zatem i (ponieważ jeśli ma postać , to musi zawierać, że dla wszystkich ).w=uvLp=2|u|/3
    p+|w|/3=2|u|/3+|uv|/3=|u|+|v|/3.
    wp=u2|u|/3v|v|/3=wp+|w|/3wLwxxxwp=wp+|w|/3p
Michaël Cadilhac
źródło
2
Wow, niesamowite! Nie twierdzę, że śledziłem każdy szczegół twojego argumentu, tak jak nie rozumiem, co masz na myśli przez ostatnią linię („za ostatni bit”), ani dlaczego nie rozdzielasz sprawy, gdy , ale twoje rozwiązanie ostatecznie działa. Podsumowałbym główną sztuczkę jako . Podobna sztuczka działa również dla uzupełnienia dowolnego . Zastanawiam się, czy jest pozbawiony kontekstu, czy nie. 3 a + 3 b = 2 a + ( b - a ) + 2 a + 2 b L r = { w r } L = { x y z : | x | = | y | = | z | ( x y )|w|/3<p/23a+3b=2a+(ba)+2a+2bLr={wr}L={xyz:|x|=|y|=|z|(xy)}
domotorp
1
@domotorp: Na zdrowie! W porządku, „ostatni kawałek” był niepotrzebny, dzięki! Jeśli chodzi o „przypadek, w którym ”, nie jestem pewien, co masz na myśli. Przegapiłem coś? Co do twojego , zastanawiałem się, czy to samo robi ten „dowód”! Jeszcze nie jestem pewien :)L |w|/3<p/2L
Michaël Cadilhac
2
Och, mój zły, zawsze się trzyma! p/2|w|/3
domotorp
Prawdopodobnie nie jest to problem, ale może być nieparzyste, więc powinieneś poradzić sobie z przypadkami Gdy jest nieparzyste. | u | = 3 p / 2 ( ? ) Pp|u|=3p/2(?)p
Marzio De Biasi
@MarzioDeBiasi: Tak, właśnie dlatego jest to szkic :-)
Michaël Cadilhac
10

Oto sposób, w jaki myślę o rozwiązaniu tego problemu za pomocą PDA. Moim zdaniem jest to intuicyjnie wyraźniejsze.

Słowoxwww|x|0ab|w|

Używamy zwykłej sztuczki polegającej na stosowaniu stosu w celu utrzymania liczby całkowitej poprzez posiadanie nowego symbolu spodzie stosu , przechowującego wartość bezwzględnąjako liczba liczników na stosie i sgn ( ) według stanu PDA. W ten sposób możemy zwiększyć lub zmniejszyć wykonując odpowiednią operację.tZ|t|tt

Celem jest użycie niedeterminizmu do odgadnięcia pozycji dwóch porównywanych symboli i użycie stosu do zarejestrowania , gdzie jest odległością między tymi dwoma symbolami. t:=|x|3dd

Dokonujemy tego w następujący sposób: inkrement dla każdego widocznego symbolu aż do wybrania pierwszego odgadniętego symbolu i zapisz w stanie. Dla każdego kolejnego symbolu wejściowego, dopóki nie zdecydujesz, że zobaczyłeś , zmniejsz o ( dla długości wejściowej i dla odległości). Odgadnij pozycję drugiego symbolu i zapisz, czy . Kontynuuj zwiększanie dla kolejnych symboli wejściowych. Zaakceptuj, jeśli (wykrywalne przez u góry) i .taabt213babtt=0Zab

Zaletą tego jest to, że powinno być całkowicie jasne, jak rozszerzyć to na arbitralne uprawnienia.

Jeffrey Shallit
źródło
2
Rzeczywiście, bardzo schludnie!
domotorp
1
Ach, o wiele ładniej :-)
Michaël Cadilhac
4

Po prostu inna perspektywa („zorientowana na gramatykę”), aby udowodnić, że dopełnieniem {wk} jest CF dla dowolnego ustalonego k używającego właściwości zamknięcia.

Pierwsza wzmianka, że w dopełnienia {wk} zawsze istnieje i takie, które wiwi+1 . Koncentrujemy się na w1w2 i zaczynamy od prostej gramatyki CF, która generuje:

L={a00...0w1b00...0w2...000...0wk|wi|=n}={a0n1b0n(k1)1}

Np. Dla k=3 mamy L={ab0,a0b000,a00b00000,...} ,GL={Sab0|aX00,X0X00|0b0}

Następnie zastosuj zamknięcie w warunkach odwrotnego homomorfizmu i zjednoczenie :

Pierwszy homomorfizm: φ(1)a,φ(0)b,φ(1)0,φ(0)0

Drugi homomorfizm: φ(0)a,φ(1)b,φ(1)0,φ(0)0

L=φ1(L)φ1(L) wciąż nie zawiera kontekstu

Zastosuj zamknięcie przy cyklicznych przesunięciach do L aby uzyskać zestaw ciągów o długości kn nie w postaci wk :

L=Shift(L)={uuwk|u|=kn} .

Na koniec dodaj zwykły zestaw ciągów, których długości nie można podzielić przez k , aby uzyskać dokładnie dopełnienie {wk} :

L{{0,1}nnmodk0}={uuwk}

Marzio De Biasi
źródło