Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

CH 4 - Automates À Pile

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 16

Théorie des langages et des

automates

Olfa MOUELHI
olfa.mouelhi@esprit.tn

Année Universitaire 2013 / 2014


Plan

 Généralités.
 Définition.
 Exemple introductif
 Transitions dans un PDA
 Configurations
 Langage reconnu par un PDA

© Olfa MOUELHI 2
Automate à pile

 L’approche pour analyser la syntaxe du code source d’un programme est de scanner le
programme de gauche à droite, en cherchant une dérivation qui génère ce programme.

 Le modèle de base d’un programme qui fait une telle analyse est un automate à pile.

 C’est une généralisation de la notion d’automate fini à des grammaires hors-contexte.

 Comme expliqué auparavant, les automates finis peuvent analyser seulement la syntaxe
d’une grammaire régulière.

 Pour analyser la syntaxe d’une grammaire hors-contexte, nous ajoutons une pile à un
automate fini pour obtenir un modèle de programmes plus puissant connu sous le nom de
“automate à pile”.

© Olfa MOUELHI 3
Limite des automates finis

 Nous avons vu qu’un automate fini est un modèle de programme avec un nombre fini
d’états.

 Par conséquent, il a nombre fini d’actions ou transitions qu’il peut effectuer.

 Comme il a un nombre fini d’états et de transitions, il est très simple à programmer et même
à visualiser graphiquement.

© Olfa MOUELHI 4
Automate à pile
 Un automate à pile ressemble à un automate fini. Il a :

 Une mémoire de lecture et un pointeur vers le prochain symbole à lire;


 un nombre fini d’états, y compris un état initial et des états accepteurs;
 une relation de transition.

 La différence est qu’un automate à pile a en plus une pile, initialement vide, mais
pouvant croître arbitrairement.

 Le contenu de la pile fait partie de l’état d’un automate.

 Donc un automate à pile a potentiellement un nombre infini d’états.

© Olfa MOUELHI 5
Automate à pile
 Un automate à pile a :

 Une entrée et une tête de lecture.


 Un nombre fini d’états dont un état initial et des états accepteurs.
 Une relation de transition.
 Une pile pouvant croître arbitrairement.

$ entrée

Automate à pile

$
pile

© Olfa MOUELHI 6
Automate à pile

 L’entrée est une chaîne de tokens scanné à partir du code source du programme à
analyser.
 La pile contient une chaîne de symbole de la grammaire (terminaux et non-terminaux)
 Les transitions indiquent comment mettre à jour le contenu de la pile en fonction du token
courant.

$ entrée

1
Automate à pile
3

2 4

$
pile

© Olfa MOUELHI 7
Automate à pile : définition
formelle
Un automate à piles A =  E, , Π, , e0, z0, F 
 E : un ensemble fini d’états.
  un ensemble de symboles (l’alphabet des symboles d’entrée).
 Π est un alphabet fini dit l’alphabet de la pile.
  : Π*  E  (  {ε})  P (Π*  E), une fonction finie.
 Un état e0  E : état de départ ou état initial.
 z0 est le symbole initial de la pile.
 Un ensemble d’états F  E connus comme états d’acceptation

© Olfa MOUELHI 8
Exemple introductif

considérons l’automate fini A de la Figure suivante, qui reconnaît le langage {anbm,


avec n > 0 et m > 0} et essayons d’étendre ce modèle pour en dériver un automate à
pile capable de reconnaître {anbm, m = n > 0}.
a b
L’automate A est incapable de “compter”
a b le nombre de a déjà vus, ce qui interdit
0 1 2 d’imposer la contrainte n = m.

Confions alors cette tâche au mécanisme de pile, en empilant un symbole Z lors de


chaque passage dans la boucle de l’état 1 et en dépilant un symbole lors de chaque
passage dans la boucle de l’état 2. Si l’on impose, de plus, qu’un calcul réussi dans A
doit correspondre à une pile intégralement vide, alors il apparaît que chaque mot
reconnu par l’automate fini A augmenté de la pile est bien tel que le nombre de a est
exactement égal au nombre de b.

