Chciałbym wiedzieć, dlaczego do rozpoznawania języków bezkontekstowych działają tylko niedeterministyczne automaty wypychające (DPA = NPDA). Dlaczego deterministyczne automaty wypychające (DPDA) nie rozpoznają takich języków?
Chciałbym wiedzieć, dlaczego do rozpoznawania języków bezkontekstowych działają tylko niedeterministyczne automaty wypychające (DPA = NPDA). Dlaczego deterministyczne automaty wypychające (DPDA) nie rozpoznają takich języków?
Odpowiedzi:
Nie jestem do końca pewien, jakiego smaku „dlaczego” szukasz. Jednym z powodów wzrostu mocy przy dopuszczaniu niedeterminizmu jest następujący przykład:
Pozwolić być zestawem palindromów nad jakimś alfabetem (co najmniej dwóch symboli), gdzie jest odwrotnością . NPDA dla tego języka może po prostu wypychać symbole na stos, a następnie w pewnym momencie zgadnąć, że osiągnął środek wejścia i stopniowo opróżniał stos. Zauważ, że warunek akceptacji jest czysto egzystencjalny - wystarczy, aby poprawnie zgadnąć słowo.
Deterministyczny PDA musiałby wybrać pozycję, którą uważa za środkową, w sposób zależny tylko od bieżącego prefiksu. Założyćjest takim DPDA. Dla każdego, pozwolić ; pozwolić być pustym słowem i . Jest to sekwencja palindromów, z których każdy jest prefiksem następnego, więc musi być w stanie akceptacji , z pustym stosem, po przeczytaniu . Zgodnie z zasadą gołębnicy musi być kilka takie, że i (istnieje skończona liczba stanów, a więc niektóre muszą zostać „ponownie wykorzystane”, ponieważ istnieje nieskończona liczba stanów s). Ale wtedy nie mogę odróżnić , który jest palindromem, z , co nie jest.
FA deterministycznie lub niedeterministycznie akceptuje ten sam język (tj. Regularny Lang).
Ale w przypadku PDA , jeśli ograniczymy go do zachowania deterministycznego , nie zaakceptuje niektórych CFL (CFL bez właściwości prefiksu (z wyjątkiem RL)).
Dlaczego tak?
Rozważ przykład CFL, który nie ma właściwości przedrostka (właściwość Przedrostek języka: żaden ciąg nie jest poprawnym przedrostkiem innego łańcucha w języku).
L = wwr
na przykład. ciągi 00 i 0000 . (00 jest poprawnym prefiksem 0000, więc wwr nie ma właściwości pref.).
Zdarza się, że 00 DPDA przejdzie do stanu końcowego. Teraz, ponieważ DPDA nie ma wyboru między akceptacją a ciągłością , nie może zaakceptować 0000 po zaakceptowaniu 00 . To jest miejsce, w którym PDA wymaga niedeterminizmu .
Uwagi : W przypadku FA, lang (RL) bez pref. właściwość może zostać przyjęta deterministycznie (np. ciągi zaczynające się od 0). To pokazuje, że wpływ właściwości prefiksu RL i CFL jest inny . Różnica między determinizmem a niedeterminizmem w PDA powoduje powstanie nowej rodziny języków. który jest akceptowany przez DPDA. Ten język nazywa się DCFL .