TillståndsmaskinEn tillståndsmaskin (eng State Machine eller Automaton) är en abstrakt modell som används till exempel inom mjukvaruutveckling, hårdvarudesign, beräkningsteori och språkvetenskap. Tillståndsmaskiner används för att beskriva skeenden i olika former med hjälp av tillstånd och villkor för övergång från ett tillstånd till ett annat. Vanligen anses tillståndsmaskin vara synonymt med ändlig tillståndsmaskin (eng Finite State Machine eller Finite Automaton) då en tillståndsmaskin måste ha ett ändligt antal tillstånd för att vara praktiskt användbar. Informell beskrivningEn tillståndsmaskin består av ett antal tillstånd och ett antal övergångar mellan dessa tillstånd. Ett exempel på en tillståndsmaskin kan vara en modell för en dörr: Modell för Dörr:
En tillståndsmaskin befinner sig alltid i ett tillstånd och om ett visst villkor uppfylls övergår tillståndsmaskinen till ett annat tillstånd. Om till exempel tillståndsmaskinen för Dörr befinner sig i tillståndet Stängd och villkoret för övergången Öppna inträffar (det vill säga, någon öppnar dörren) så övergår tillståndsmaskinens tillstånd till Öppen. Tillståndsmaskiner beskrivs ofta med blocksymboler som representerar tillstånd och pilar som representerar övergångar. Villkoret för övergång skrivs vid pilen: Låt oss anta att tillståndet Låst införs i modellen för dörr. Vilka nya övergångar kräver detta? Skall det till exempel finnas en övergång till Låst när dörren är i tillståndet Öppen. I en viss mening är det möjligt att låsa en öppen dörr, men funktionellt sett är det inte meningsfullt. Vi utökar dessutom tillståndsmaskinen med tillståndet Fel. Den valda tillståndsmaskinen kommer att stoppa i tillståndet Fel om man antingen försöker låsa eller låsa upp dörren när den är öppen, eller om man försöker öppna eller stänga dörren när den är låst. Det kanske finns ett bättre sätt att hantera felbeteenden på? Bilden ovan visar en tillståndsmaskin för Dörr som inte stoppar på grund av fel. En tillståndsmaskin som hanterar felbeteenden eller felaktig input utan att stoppa sägs vara robust. Modellen för Dörr ser nu ut så här:
Formell beskrivningEn Finit Tillståndsmaskin (eng Finite State Machine (FSM) eller Finite Automaton) är ett mångsidigt och allmänt använt verktyg för att modellera förlopp med hjälp av tillstånd, övergångar och händelser.
KlassificeringDet går att särskilja två grupper av finita tillståndsmaskiner: igenkänningsmaskiner och översättningsmaskiner. IgenkänningsmaskinerEn igenkänningsmaskin matas med ett indata i någon form och meddelar sedan omvärlden om detta indata var korrekt eller ej enligt något kriterium. En igenkänningsmaskin används till exempel till att kontrollera att en sats skriven i ett formellt språk (se formell grammatik) är korrekt och välformad. ÖversättningsmaskinerÖversättningsmaskiner används för att översätta ett indata från en symboluppsättning till en annan. Man kan särskilja två olika typer, Moore-maskiner och Mealy-maskiner. Moore-maskinerEn Moore-maskin använder endast ingångshändelser. Detta innebär att när en tillståndsförändring inträffar i en Moore-maskin så produceras också en del av resultatet av systemets arbete i samband med övergången. Vilket resultat som produceras beror endast av vilket tillstånd som övergången sker till.
Mealy-maskinerEn Mealy-maskin använder endast indatahändelser. Detta innebär att när en tillståndsförändring inträffar i en Mealy-maskin så produceras också en del av resultatet av systemets arbete i samband med övergången. Vilket resultat som produceras beror, i motsats till Moore-maskinen, på vilket indata som ger upphov till övergången i kombination med vilket tillstånd som övergången sker till.
I praktiken används ofta en mix av dessa två maskintyper för översättning. Deterministiska och icke-deterministiska finita tillståndsmaskinerMan skiljer även mellan deterministiska och icke-deterministiska tillståndsmaskiner.
Logiken för en finit tillståndsmaskinNästa tillstånd och nästa utdata för en finit tillståndsmaskin är en funktion av det aktuella indatat och det aktuella tillståndet. Matematisk modellDet finns ett flertal definitioner av finita tillståndsmaskiner beroende på vilken typ man talar om En igenkännarmaskin är en kvintupel (femställig symbolföljd) <Σ, S, s0, δ, F>, där:
Även om en igenkännarmaskin saknar formell utdatafunktion (se nedan), så finns den där implicit - en boolesk funktion som returnerar Sant eller Falskt beroende på om indatat accepterades eller ej. En översättarmaskin är en sextupel (sexställig symbolföljd) <Σ, Γ, S, s0, δ, ω>, där:
Om utdatafunktionen är en funktion av ett tillstånd och av indataalfabetet (ω: S x Σ → Γ) är maskinen en Mealy-maskin. Om utdatafunktionen enbart beror på ett tillstånd (ω: S → Γ) är maskinen en Moore-maskin. OptimeringAtt optimera en finit tillståndsmaskin innebär att man söker den maskin med minsta möjliga antal tillstånd som utför samma funktion. Detta kan utföras med så kallade färgläggningsalgoritmer. Källor
|