Języki, automaty i obliczenia/Ćwiczenia 5: Algorytmy konstrukcji automatu minimalnego

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Ćwiczenia 5

Ćwiczenie 1

Ile co najmniej stanów ma automat akceptujący dokładnie jedno słowo w o długości n?

Rozwiązanie


Ćwiczenie 2

Niech n0 będzie dowolną, ustaloną liczbą. Wykaż, że automat rozpoznający język

L={akbk:0kn}

ma co najmniej 2n+2 stany.

Rozwiązanie

Ćwiczenie 3

Niech =(S/,A,f,[s0],T) będzie automatem minimalnym dla automatu 𝒜=(S,A,f,s0,T). Czy zbiór stanów S/ automatu minimalnego obliczonego za pomocą algorytmu wyznaczania stanów rozróżnialnych, zależy od:

(1) wyboru w 𝒜 stanu początkowego s0,
(2) wyboru w 𝒜 zbioru stanów końcowych T?
Rozwiązanie punktu 1
Rozwiązanie punktu 2

Ćwiczenie 4

Zastosuj algorytm wyznaczający stany rozróżnialne do

zminimalizowania następujących automatów:
Rysunek 3
Rysunek 4

Rozwiązanie punktu 1
Wskazówka do punktu 2
Rozwiązanie punktu 2

Ćwiczenie 5

Wykorzystując algorytm stabilizujących się relacji wyznacz automaty minimalne dla automatów z rysunków 3 oraz 4.

Ćwiczenie 6

Niech L=A*aA*bA*, gdzie A={a,b}. Zastosuj algorytm wykorzystujący pochodną Brzozowskiego do obliczenia automatu minimalnego dla tego języka.

Rozwiązanie

Poniżej znajduje się opis jeszcze jednego algorytmu minimalizacji - algorytmu Hopcrofta. Jest on nieco bardziej skomplikowany niż trzy podane dotychczas algorytmy, ale posiada lepszą złożoność niż algorytm obliczania stanów rozróżnialnych czy też algorytm wyznaczania ciągu relacji stabilizujących. Przeanalizuj opis algorytmu i jego zapis, a następnie rozwiąż zadanie 7.

Algorytm Hopcrofta

Niech 𝒜=(S,A,f,s0,T) będzie automatem, a QS podzbiorem. Dowolny podzbiór RS i dowolna litera aA wyznaczają na zbiorze Q relację równoważności o dwóch klasach abstrakcji:

Q1={sQ:f(s,a)R}; Q2={sQ:f(s,a)∉R},

przy czym jeśli jeden ze zbiorów Q1,Q2 jest pusty, to relacja ta posiada tylko jedną klasę abstrakcji. Wprost z definicji zbiory Q1 i Q2 tworzą podział zbioru Q (tzn. Q=Q1Q2,Q1Q2=).Oznaczmy omawianą relację przez ρRa.

W algorytmie zmienna P oznacza podział zbioru stanów S, a - listę par (Y,a), które będą wykorzystane do definiowania kolejnych relacji ρYa.

Algorytm MinHopcroft - algorytm Hopcrofta minimalizacji automatu


 1  Wejście: 𝒜=(S,A,f,s0,T) - automat taki, że L=L(𝒜)
 2  Wyjście: P - podział zbioru S przez prawą kongruencję automatową
 3  P{T,ST};           P jest zbiorem rozłącznych podzbiorów S
 4  if |T|<|ST| then
 5    for each aA do 
 6      włóż(,(T,a));   
 7    end for
 8  else 
 9    for each aA do
 10     włóż (,(ST,a));   
 11   end for
 12  end if
 13  while  do
 14   (Y,a) zdejmij ();
 15   𝒳{XP: |X/ρYa|=2};
 16   for each X𝒳 do 
 17     for each bA do
 18       {X1,X2}X/ρYa;       X/ρYa zawiera dwie klasy abstrakcji
 19       P(PX)X1X2;
 20       if (X,b) then
 21         (X,b);             zdejmij z  dokładnie parę (X,b) 
 22         włóż(,(X1,b));
 23         włóż(,(X2,b));
 24       else  
 25         if |X1|<|X2| then
 26           włóż(,(X1,b));
 27         else
 28           włóż(,(X2,b)); 
 29         end if
 30       end if
 31     end for 
 32   end for 
 33  end while
 34  return P;


Funkcja zdejmij() pobiera z listy dowolny element i zwraca go jako swoją wartość. Procedura włóż(,X) dodaje do listy element X.

Aby zdefiniować funkcję przejść automatu minimalnego, jego zbiór stanów końcowych oraz stan początkowy, należy postąpić identycznie jak w algorytmie wyznaczania ciągu stabilizujących się relacji. Jedyna różnica polega na tym, że w miejsce relacji otrzymaliśmy podział zbioru S na klasy abstrakcji zadane przez poszukiwaną relację. Oczywiście klasy abstrakcji wyznaczają jednoznacznie relację równoważności i na odwrót - relacja równoważności wyznacza jednoznacznie podział zbioru na klasy równoważności, zatem forma opisu relacji przez klasy abstrakcji nie stanowi dla nas żadnego problemu.

Przy właściwej reprezentacji wszystkich używanych struktur, algorytm MinHopCroft działa w czasie |A|nlogn, gdzie n jest liczbą stanów automatu, a |A| rozmiarem jego alfabetu wejściowego. Wyjściem algorytmu jest podział P zbioru stanów. Każdy element zbioru P reprezentuje jeden stan automatu minimalnego.

Ćwiczenie 7

Zastosuj algorytm Hopcrofta do zminimalizowania automatu z rysunku 3 (patrz cwiczenie 4.)

Rozwiązanie
ZADANIA DOMOWE

Ćwiczenie 8

Zminimalizuj przedstawione poniżej automaty:

(1) stosując algorytm wyznaczający stany rozróżnialne,
(2) stosując algorytm stabilizujących się relacji,
(3) stosując algorytm Hopcrofta.
Rysunek 6
Rysunek 7


Ćwiczenie 9

Niech L=A*aA2, gdzie A={a,b}. Zastosuj algorytm wykorzystujący pochodną Brzozowskiego do obliczenia automatu minimalnego dla tego języka.