cours/automate-pile.md
oscar.plaisant@icloud.com 38fbb1938d from github to this gitea
2023-10-23 23:09:51 +02:00

2.7 KiB

alias
alias
automate à pile
pushdown automata

up::automate link:: wikipedia #informatique


Motivation

On veut reconnaitre un langage sur \Sigma Ce langage peut être relativement expressif, typiquement autant qu'un langage de programmation (voir grammaire-algebrique)

Définition

Même base qu'un automate-fini, mais on rajoute une string-stack

Plus précisémment: A=(Q, \Sigma, \Gamma, q_0, F, \gamma_0, \delta) Avec

  • Q les états de l'automate
  • \Sigma l'alphabet d'entrée
  • \Gamma l'alphabet de pile
  • q_0 l'état initiale
  • F l'ensemble des états finaux
  • \gamma_0 le symbole de pile initial
  • \delta: Q\times (\Sigma \cup \varepsilon) \times \Gamma \to Q \times \Gamma^* la fonction de transition

[!NOTE] Pile Il faut se rappeler que par convention, on empile et dépile par la gauche

Transition

Une configuration pour l'automate est un triplet (q, m, \alpha) avec

  • q l'état courant
  • m le mot qui reste à lire
  • \alpha le mot qui constitue la pile

On définit la relation binaire \vdash , c'est elle qui spécifie le fonctionnement de l'automate

\vdash est vérifiée pour les couples de configuration sous une des deux formes:

  1. (q, aM, zL) \vdash (q', M, VL)
  2. (q, M, zL) \vdash (q', M, VL)

Avec

  • q, q' \in Q
  • M \in \Sigma^* et a \in \Sigma
  • L \in \Gamma^*, V \in \Gamma^*, z \in \Gamma
  • (q', V) \in \delta(q, a, z)

(on a mis les mots en majuscule pour les distinguer des lettres)

Lors de la transition 1):

  • on a lu la lettre a
  • on a changé d'état q \to q'
  • on a dépilé z et empilé le mot V
  • le tout était autorisé par \delta

Lors de la transition 2), on a fait la même chose sans lire aucune lettre: on parle de transition \epsilon ou transition instantanée

On dit qu'une configuration découle d'une autre quand il existe une suite de transitions qui passe d'une configuration à l'autre On note c_1 \vdash^* c_2

[!WARNING] Unicité Pour une configuration donnée, il peut souvent en découler plusieurs (\delta peut donner plusieurs possibilités. Il faut voir l'ensemble des transitions possibles comme un arbre de racine (q_0, u, \gamma_0) On parle d'automate déterministe quand cet arbre est toujours dégénéré (linéaire)

Reconaissance

On a deux modes de reconnaissance:

  • par pile vide
  • par état final

Pile vide

le mot u est reconnu quand (q_0, u, \gamma_0) \vdash (q', \epsilon, \epsilon)

État final

le mot u est reconnu quand Quand (q_0, u, \gamma_0) \vdash (q', \epsilon, \gamma) avec q \in F

Automate à deux piles

Si on lui donne deux piles, un automate devient capable de simuler une machine-turing