Rozważmy język
(gdzie # 0 ( x ) oznacza liczbę zer w x ).
L×2={x⊥y⊥z∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
#0(x)x
Łatwo jest zdecydować za pomocą maszyny HAL - zauważ, że maszyna musi śledzić dwie właściwości: liczbę zer w x vs y i długość x , y (vs z ). Może wcisnąć a do stosu za każde zero, które widzi w x (a następnie wyskoczyć za dowolne zero widoczne w y ); dodatkowo wypycha dla dowolnego bitu w x , y (i później wyskakuje dla dowolnego bitu z ). Ponieważ wszystkie s są zrzucane na stos, nie przeszkadzają w liczeniu. ⊥L×2xyx,yz0
x0
y1
x,y1
z1
0
⊥ służy jako separator i można go praktycznie zignorować.
Teraz niech będzie językiem odwrotnym. To znaczy,
L = { z ⊥ y ⊥ x ∣ x , y , z ∈ { 0 , 1 } , # 0 ( x ) = # 0 ( y ) i | x | + | y | = Oo }
Pokażemy, że żadna maszyna HAL może zdecydować L .L=LR×2
L={z⊥y⊥x∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
L
Intuicja jest następująca. Jak wyżej, maszyna musi śledzić zarówno długość i liczbę zer w x , y . Jednak w tym przypadku należy je śledzić jednocześnie . Nie można tego zrobić za pomocą stosu. Bardziej szczegółowo, po odczytaniu z , sterta zawiera informacje o długości | x | + | y | . podczas odczytywania y maszyna musi także przechowywać w stercie liczbę zer w y . Jednak te informacje nie mogą zakłócać informacji, które sterty już mają na oczekiwanej długości xzx,yz|x|+|y|yyxbyć. Bardzo intuicyjnie albo informacja o liczbie zer będzie „poniżej” informacji o długości , a następnie nie będziemy mogli uzyskać do niej dostępu podczas czytania x , lub będzie „powyżej” tej informacji, co spowoduje , że ta ostatnia będzie niedostępna, lub dwie informacje zostaną „zmieszane” i staną się bez znaczenia.xx
Mówiąc bardziej formalnie, użyjemy pewnego rodzaju argumentu „pompowania”. Oznacza to, że weźmiemy bardzo długi sygnał wejściowy i pokażemy, że „stan” maszyny musi się powtórzyć podczas przetwarzania tego wejścia, co pozwoli nam „zastąpić” dane wejściowe, gdy maszyna powtórzy swój „stan”.
Dla formalnego dowodu wymagamy uproszczenia struktury maszyny HAL, a mianowicie, że nie zawiera ona „pętli” przejść 1 . Przy takim założeniu widzimy, że dla każdego symbolu wejściowego przetwarzanego przez maszynę zawartość stosu może wzrosnąć / zmniejszyć o najwyżej c (dla niektórych wystarczająco dużych stałych c ).ε1cc
Dowód.
Załóżmy, że decyduje L , i rozważ wystarczająco długi sygnał wejściowy (powiedzmy, o długości 4 n , a więc | x | = | y | = n , | z | = 2 n , ignorując poniższe znaki ). Aby być konkretnym, popraw z , y i załóż, że # 0 ( y ) = n / 2 . Zauważ, że są ( nHL4n|x|=|y|=n|z|=2n⊥z,y#0(y)=n/2różnexjest taki, żez⊥Y⊥x∈L.(nn/2)xz⊥y⊥x∈L
Rozważmy zawartość hałdy natychmiast po przetworzeniu . Zawiera on co najwyżej 3 n c symboli (gdzie każdy symbol jest od stałej alfabetu y ) przez założeniem. Są jednak ( nz⊥y3ncΓróżnex's, które powinny zostać zaakceptowana (która jest znacznie większa niż ilość różnych możliwych zawartości na stosie, ponieważ zwiększa się wykładniczo, podczas gdy inna ilość hałd wzrasta wielomianowo patrz poniżej). Weź dwa dane wejściowex1,x2,które powinny zostać zaakceptowane, aby:(nn/2)x′sx1,x2
- Przedrostek długość o X 1 ma inną liczbę zer niż prefiksu x 2 w tej samej długości.n/2x1x2
- Do czasu odczytania przez maszynę prefiksu o długości części x , sterty wyglądają tak samo dla obu x 1 i x 2 , a także maszyna jest w tym samym stanie (musi się to zdarzyć dla niektórych x 1 , x 2 , dla wystarczająco dużego n , ponieważ istnieje więcej niż 2 0,8 n różnych opcji 2 dla x 1 , x 2 i co najwyżej ( 3,5 c n ) | Γ | | Qn/2xx1x2x1,x2n20.8n2x1,x2różne opcje zawartości i stanu sterty 3 ).(3.5cn)|Γ||Q|3
Oczywiste jest, że maszyna musi zaakceptować słowo , gdzie x p 1 jest prefiksem x długości n / 2, a x s 2 jest sufiksem x 2 o tej samej długości. Należy zauważyć, że liczba zer iN x p 1 x s 2 różni się od liczby jedynek w x 1 oraz x 2 (to znaczy, z # 0 ( rz⊥y⊥xp1xs2xp1xn/2xs2x2xp1xs2x1x2 ), ze względu na sposób, w jaki wybraliśmy x 1 i x 2 , doszliśmy do sprzeczności.#0(y)x1x2
Czy to założenie szkodzi ogólności? Nie sądzę, ale to rzeczywiście wymaga dowodu. Jeśli ktoś wie, jak obejść to dodatkowe założenie, chciałbym wiedzieć. 2 Naprawmy x 1, aby był prefiksem (o długości n / 2 miał dokładnie n / 4 zer). Przypomnijmy, że używającprzybliżenia Stirlingaznamy ten log ( n1
2 x1n/2n/4gdzieH()jestfunkcją binarną entropii. PonieważH(1/4)≈0,81mamy ( Nlog(nk)≈nH(k/n)H()H(1/4)≈0.81dla wystarczająco dużegon. (nn/4)>20.8nn3Zakładając alfabetΓ, są| Γ| nróżnych łańcuchów o długościn, więc jeśli był to stos, to byliśmy przykręceni. Jednak wypychanie „01” na stercie jest równoważne z wypychaniem „10” - na stercie przechowywana jest tylko posortowana wersja zawartości. Liczba różnychposortowanychciągów o rozmiarzenwynosi (n+1
3 Γ|Γ|nnn, dla stałej| Γ| .(n+1|Γ|−1)≈n|Γ||Γ|