W teorii języków, Algorytm Earleya jest algorytmem analizy syntaktycznej dla gramatyk niekonstkalnych opisanych po raz pierwszy przez Jaya Earleya [[[ Pierwszy ] . Jak algorytmy CYK i Glr , Algorytm Earleya oblicza wszystkie możliwe analizy zdania (i nie tylko jedna z tych analiz). Opiera się na dynamicznym programowaniu.
Możemy zbudować analizator Earley dla dowolnej gramatyki niekonstkalnej. Biega w czasie sześciennym (o (n 3 ), Lub N jest długością łańcucha wejściowego). W przypadku gramatyki nieobsługiwej analiza Earley przeprowadzana jest w czasie kwadratowym (n (n 2 )).
Rozważ gramatykę niekonstologiczną, a także łańcuch wejściowy długości
odnotowany
. Analiza według algorytmu Earley ma na celu rozpoznanie łańcucha, a zatem stwierdzenie, czy łańcuch jest częścią języka generowanego przez gramatykę.
Przedmioty Earley et Table Earley [[[ modyfikator |. Modyfikator i kod ]
Algorytm Earleya manipuluje Przedmioty Earley , nazywany prosto rzeczy . Pozycja to dane:
- Zauważona zasada produkcji gramatyki
;
- Indeks startowy
W słowie wpis, taki jak
;
- wskaźnik pozycji we właściwej części reguły, która jest reprezentowana przez a punkt .
Reprezentujemy element w formularzu
, Lub
.
Zasada algorytmu [[[ modyfikator |. Modyfikator i kod ]
Mamy stół
sztywny
gdzie przechowujemy zestawy przedmiotów Earleya, gdzie
jest długością łańcucha wejściowego.
Obliczenia zaczyna się od
zawierające elementy formularza
Lub
jest aksjomat gramatyki i
jest zasadą produkcyjną. Przedmiot
Reprezentuje sytuację, w której nic nie zostało rozpoznane, ale gdzie staramy się rozpoznać aksjomat od początku łańcucha wejściowego. Następnie wykonujemy krok 0, 1, …, do kroku n.
Cel kroku
ma obliczyć, aby przechowywać w tabeli
, wszystkie przedmioty
Jak na przykład
jest rozpoznawany przez
.
Na scenie
, obliczamy
z tabel
Nasety, w kolejności trzech operacji:
- Czytanie (skaner po angielsku). Operacja odczytu jest przeprowadzana
. Dla dowolnego elementu
kształtu
Dodajemy
L’Utem
. Innymi słowy, rozwijamy punkty w pozycjach
Jeśli poprzedzi list przeczytany
.
- Prognoza (predyktor w języku angielskim). I przedmiot z formularzy
jest w
Lub
jest nieokreślony, a następnie dla wszystkich zasad
, dodajemy element
do wszystkich
. Innymi słowy, jeśli musimy rozpoznać, testujemy wszystkie zasady, gdzie
jest po lewej stronie.
- Ukończenie (pełne w języku angielskim) . I przedmiot z formularzy
jest w
, potem dla wszystkich elementów w tabeli
kształtu
, dodajemy
W
. Innymi słowy, jeśli
Recon
, rozwijamy zasady, które czekały na uznanie
.
Analiza się powiódła, jeśli tabela
Zawiera element w formie
, Lub
jest produkcją.
Rozważ kolejną gramatykę wyrażeń arytmetycznych:
jest aksjomat gramatyki.
Przeanalizujmy łańcuch wejściowy
. Następnie uzyskujemy następujące tabele. Zwrócimy uwagę „P:” Operację prognostyczną; „C:” Operacja ukończenia i „L:” Operacja czytania.
W kroku 0 obliczanie zaczyna się od
. Następnie nasycimy operacją prognostyczną.
|
|
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
|
W kroku 1 otrzymujemy
przez operację czytania. Operacja przewidywania nic nie wytwarza, ponieważ wskaźnik położenia znajduje się na końcu właściwej części. Przedmiot
jest używany przez operację zakończenia do uzyskania
, Następnie
itd. do nasycenia operacji zakończenia.
|
L: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
|
W kroku 2 otrzymujemy
czytając operację. Jak
jest tuż po indeksie pozycji w pierwszej linii
, dodajemy wszystkie zasady
W prognozie, z indeksem 2, który jest bieżącym wskaźnikiem pozycji.
|
L: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
P: |
|
|
|
|
W kroku 3 czytamy
, więc uzupełniamy
z
W
. Jest więc zasada
Tak więc zasada
kończy się w
.
Nasyczymy przez zakończenie.
|
L: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
C: |
|
|
|
|
Jak
jest w
, słowo wejście jest rozpoznawane.
Złożoność espace [[[ modyfikator |. Modyfikator i kod ]
Albo
Liczba osobnych elementów w indeksie bliskiego startu. Można to zwiększyć przy użyciu wielkości gramatyki: dla każdego elementu w gramatyce wskaźnik pozycji może mieć skończoną liczbę przestrzeni i dla każdej z tych pozycji uzyskujemy inny element. Otrzymujemy
Licząc te elementy. W praktyce sprowadza się to do liczenia liczby możliwych lokalizacji symbolu
W zasadach produkcji gramatyki. W poprzednim przykładzie mamy zatem
.
Przy stole
, każdy z
elementy mogą pojawiać się z indeksem start pomiędzy
I
. Więc jest najwyżej
elementy w tabeli
jest zwiększony przez
Lub
to rozmiar słowa wejściowego. Podsumowując
Dla
z
ma
, otrzymujemy
Elementy co najwyżej w tabelach. Złożoność w przestrzeni jest zatem w O (N²).
Złożoność w czasie (sprawa ogólna) [[[ modyfikator |. Modyfikator i kod ]
Zbadajmy złożoność czytania operacji, prognozy i ukończenia na stole
:
Czytanie analizuje elementy
każdy w stałym czasie. Biorąc pod uwagę wielkość
, operacja odczytu jest wykonywana w
. Prognozy działa na każdym z elementów już obecnych w stałym czasie. Po odczytaniu liczba obecnych elementów jest w
Dlatego przewidywanie jest wykonywane w
. Ukończenie działa na każdym obecnym elemencie w czasie w zależności od wielkości tabeli, do której powraca jej indeks startowy. W najgorszym przypadku mogą być ograniczone do jednej drogi każdej z poprzednich tabel, co daje złożoność O (J²).
Podsumowując te złożoności
Tabele, otrzymujemy złożoność w ostatnim czasie w O (n 3 ).
Złożoność w czasie (gramatyka non-ambiguë) [[[ modyfikator |. Modyfikator i kod ]
Które stawiają złożoność w O (n 3 ) była działaniem ukończenia. Teraz, jeśli gramatyka nie jest ambiguel, istnieje tylko jeden sposób na uzyskanie każdego elementu i rozmiar tabeli
Po zakończeniu
. Więc każdego z tych elementów można było uzyskać tylko w czasie
. Następnie uzyskujemy, podsumowując złożoność w czasie w O (N²).
Analiza Earleya można wykonać za pomocą Acykliczny wykres zorientowany wejście [[[ 4 ] Zamiast ciąg znaków. Umożliwia to ustalenie kilku słów jako bardziej zwarty sposób, a także analizowanie kilku słów w tym samym czasie, dzięki czemu jest bardziej skuteczny. Tabele tabel są następnie wskaźnikami odpowiadającymi topologicznemu sortowaniu wykresu. Ponadto dla węzła indeksu J, operacja odczytu już nie używa
więcej
gdzie k jest wskaźnikiem węzła nadrzędnego badanego węzła.
Recent Comments