Algorytm Brzozowskiego można rozszerzyć na automaty Moore'a, ale jego złożoność czasowa jest generalnie wykładnicza. Czy istnieje jakiś inny algorytm minimalizacji automatów Moore? Jakie są czasy działania tych algorytmów, jeśli takie istnieją?
11
Odpowiedzi:
Oryginalny algorytm minimalizacji DFA został faktycznie zaprojektowany dla Moore Machines , kierując się ich pozornie bardziej obserwowalnym zachowaniem. Ale przedstawiony tutaj algorytm jest rekonstrukcją z minimalizacji DFA, ponieważ odkryłem dowody historyczne po fakcie.
Po Wikipedii (z pewnymi zmianami notacyjnymi):
Zgodnie z tą definicją maszyna Moore'a jest deterministycznym przetwornikiem stanu skończonego.
Nie mam odniesienia do minimalizacji automatów Moore'a. Nie wydaje się jednak zbyt trudne wyobrażenie sobie algorytmu pochodzącego z algorytmu stosowanego do deterministycznych automatów skończonych.
Idea minimalizacji DFA oparta jest na charakterystyce Myhill-Nerode dla zwykłych języków .
Rzeczywiście każdy stan najmniejszej DFA jest takie, że W Q jak zdefiniowano powyżej, jedną z klas równoważności na stosunek R L .q W.q RL.
W przypadku nie-minimalnego DFA dla języka regularnego łatwo jest wykazać, że każdy zestaw W q zawiera łańcuchy, które wszystkie należą do tej samej równoważnej klasy w odniesieniu do R LL. W.q RL. .
Zatem minimalizacja DFA faktycznie polega na łączeniu stanów (traktowanych jako zestawy równoważnych ciągów), ilekroć zostanie wykazane, że dwa różne stany zawierają równoważne ciągi.
W tym celu istnieją dwa dość szybkie algorytmy: algorytm Moore'a (1956), który jest w czasie i algorytm Hopcrofta (1971) w czasie O ( n log n )O ( n2)) O ( n logn ) .
Przedłużenie Moore automatów jest najlepiej rozumiany w redefining stosunek równoważności, dla przetwornika T . Relacja R L dotyczyła tego, czy przyszłe dane wejściowe doprowadzą w sposób równoważny do stanu akceptującego. R TRT. T RL RT relacja równoważności z automatów Moore'a dotyczy tego, czy wejście przyszłość przyniesie taki sam efekt.
Stąd, biorąc pod uwagę przetwornik i dwa ciągi x i y , definiujemy rozszerzenie wyróżniające jako ciąg z taki, że T ( x z ) = T ( x ) u i T ( y z ) = T ( y ) v z u ≠ v , tj. takie, że zachowanie wyjściowe przetwornika różni się dla z zależnie od tego, czy następuje po x lub yT x y z T(xz)=T(x)u T(yz)=T(y)v u≠v z x y .
Ponownie, jest relacją równoważności, dzielącą wszystkie łańcuchy na Σ ∗RT Σ∗ na klasy równoważności. W przypadku maszyny Moore klasy te ponownie będą odpowiadały stanowi minimalnego przetwornika.
Poniższy algorytm naśladuje algorytm Moore'a w celu minimalizacji DFA.
Zdefiniować początkową partycji z Q na klasy stanowi, S e , jak następuje:P Q Se
Następnie podzieliliśmy klasy naP w następujący sposób:
powtarzaj kolejno dla każdej klasy stanów , aż żadna zmiana nie powtórzy ∀ a ∈ Σ ,S
∀a∈Σ,
Jeżeli następnienie rób nicwięcej,dzieląc S na podzbiory S i tak, żedla każdego podzbioru S i istnieje inna klasa S ′ ∈ P taka, że ∀ q ∈ S i ,∃S′∈P,∀q∈S,δ(q,a)∈S′
S Si
Si S′∈P (podzbiory S i zastępują S w P∀q∈Si,δ(q,a)∈S′
Si S P )
Gdy nie ma już żadnej klasy, którą należałoby podzielić, pozostałe klasy stanów utworzą stany minimalnej maszyny Moore'a.
Z założenia wszystkie stany w klasie mają takie same dane wyjściowe, co dane wyjściowe dla klasy.
Podobnie dla każdego wejściaa∈Σ wszystkie stany w klasie przechodzą do pewnego stanu w tej samej innej klasie, która definiuje funkcję przejścia dla minimalnej maszyny Moore'a.
Analiza złożoności: Niech być liczbą stanów, a s = | Σ | wielkość wprowadzanego alfabetu. Główna pętla jest wykonywana co najwyżej n razy, ponieważ każda iteracja musi podzielić co najmniej jedną klasę stanów, a każda klasa zawiera co najmniej jeden stan. Każda iteracja pętli sprawdza każdy stan skończoną liczbę razy i proporcjonalnie do liczby symboli wejściowych. Dlatego złożoność algorytmu wynosi O ( s n 2 )n=|Q| s=|Σ|
n O(sn2) , tak samo jak algorytm minimalizacji DFA, który posłużył za wskazówkę dla tego algorytmu.
Nie mam odniesienia do tej minimalizacji maszyn Moore. Być może jest to zawarte w jego pracy:
Ten artykuł jest głównym dokumentem wprowadzającym Moore Machines . Jest to również odniesienie do algorytmu minimalizacji DFA Moore'a . Zaskakujące powinno być zatem to, że dostosowanie algorytmu do minimalizacji maszyn Moore'a nie było przynajmniej sugerowane w tym dokumencie. Sprawdziłem gazetę, a przedstawiona wersja algorytmu minimalizacji jest w rzeczywistości dla maszyn Moore, a nie dla DFA. Artykuł jest dobrze napisany, ale styl czasu utrudnia jego czytanie. Interesujące jest to, że wiele pomysłów teorii Myhill-Nerode maszyn skończonych stanów zostało już naszkicowanych w tym artykule.
Nowsza algorytm powodu John Hopcroft (1971) W podobny sposób należy dostosować do urządzeń Moore. Nie jest jasne, że istniał jakikolwiek powód, aby opublikować tę adaptację w dowolnym miejscu, a artykuł Hopcroft wydaje się nie mieć odniesienia do maszyn Moore.O(snlogn)
źródło
Wersja algorytmu Brzozowskiego wykorzystująca pochodne wyrażeń regularnych podana jest w [2], rozdziale 12, sekcji 4, gdzie zapisano ją w [4]. Patrz [1] i [3], aby zapoznać się z bardziej ogólnym przypadkiem przetworników podsekwencyjnych (terminologia jest nieco przestarzała, a termin przetwornik sekwencyjny jest obecnie prawdopodobnie bardziej odpowiedni).
[1] C. Choffrut, Minimalizacja podrzędnych przetworników: ankieta, Theoret. Komp. Sci. 292 (2003), 131–143.
[2] S. Eilenberg, Automata, Languages and Machines, vol. A, Academic Press, 1974.
[3] J.-E. Pin, samouczek na temat funkcji sekwencyjnych . (Slajdy)
[4] GN Raney, Funkcje sekwencyjne, JACM 5 (1958), 177–180.
źródło
Algorytm Brzozowskiego jest złym punktem wyjścia (jeśli chodzi o asymptotyczne środowisko uruchomieniowe najgorszego przypadku). Nawet Wikipedia mówi ci tyle:
Algorytm ma wykładniczy czas działania w najgorszym przypadku, nawet w DFA, ponieważ oblicza automat dla odwrotności, który może być wykładniczo duży. Więc twój problem nie pochodzi z rozszerzenia na przetworniki.
Spróbuj dostosować inny algorytm minimalizacji DFA.
źródło