Automates

TBD https://www.youtube.com/watch?v=DiXMoBMWMmA TBD https://www.youtube.com/watch?v=5vbk0TwkokM

Une classe de langages particulier, décidables, sont très utiles, c'est ceux que l'on peut créer avec un automate (fini) :

Définition

Un automate est un décideur admettant comme entrée les mots d'un alphabet $\mathcal{A}$.

Il est défini grace à une fonction de transition $f: \mathcal{A} \times Q \rightarrow Q$, où $Q$ est un ensemble fini d'états et deux paramètres :

  • $q_0 \in Q$ l'état initial
  • $F \subseteq Q$ les états d'acceptation

Son algorithme est entièrement défini par eux :

# avec f, q0 et F définis

def automate(m):
    q= q0
    for a in m:
        q = f(a, q)

    return q in F 

Un automate est une version simplifiée d'une machine de Turing (donc d'un algorithme), il n'y a pas de possibilité de stocker des variables, et sa forme est déterminée exclusivement par sa fonction de transition. On a alors coutume de représenter les automates par un diagramme :

TBD exemple. avec départ et arrivées. TBD cours https://pageperso.lis-lab.fr/arnaud.labourel/AUTO/cours7.pdf

Les langages reconnaissables par un automates sont strictement inclus dans les langages décidables :

Définition

Un langage est dit rationnel s'il existe un automate pour le reconnaître.

De nombreux langages sont rationnels :

tbd rationnels

tbd pas tout : palindrome marche pas. On est que à un endroit de la chaine alors que palindrome demaine d'être à deux endroit à la fois (début et fin).

exercices classiques

c'est une expression régulière. def, ref et conversion des exercices en expressions

dire que c'est super utile pour rechercher des motifs dans un texte (numéro de tel, un réel, etc)

imlémentation d'un moteur d'expression reg compliqué. On va s'intéresser à un cas particulier. retrouver un sous-mot dans une chaine

Autres Automate

non déterministe = déterministe. Important car expression reg .*ab.* par exemple est très facile à écrire en non déterministe.

on peu ajouter du stockage automate à pile, mais toujours pas tout. expression reg avec des $1

https://www-igm.univ-mlv.fr/~desar/Cours/automates/ch1.pdf

TBD (on appelle cela des expression régulières)

La formalisation et l'étude des expressions régulières dépassent le cadre de ce cours introductif mais c'est un sujet à la fois marrant, utile et intéressant. Si vous voulez vous initier en douceur, lisez le tuto python qui y est consacré, ou passez directement à O'reilly.

TBD

Pour aller plus loin : grammaires, parseur de langages et automates à pile