Dobrze wiadomo, że uzupełnienie jest pozbawione kontekstu. Ale co z dopełnieniem ?
fl.formal-languages
context-free
domotorp
źródło
źródło
Odpowiedzi:
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} 0 3
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′ p u p/2 L=L′
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, p y u2|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≠zp u 32(|w|/3+p) w u2|u|/3 yp v w |u|+|v|/3=2|w|/3+p v|v|/3=zp
źródło
Oto sposób, w jaki myślę o rozwiązaniu tego problemu za pomocą PDA. Moim zdaniem jest to intuicyjnie wyraźniejsze.
Słowox www |x|≢0 a b |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ę.t Z |t| t t
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|−3d d
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 .t a a b t 2 1 −3 b a≠b t t=0 Z a≠b
Zaletą tego jest to, że powinno być całkowicie jasne, jak rozszerzyć to na arbitralne uprawnienia.
źródło
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:
Np. Dlak=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
Zastosuj zamknięcie przy cyklicznych przesunięciach doL′ aby uzyskać zestaw ciągów o długości kn nie w postaci wk :
Na koniec dodaj zwykły zestaw ciągów, których długości nie można podzielić przezk , aby uzyskać dokładnie dopełnienie {wk} :
źródło