© Olfa MOUELHI 9
Exemple introductif

input state stack


aaabbb 0 ε
a b
aabbb 1 ε
abbb 1 Z
a b
0 1 2 bb 2 ZZ
b 2 Z
2 ε

© Olfa MOUELHI 10
Transitions
 Une transition de la forme (p, u, b)(q, g)signifie que l’automate peut passer de l’état p
à l’état q, pourvu que la chaîne d’entrée commence par le préfixe u et la chaîne b est au
sommet de la pile.
 Après la transition, u est lu et consommé du mot d’entrée, b est enlevé de la pile et
remplacé par g,et le nouvel état devient q.
 La chaîne b est lue de gauche à droite : son premier caractère doit donc être au
sommet de la pile.
 La chaîne g est écrite de telle façon que son premier caractère soit au sommet de la
pile. u u
$ entrée $ entrée

p q p q

$ $
pile pile
b g
© Olfa MOUELHI 11
Configurations
 La configuration d’un automate est défini comme suit: (u,q,x,g)
u: mot lu,
q: état courant,
x: le reste à lire,
 g:contenu de la pile.

 L’exécution d’un automate sur une entrée est la séquence de


configurations qu’il produit en lisant son entrée et en suivant ses
transitions.

© Olfa MOUELHI 12
Automates à pile et automates traditionnels

De manière sous-jacente, un automate à pile est essentiellement un automate fini non-


déterministe, à la différence près que la fonction de transition comporte trois
arguments : l’état courant, le symbole d’entrée courant et le symbole courant en haut
de la pile.

Si (Z, e) est un élément de (Y, q, a), alors l’utilisation de cette transition conduira à :
 Dépiler Y ; si Y = ε la transition a lieu indépendamment du symbole en haut de
pile, qui reste inchangée.
 Transiter dans l’état r.
 Empiler Z; si Z = ε, aucun symbole n’est empilé.

© Olfa MOUELHI 13
Automates à pile et automates traditionnels

Compte-tenu de cette définition, un automate fini “traditionnel” est un automate à pile


particulier, défini sur un alphabet de pile vide (Π = ∅) et dont toutes les transitions
laissent la pile inchangée.

Un automate à pile admet une représentation graphique sur laquelle les modifications
de la pile sont représentées sous la forme Y/Z. La Figure suivante représente ainsi un
automate à pile reconnaissant le langage {anbn}.

a ε/Z b Z/ε

a ε/ε b ε/ε
0 1 2

© Olfa MOUELHI 14
Langage reconnu par un PDA
 Le langage L(A) ⊆ * reconnu par A, par état final est défini par : u ∈ L(A) si et
seulement si il existe  ∈ Π* et s ∈ F tels que :
(ε ,q0, w, Z0) *
A (w ,qf, ε, Z0 )

 Le langage Lε(A) ⊆ * reconnu par A, par pile vide est défini par : u ∈ Lε(A) si et
seulement si il existe q ∈ E :
(ε ,q0, w, Z0) A* (w, q, ε, ε)

 Pour tout PDA A, il existe un PDA A’ tel que L(A) = Lε(A’)

© Olfa MOUELHI 15
Au delà des langages hors-
contexte
 Bien qu’un automate à pile peut avoir un nombre infini d’états (configurations), il
existe des langages qui ne sont pas acceptés par un automate à pile, c-à-d., des
langages qui ne sont pas hors-contextes.

 Exemple:

L(M) = {an bn cn | n ≥0}

n’est pas hors-contexte.

 Toutefois, il existe des modèles théoriques de programmes qui accepte un tel


langage. En particulier, les machines de Turing sont des généralisations des
automates à piles, pouvant accepter n’importe quel langage.

© Olfa MOUELHI 16

Vous aimerez peut-être aussi