Automates Finis

Le concept d’automate fini est très bien expliqué par Wikipedia ici, et aussi par les articles beaucoup plus formelles ici et ici. Je reprends ce dernier, en changeant un peu par rapport aux définitions pour la généraliser :

  • Les automates finis sont des “machines abstraites” que savent
    reconnaître l’appartenance ou la non-appartenance d’un état  à un
    ensemble d’états données.

Ces machines abstraites constituent un modèle théorique de référence

  • Dans la pratique, nombreuses sont les applications qui implémentent
    la notion d’automates finis ou ses variantes (cela va du
    compilateur … à la machine à café)
  • Un automate “connait” son état initial
  • Il part de celui-là et chaque “transition” (par exemple à travers des interactions avec l’utilisateur), il change d’état. Jusqu’à, la fin de ce processus, ou il est arrivé (peut-être) dans un état final.

Nous utilisons souvent dans la programmation des automates fini pour représenter des états d’un objet, d’un personnage, du jeu lui-même et de toutes les transitions qui permettent de passer d’un état à l’autre.
Dans ces diagrammes, le boules (nœuds) représentent des états, et les flèches des transitions. Tout autres éléments servent d’explication ou font fonction de commentaires. Une colorisation des nœuds différente des autres pourrais signifier que cette situation est plus compliqué et qu’il nécessite d’une analyse plus détaillée.
Par exemple, un jeu simple jeu vidéo pourrait être représenté par l’automate fini qui suit.

Le déroulement du jeu suivrait:

 

Les automates montrées ici ont été faits à l’aide de yEd, un logiciel libre très performant, très facile à prendre en main et vivement conseillé pour toutes taches de ce type.