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.