Automaty - DAS, NAS i eNAS

Transkrypt

Automaty - DAS, NAS i eNAS
Automaty
DAS, NAS i eNAS
Adam Kobus
Updated: 5 kwietnia 2016
automaty3
Leniwa konwersja NAS na
DAS
Przeszukiwanie tekstu
Jednym z ważnych zastosowań automatów NAS i DAS jest
przeszukiwanie tekstu w poszukiwaniu słów kluczowych.
Konstrukcja takiego NAS:
# L- językiem jest zbiór słów kluczowych
# q0 - stan początkowy z przejściem po każdym symbolu do
samego siebie. Znajdziemy się w nim zawsze, gdy nie
osiągnęliśmy jeszcze żadnego słowa kluczowego.
# dla każdego ω = a1 a2 . . . ak automat zawiera odpowiednio k
stanów q1 , q2 , . . . , qk . Jednym słowem - po jednej ścieżce
stanów na jedno słowo kluczowe. Każdy stan qk jest stanem
akceptującym.
Przeszukujący NAS i DAS
Przeszukujący NAS
Przykład: NAS wyszukujący słowa “ebay” i “web”.
Sposoby wykorzystania
By móc wykorzystać dany automat, należy go zaimplementować.
Można to zrobić na dwa sposoby:
# zaimplementować obliczanie zbiorów stanów, w jakich będzie
znajdował się automat po przeczytaniu każdego z symboli
wejściowych,
# zamienić NAS na DAS i zaimplementować DAS.
Niektóre programy, jak fgrep - wyszukiwanie literałów, czy egrep rozszerzonych wyrażeń regularnych, łączą oba sposoby.
Metoda konstrukcji podzbiorów
Ta metoda konwersji NAS na DAS ma własność zachowywania
liczby stanów NAS. Reguły:
# stan początkowy q0 będzie ten sam
# jeżeli q będzie jednym ze stanów osiągalnych ze stanu
początkowego wzdłuż a1 a2 . . . am , to stanem DAS staje się
zbiór stanów: {q0 , q} ∪ A, gdzie A jest zbiorem stanów NAS
takich, które są osiągalne z q0 wzdłuż ścieżki, której etykiety
posiadają sufiks a1 a2 . . . am , czyli dowolny ciąg postaci
aj aj+1 . . . a1 a2 . . . am .
Przykład konwersji
q01
w
q01
e
q024
E-w-e
q0
Kolejny krok algorytmu konwersji
q024
w
q01
e
q04
b
q035
E-w-e-b
q0
Przykładowy DAS
Zadania
Zadania
Skonstruować NASy akceptujące słowa kluczowe:
# 0101, 101 i 011,
# ab, bc i ca
Zamienić NAS na DAS.

Podobne dokumenty