Développement des systèmes informatiques


Automates à états


Automates

Automates discrets

Automates à états finis

Équivalence d'états

Deux états sont équivalents si leurs sorties sont les mêmes et leurs états suivants sont équivalents.

Exemple :

NEXT A B C
1411
2311
3421
4321
OUT A B C
1000
2100
3000
4000

3 et 4 sont équivalents.

Exemple :

NEXT A B C
1123
2456
3789
4123
5456
6789
7123
8456
9789
OUT A B C
1000
2100
3000
4000
5000
6000
7000
8000
9000

états 1, 4, 7 sont équivalents

états 3, 6, 9 sont équivalents

états 5 et 8 sont équivalents

Exercice

Construisez l’accepteur de ABA ou BAB (il devra produire 1 chaque fois lorsque ABA est reconnu, 2 lorsque BAB est reconnu et rien dans les autres cas).

Description d’automates à états finis à l’aide de prédicats

NEXT: {((‘s, i), s’) |
    (i = A  s’ = 3) ∨
    ((((i = B)  (‘s ≠ 3)) ∨ (i = C))  (s’ = 1)) ∨
    ((i = B)  (‘s = 3)  (s’ = 2)) }
OUT: {(‘s, i), out) |
    (i = A  ‘s = 2  out = 1) ∨ (¬(i = A  ‘s = 2)  out = 0) }

Les prédicats peuvent être utilisés pour tester l’implémentation.

Modes

Exemple : table de transition de modes

Classe de mode : Fonctionnement

Modes dans la classe : Opération, Arrêt, Attente, Test

ModeÉvénement
OpérationxEnArrxEnTest
ArrêtEnOp1xEnAtt1EnTest
AttenteEnOp2xxEnTest
TestxxEnAtt2x
Action =OpérationArrêtAttenteTest

EnOp1 = @T(LimMinEau < LimiteEau < LimMaxEau) WHEN
 (Durée(EnMode(Arrêt)) < TempsVerrouillage) (TestBouton ≠ appuyé)

EnOp2 = @T(Durée(ResetBouton = appuyé) ≥ 3 s) WHEN
 (LimMinEau < LimiteEau < LimMaxEau)

EnArr = @F(DansLimites) WHEN (TestBouton ≠ appuyé)

EnAtt1 = @T(Durée(EnMode(Arrêt)) ≥ TempsVerrouillage) WHEN
 (TestBouton ≠ appuyé)

EnAtt2 = @T(Durée(EnMode(Test)) = 14 s)

EnTest = @T(Durée(TestBouton = appuyé) ≥ 500 ms)