Jak można ws z | w | = | s | a my będziemy bez kontekstu, podczas gdy w # s nie jest?


9

Dlaczego (jeśli tak) separator # robi różnicę między tymi dwoma językami?

Powiedzmy:

L={ws:|w|=|s|w,s{0,1},ws}

L#={w#s:|w|=|s|w,s{0,1},ws}

Oto dowód i gramatyk reprezentującyL jak CFL

A poniżej dodam dowód na to L#CFL :

Czy #znak naprawdę robi różnicę? jeśli tak, to dlaczego? a jeśli nie, to który z dowodów jest błędny i gdzie?

Udowodnij to L#CFL :

Załóżmy w drodze sprzeczności, że LCFL. Pozwolićp>0 być stałą pompowania dla L gwarantowane przez pompujący lemat dla języków bezkontekstowych. Rozważamy to słowo s=0m1p#0p1m gdzie m=p!+p więc sL. Od|s|>p, zgodnie z lematem pompowania istnieje reprezentacja s=uvxyz, takie że |vy|>0, |vxy|p , i uvjxyjzL dla każdego j0.

Spotyka się sprzeczność w przypadkach:

  • Gdyby v lub y zawierać #: Więc dla i=0rozumiemy uxz nie zawiera #, więc uxzL w przeciwieństwie.
  • Jeśli oba v i y są pozostawione #: Więc dla i=0rozumiemy uxz ma formę w#x, gdzie |w|<|x|, więc uxzL.

  • Jeśli oba v i y mają rację #: Podobny do ostatniego przypadku.

  • Gdyby v pozostaje do #, y ma rację i |v|<|y|: Więc dla i=0rozumiemy uxz ma formę w#x, gdzie |w|>|x|, więc uxzL.

  • Gdyby v pozostaje do #, y ma rację i |v|>|y|: Podobny do ostatniego przypadku.

  • Gdyby v pozostaje do #, y ma rację i |v|=|y|: To najciekawszy przypadek. Od|vxy|p, v muszą być zawarte w 1p część s, i y w 0pczęść. Tak to utrzymujev=1k i y=0k za to samo 1kp (w rzeczywistości musi tak być k<p/2). Dla każdegoj0, trzyma to uvj+1xyj+1z=0m1p+j·k#0p+j·k1m, więc jeśli tak się stanie m=p+j·k, to trzyma to uvj+1xyj+1zLw przeciwieństwie. Aby to osiągnąć, musimy wziąćj=(mp)/k, który jest ważny tylko wtedy, gdy mp jest podzielny przez k. Przypomnijmy, że wybraliśmym=p+p!, więc mp=p!, i p! jest podzielny przez kogokolwiek 1kp jak chciałem.

Odpowiedzi:


7

Twój dowód jest poprawny, a myliłem się. Zajęło mi trochę czasu, aby ustalić, gdzie było moje zamieszanie, ale z pomocą Yuvala chyba to zrozumiałem.

Rozważmy trzy języki

L=={xy|x|=|y|,xy},L#={x#yxy}, andL=#={x#y|x|=|y|,xy}.

Jak widzieliśmy tutaj ,L=jest bezkontekstowy. W gramatyce polega na tym, aby generować symbole „po prawej”, ale policzyć je „po lewej” później (lub na odwrót), upewniając się, że niedopasowane symbole pojawiają się w pasujących pozycjach. Warunek długości jest trywialny, ponieważ zmniejsza się do równej długości.
Możesz zbudować NPDA z podobnym pomysłem, używając stosu, aby dopasować pozycję.

L# jest również pozbawiony kontekstu . Dowód jest jeszcze prostszy: niedopasowane symbole pojawiają się w tej samej odległości od początku wzgl. separator. Nierówne długości można sprawdzić osobno; niedeterminizm „wybiera” między dwiema opcjami.

Teraz, jak pokazujesz, L=#nie jest kontekstowe. Oto dlaczego dowody na pozostałe dwa języki się psują.

  1. W gramatyce dla L=, jeśli musimy wygenerować separator pośrodku, nie możemy „ponownie przypisać” symboli z „lewej” na „prawą”.
  2. Zamiast „zaakceptuj, jeśli długości są nierówne lub niezgodne”, musimy „zaakceptować, jeśli długości są równe i niezgodne”. Niedeterminizm nie może nam pomóc z i !

Sprowadza się więc intuicyjnie do warunków formy „xy" i "|x|=|y|„oba są„ bezkontekstowe ”w tym sensie, że można je sprawdzić za pomocą stosu, ale nie przy użyciu kontroli skończonej. Dlatego PDA może wykonać jedno, ale nie jedno i drugie.

PDA dla L=„kody”, ponieważ tak naprawdę nie sprawdzają tych warunkówx i y; dzieli słowo w inny sposób. To już nie jest możliwe, jeśli masz separator.


Uzupełnienie: I śmiało twierdził, żeL=CFLL=#CFLponieważ CFL jest zamknięty przeciwko odwrotnemu homomorfizmowi. Chociaż to prawdaf(L=#)=L= z f tożsamość oprócz tego, że jest usuwana #, to nie ma znaczenia. f1(L=)=L#; nic nie można powiedziećL=#.


Dodatek II: Uwaga :L={x#y|x|=|y|}jest trywialnie pozbawiony kontekstu. Dlatego zLL#=L=# mamy dobry przykład na to, że CFL nie jest zamknięty przed skrzyżowaniem.

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.