Stap 1: Wat is een eindige-State Machine?
Een eindige toestandsmachine of FSM voor korte, is een machine (op een abstracte manier), die een bepaalde en eindige aantal mogelijke heeft staat van die slechts één actieve tegelijk. De Staten zijn aangesloten via overgangen. Deze overgangen hebben een bepaalde richting en kunnen alleen worden doorgegeven in die richting – denk aan het als een one-way street. Een overgang heeft bovendien bepaalde ingangen en uitgangen. U kunt denk van deze als een aandoening die je vervullen moet voordat u het eenrichtingsverkeer kunt gebruiken, en wanneer u het gebruikt, een signaal wordt gegeven aan de buitenwereld-bijvoorbeeld, hebt u een vergoeding te betalen voordat u de straat gebruiken kunt en vervolgens uw auto wordt geteld.
Een heel eenvoudig voorbeeld van een FSM komt voor in veel huizen: drukken op een knop activeert het licht in het trappenhuis. Na een bepaalde tijd schakelt het licht automatisch uit. U kan dit model als een FSM met twee staten: licht aan, en licht uit. Er is een overgang van de ene staat naar de andere en vice versa, en de voorwaarde is dat de druk op de knop in één richting en die een bepaalde tijd verstreken is in de andere richting. We kunnen dit gedrag in een diagram, de zogenaamde toestandsdiagram model. Neem een kijkje op foto 1.
De gevulde zwarte cirkel markeert het ingangspunt van de toestandsmachine (alles moet ergens beginnen). Dus, als onze machine begint te lopen, het licht is weg. Het blijft als dat, totdat we gebruiken dan een lichtschakelaar – het licht gaat op en gaat uit na 30 seconden. Door de knop te drukken wanneer het lampje al doet niets brandt, en na 30 seconden gaat het lampje uitgaat. Deze FSM beschikt niet over alle uitgangen. Vanuit een traditionele wiskundige perspectief, de Braziliaanse Light On komt overeen met het licht wordt ingeschakeld, maar wanneer we echt beginnen te programmeren van ons systeem, natuurlijk zullen wij moeten toevoegen een soort uitvoer die eigenlijk doet iets-zoals het inschakelen van het licht.
Deze machine staat werkt, maar is het een goed systeem? 30 seconden lang genoeg is? Voor de meeste mensen waarschijnlijk ja, maar de mensen op de 10e verdieping zou niet ons systeem. Ze wellicht langer dan 30 seconden, laten we zeggen moeten ze 40 seconden. Maar ze wachten op de 30 seconden moeten geschiedde en het licht uit te schakelen het licht opnieuw te activeren, en ze zou dan in het midden van een trap. Dus, wat we moeten doen is om de timer opnieuw worden ingesteld wanneer het lampje brandt en de toets opnieuw wordt ingedrukt. Daarvoor zullen we opnieuw onze systeem, model modelleren van het begin van de timer als uitgang van onze overgangen en het toevoegen van een andere overgang, zoals kan worden gezien in foto 2.
Hier ziet u twee dingen:
- It's perfectly okay voor een overgang naar de staat die het vandaan
- Een overgang kan een gebeurtenis als een voorwaarde voor die overgang gebeuren hebben evenals toegewezen uitgangen. De informatie die is overgelaten aan de slash is de gebeurtenis, de informatie aan de rechterkant is de output. Gebeurtenissen worden ook beschouwd als inputs voor de machine, en dit heet een Input-Output-automaat.