Dlaczego niezbędny jest niedeterminizm (automaty obniżające)?


9

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?


10
Język może zostać rozpoznany przez deterministyczne automaty wypychające, jeśli istnieje pewna gramatyka LR (1) dla tego języka. Ponieważ istnieją języki bezkontekstowe, które nie opisują żadnej gramatyki LR (1), NPDA! = DPDA. Ponieważ te wyniki są bardzo dobrze znane i zwykle będą omawiane podczas kursu na temat kompilatorów, nie jestem pewien, czy to odpowiada na twoje pytanie: czy może szukasz intuicji za tym faktem?
Alex ten Brink

jest to w gruncie rzeczy sprzeczne z intuicją, biorąc pod uwagę, że istnieją inne kluczowe modele, w których niedeterminizm nie ma znaczenia dla akceptowanych języków - FSM i TM.
vzn

Odpowiedzi:


25

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ć L być zestawem palindromów ww¯ nad jakimś alfabetem (co najmniej dwóch symboli), gdzie w¯ jest odwrotnością w. 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ćAjest takim DPDA. Dla każdegokN, pozwolić uk=ab2ka; pozwolićv0 być pustym słowem i vk+1=vkukvk. Jest to sekwencja palindromów, z których każdy jest prefiksem następnego, więcA musi być w stanie akceptacji qk, z pustym stosem, po przeczytaniu vk. Zgodnie z zasadą gołębnicy musi być kilkak,l takie, że kl i qk=ql (istnieje skończona liczba stanów, a więc niektóre muszą zostać „ponownie wykorzystane”, ponieważ istnieje nieskończona liczba stanów ks). Ale wtedyA nie mogę odróżnić vkukvk, który jest palindromem, z vlukvk, co nie jest.


0

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 .

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.