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


12

Dobrze wiadomo, że uzupełnienie jest pozbawione kontekstu. Ale co z dopełnieniem ?{ww∣w∈Σ∗}{www∣w∈Σ∗}


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|∧(x≠y∨y≠z)}{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|≡30∧u2|u|/3≠v|v|/3}L′pup/2L=L′

  • L⊆L′ w = x y z ∈ L p x p ≠ y 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=xyz∈Lpxp≠ypu3p/2wvu2|u|/3=xpv|v|/3

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

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

|u|+|v|/3=3p/2+|w|/3−p/2=|w|/3+p,
pyu2|u|/3=xp≠yp=v|v|/3

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

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

  • L′⊆Lw = 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=uv∈L′p=2|u|/3
    p+|w|/3=2|u|/3+|uv|/3=|u|+|v|/3.
    wp=u2|u|/3≠v|v|/3=wp+|w|/3w∈Lwxxxwp=wp+|w|/3p

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+(b−a)+2a+2bLr={wr}L′={xyz:|x|=|y|=|z|∧(x≠y)}
— 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 .taabt21−3ba≠btt=0Za≠b

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


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 wi≠wi+1 . Koncentrujemy się na w1≠w2 i zaczynamy od prostej gramatyki CF, która generuje:

L={a00...0⏟w1b00...0⏟w2...000...0⏟wk∣|wi|=n}={a0n−1b0n(k−1)−1}

Np. Dla k=3 mamy L={ab0,a0b000,a00b00000,...} ,GL={S→ab0|aX00,X→0X00|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′)={u∣u≠wk∧|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}n∣nmodk≠0}={u∣u≠wk}

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.