Minimering av automater
Med minimering av en automat menar vi att hitta en ekvivalent automat som har så få tillstånd som möjligt. Även en automat som inte innehåller något överflödigt tillstånd kan förenklas ytterligare.
Exempel
Låt oss ta den här automaten:
Automaten accepterar bara orden 01 och 11. Det är uppenbart att det finns en enklare automat med tre tillstånd som accepterar samma språk. Tillstånden q1 och q2 kan slås ihop till ett nytt tillstånd {q1, q2}, och de övergångar som ledde till q1 eller q2 leder nu till det nya tillståndet, och detsamma gäller övergångarna som utgick från q1 och q2. Vi får den här automaten:
Den här automaten accepterar uppenbarligen samma språk som den förra och har dessutom färre tillstånd.
Ekvivalenta tillstånd
Låt A = ⟨Q, Σ, δ, q0, F⟩ vara en automat. Vi definierar språket för tillståndet q ∈ Q, betecknat L(q), som
Det vill säga att vi byter automatens A starttillstånd från q0 till q och bestämmer språket som den automaten accepterar. Med andra ord innehåller språket L(q) alla ord w sådana att vi i automaten A från tillståndet q med ordet w kommer till ett sluttillstånd. Om vi återvänder till den förra automaten är L(q1) = {1}.
Vi säger att två olika tillstånd q1 och q2 är ekvivalenta om
Vad betyder det? Om tillstånden q1, q2 är ekvivalenta och vi gör dem till starttillstånd i automaten, så genererar de samma språk. Med andra ord: om automaten hamnar i konfigurationen ⟨q1, w⟩ respektive ⟨q2, w⟩, så måste den antingen acceptera i båda fallen eller förkasta i båda fallen.
Om vi återvänder till den förra automaten: tillstånden q1 och q2 är ekvivalenta, eftersom vi i q1 bara kan acceptera indataordet om den olästa delen av ordet är 1. Detsamma gäller om vi är i q2.
Vid minimering av en automat gäller det alltså att hitta ekvivalenta tillstånd och ta bort dem genom att slå ihop dem till ett nytt tillstånd, på samma sätt som vi gjorde i exemplet ovan.
Hur du hittar ekvivalenta tillstånd
Vilka tillstånd är säkert inte ekvivalenta? Om vi tar ett sluttillstånd och ett tillstånd som inte är ett sluttillstånd är de säkert inte ekvivalenta, eftersom språket för sluttillståndet skiljer sig från språket för det andra. Sluttillståndet accepterar säkert ordet ε, det andra gör det inte. Vi visar förfarandet direkt med ett exempel. Låt oss ta den här automaten:
Vi börjar med att skapa två mängder av tillstånd
Nu skapar vi en övergångstabell och behåller informationen om grupperna S1 och S2:
Nu ändrar vi tabellen så att vi i stället för att skriva direkt vilka tillstånd vi kommer till för en viss symbol bara antecknar vilken grupp vi går till. Från tillståndet q3 kommer vi till exempel för 0 till q5, som ligger i gruppen S2. I stället för q5 skriver vi alltså S2 i tabellen:
Nu delar vi upp båda grupperna ytterligare. I samma grupp lägger vi alltid de tillstånd som för alla symboler går till samma grupper. Tillstånden q3 och q6 hamnar till exempel inte i samma grupp, eftersom de varken för 0 eller för 1 går till samma grupp. Däremot hamnar q1 och q2 i samma grupp, eftersom båda saknar övergång för 0 och båda går för 1 till gruppen S1. Vi skapar alltså nya grupper:
I varje grupp har vi nu samma övergångar. Vi namnger de nya grupperna och tar återigen reda på till vilka av de nya grupperna tillstånden går:
Nu delar vi upp grupperna ännu en gång. Vi ser dock att vi inte kan göra någon ytterligare uppdelning, eftersom vi skulle få samma grupper. Tillstånden q1 och q2 har visserligen samma övergångar mellan grupperna, men de ligger redan i samma grupp, och inget annat tillstånd finns i gruppen S4. Algoritmen för att hitta ekvivalenta tillstånd är därmed klar. Från varje grupp räcker det att vi väljer ett tillstånd. De övriga tar vi bort, och alla övergångar som ledde till de borttagna tillstånden leder i stället till det enda tillstånd som vi valde.
Vi kan alltså välja att vår nya automat får tillstånden q3, q6, q0, q1, q4, och tillstånden q2 och q5 tar vi bort. Alla övergångar som ledde till q2 leder nu till q1, och alla övergångar som ledde till q5 leder till q4:
Så minimerar du en automat
- Vi tar bort onåbara tillstånd,
- vi tar bort överflödiga tillstånd,
- vi tar bort ekvivalenta tillstånd.
Källor
Kapitel: Onåbara tillstånd, Överflödiga tillstånd, Minimering av automater