Minimalisatie van een automaat
Met het minimaliseren van een automaat bedoelen we het vinden van een equivalente automaat met het kleinst mogelijke aantal toestanden. Ook een automaat zonder overbodige toestand kan nog verder worden vereenvoudigd.
Voorbeeld
Neem deze automaat:
De automaat accepteert alleen de woorden 01 en 11. Het is duidelijk dat er een eenvoudigere automaat met drie toestanden bestaat die dezelfde taal accepteert. De toestanden q1 en q2 kunnen we samenvoegen tot één nieuwe toestand {q1, q2}, en de overgangen die naar q1 of q2 liepen, lopen dan naar de nieuwe toestand, en hetzelfde geldt voor overgangen die uit q1 en q2 vertrekken. We krijgen deze automaat:
Deze automaat accepteert duidelijk dezelfde taal als de vorige en heeft tegelijk minder toestanden.
Equivalentie van toestanden
Neem een automaat A = ⟨Q, Σ, δ, q0, F⟩. We definiëren de taal van een toestand q ∈ Q, genoteerd L(q), als
Dat wil zeggen: we veranderen de begintoestand van de automaat A van q0 in q en berekenen de taal die door deze automaat wordt geaccepteerd. Met andere woorden: in de taal L(q) zitten alle woorden w waarvoor we in de automaat A vanuit toestand q met het woord w in een eindtoestand van de automaat komen. Als we teruggaan naar de vorige automaat, geldt L(q1) = {1}.
We zeggen dat twee verschillende toestanden q1 en q2 equivalent zijn als
Wat betekent dat? Als de toestanden q1, q2 equivalent zijn, dan genereren ze dezelfde taal als we ze tot begintoestand van de automaat maken. Met andere woorden: als de automaat in de configuraties ⟨q1, w⟩ en ⟨q2, w⟩ komt, dan moet hij in beide gevallen accepteren of in beide gevallen verwerpen.
Terug naar de vorige automaat: de toestanden q1 en q2 zijn equivalent, want als we in toestand q1 zitten, kunnen we het invoerwoord alleen nog accepteren als het nog niet gelezen deel van het woord gelijk is aan 1. Hetzelfde geldt als we in toestand q2 zitten.
Bij het minimaliseren van een automaat gaat het er dus om equivalente toestanden te vinden en die te verwijderen door ze samen te voegen tot één nieuwe toestand, net zoals we in het voorbeeld hierboven hebben gedaan.
Hoe vind je equivalente toestanden
Welke toestanden zijn zeker niet equivalent? Een eindtoestand en een niet-eindtoestand zijn zeker niet equivalent, want de taal van een eindtoestand verschilt van de taal van een niet-eindtoestand — een eindtoestand accepteert zeker het woord ε, een niet-eindtoestand niet. We laten de werkwijze meteen aan een voorbeeld zien. Neem deze automaat:
We beginnen met het maken van twee verzamelingen toestanden
Nu maken we een overgangstabel en houden we de informatie over de groepen S1 en S2 bij:
Nu passen we de tabel aan: in plaats van direct in de tabel op te schrijven naar welke toestanden we bij een bepaald symbool gaan, noteren we alleen de groep waarnaar we overgaan. Vanuit toestand q3 komen we bij 0 bijvoorbeeld in toestand q5, die in groep S2 zit. In plaats van q5 schrijven we dus S2 in de tabel:
Nu splitsen we beide groepen verder. In dezelfde groep zetten we steeds toestanden die voor alle symbolen naar dezelfde groepen gaan. De toestanden q3 en q6 zitten bijvoorbeeld niet in dezelfde groep, omdat ze noch bij 0 noch bij 1 naar dezelfde groep gaan. De toestanden q1 en q2 zitten daarentegen wel in dezelfde groep, omdat beide toestanden geen overgang voor 0 hebben en beide toestanden bij 1 naar groep S1 gaan. We maken zo nieuwe groepen:
In elke groep hebben we dezelfde overgangen. We geven de nieuwe groepen een naam en bepalen weer naar welke van die nieuwe groepen de toestanden gaan:
Op dit moment gaan we de groepen verder splitsen. We zien echter dat we geen verdere splitsing meer kunnen doen, we zouden dezelfde groepen krijgen — want de toestanden q1 en q2 hebben weliswaar dezelfde overgangen binnen de groepen, maar zitten al in dezelfde groep en er is geen andere toestand in groep S4. Het algoritme voor het vinden van equivalente toestanden is ten einde. Uit elke groep hoeven we maar één toestand te kiezen, de rest verwijderen we, en alle overgangen die naar verwijderde toestanden liepen, lopen voortaan naar die ene toestand die we hebben gekozen.
We kunnen dus kiezen dat onze nieuwe automaat de toestanden q3, q6, q0, q1, q4 heeft en de toestanden q2 en q5 verwijderen. Alle overgangen die naar q2 liepen, lopen nu naar q1 en alle overgangen die naar q5 liepen, lopen naar q4:
Werkwijze bij het minimaliseren van een automaat
- We verwijderen de onbereikbare toestanden,
- we verwijderen de overbodige toestanden,
- we verwijderen de equivalente toestanden.
Bronnen
Hoofdstukken: Onbereikbare toestanden, Overbodige toestanden, Minimalisatie van een automaat