1.3 Une hiérarchie de langages et d’accepteurs
1.3.4 Automates à pile
Au niveau suivant de la hiérarchie de Chomsky se trouvent les langages
hors-contexte. Cette famille est aussi caractérisée par la classe bien connue des
au-tomates à pile, qui en plus de leur contrôle fini utilisent une mémoire auxiliaire
organisée comme une pile. À chaque transition, ils peuvent consulter le symbole
de sommet de pile, et soit le défausser soit le remplacer par d’autres symboles.
Comme nous l’avons fait pour les machines linéairement bornées, nous présentons
les automates à pile comme une restriction syntaxique des machines de Turing.
La pile sera représentée par le contenu de la bande de travail, avec la convention
que les cellules les plus à gauche représentent les éléments les plus haut dans la
pile.
Définition 1.13. Un automate à pile est une machine de Turing P = (Σ,Γ,[,],
Q,q
0,F,δ)ne possédant aucune règle de type (1.1) (cf. définition 1.6).
Cette restriction assure que la tête de lecture d’un automate à pile ne se
déplace jamais le long de la bande, et fait toujours face au second symbole en
partant de la gauche (le premier étant le délimiteur gauche). Toutes les
configu-rations accessibles par P depuis la configuration initiale [q
0] sont en effet de la
forme [qs], où q ∈ Q et s ∈ Γ
∗, que nous abrégeons en qs. Lorsque l’on travaille
avec des automates à pile, la bande et son contenu sont appelés la pile. Les règles
Une hiérarchie de langages et d’accepteurs 25
d’insertion sont vues comme l’addition d’un nouveau symbole en sommet de pile
(empilage), opération habituellement appelée push, et les règles de suppression
comme le fait de retirer un symbole en sommet de pile (opération de dépilage ou
pop). Les règles de réécriture de la cellule courante sont équivalentes à un pop
suivi d’unpush.
Exemple 1.14. L’automate à pile sur l’alphabet d’entrée {a,b}, l’alphabet de
pile {a} et les états de contrôle {q
0,q
1,q
2}, avec q
0initial et q
2final, et dont les
transitions sont
q
0]−→
aq
0a] q
0a−→
bq
1q
1]−→
εq
2]
q
0a−→
aq
0aa q
1a−→
bq
1accepte le langage hors-contexte{a
nb
n|n ≥1}. Cet automate à pile est
détermi-niste car aucun couple de règles ne peut s’appliquer depuis la même configuration.
Son unique exécution sur le mot d’entréea
nb
nest acceptante, c’est la séquence
[q
0]−→
a[q
0a]−→
a[q
0aa]−→
a. . .
. . .−→
a[q
0a
n]−→
b[q
1a
n−1]−→
b[q
1a
n−2]−→
b. . .
. . .−→
b[q
1]−→
ε[q
2].
Dans certaines définitions des automates à pile, des règles générales de la forme
pA−→
aqW avecW ∈Γ
∗sont autorisées. De telles règles permettent, en une seule
étape, de dépiler le symbole de sommet de pile A et d’empiler successivement
toutes les lettres deW en commençant par la dernière (de sorte que la première
lettre de W devient le nouveau sommet de pile). Il est aussi parfois requis que
seules les configurations où la pile est vide soient acceptantes.
Ces différences de définition ne changent en fait pas l’expressivité du modèle,
et de simples constructions permettent de simuler ces différents formalismes à
l’aide de celui que nous avons présenté, moyennant éventuellement une
augmen-tation de la taille de l’alphabet de pile. A la différence des langages contextuels,
les langages hors-contexte ne sont clos ni par complémentaire ni par intersection,
et contrairement aux machines de Turing les automates à pile ne peuvent pas
tou-jours être déterminisés : il existe des langages hors-contexte qui ne sont acceptés
que par des automates à pile non déterministes.
Les langages hors-contexte sont strictement inclus dans les langages
contex-tuels. Par exemple, les langages{a
nb
nc
n|n ∈N}ou le langage{(a
nb
n)
+|n ≥1}
de l’exemple 1.9 sont contextuels mais pas hors-contexte.
Automates à pile d’ordre supérieur
Entre la classe des langages hors-contexte et celle des langages contextuels a
été définie une hiérarchie stricte de langages appelée hiérarchie OI [Dam82]. Ils
sont caractérisés comme les langages acceptés par des automates à pile d’ordre
supérieur. En plus de manipuler les symboles de piles eux-mêmes, ces automates
sont capables de dupliquer ou de détruire des piles entières de symboles, des piles
de piles, et ainsi de suite. Avant de présenter la définition formelle des automates à
pile d’ordre supérieur, nous définissons les piles d’ordre supérieur et les opérations
associées.
Unepile de niveau 1 sur l’alphabetΓest un motw∈Γ
∗, noté[w]. La pile vide
de niveau 1 est notée[ ]. Pour n≥2, unepile de niveau n surΓest une séquence
non vide [s
1. . . s
k]de piles de niveaun−1. L’ensemble des piles de niveaun ≥1
est noté S
n, et le niveau d’une pile s donnée l(s). Les opérations suivantes sont
définies sur les piles de niveau 1 :
push
a1([a
1. . . a
l]) = [aa
1a
2. . . a
l] pour touta ∈Γ,
pop
1([a
1. . . a
l]) = [a
2. . . a
l] pourl ≥1,
Les opérations suivantes sont définies sur les piles de niveau n >1:
push
a1([s
1. . . s
l]) = [push
a1(s
1). . . s
l] pour touta ∈Γ,
push
k([s
1. . . s
l]) = [push
k(s
1). . . s
l] pourk ∈[2,n[,
push
n([s
1. . . s
l]) = [s
1s
1. . . s
l]
pop
k([s
1. . . s
l]) = [pop
k(s
1). . . s
l] pourk ∈[1,n[,
pop
n([s
1. . . s
l]) = [s
2. . . s
l] pourl > 1, sinon non défini.
Nous définissons aussi une fonction top permettant d’inspecter le symbole de
sommet de la pile de niveau 1 la plus haute. On a top
1([a
1. . . a
l]) = a
1pour
[a
1. . . a
l]∈ S
1, top
1([ ]) = ε et top([s
1. . . s
l]) = top(s
1) pour [s
1. . . s
l] de niveau
supérieur à 1. On noteO
nl’ensemble des opérations définies sur les piles de niveau
n· On dit qu’une opération o est de niveau n, et on note l(o) =n, sio estpush
nou pop
n, ou push
a1,pop
1si n = 1. On peut à présent définir les automates à pile
de niveau supérieur.
Définition 1.15. Un automate à pile de niveau n est un octuplet P = (Σ,Γ,
[,],Q,q
0,F,δ), où Σ et Γ sont l’alphabet d’entrée et l’alphabet de pile, [ et ] 6∈ Γ
sont des délimiteurs de pile,Qest un ensemble fini d’états de contrôle,q
0∈Qest
l’unique état initial, F ⊆ Q est un ensemble d’états finaux et δ est un ensemble
fini de règles de transition de la forme pA −→
lqo avec p,q ∈ Q, A ∈ Γ∪ {ε},
o∈O
net l∈Σ∪ {ε}.
Le niveau d’une règle de transition pA−→
lqoest simplement l(o). Les
confi-gurations d’un automate à pileP de niveaunsont des couples(q,s), oùq ∈Qets
est une pile de niveaunsurΓ. Les règles de transition deP induisent une relation
de transition étiquetée (−→
lUne hiérarchie de langages et d’accepteurs 27
(p,s)−→
lP
(q,s
′) si et seulement si top(s) = A, P possède une règle pA −→
lqo et
s
′=o(s). Les calculs, le déterminisme et la notion de langage accepté sont définis
comme d’habitude.
Exemple 1.16. L’automate à pile de niveau 2 sur l’alphabet d’entrée {a,b,c} et
l’alphabet de pile {a}, d’états de contrôle {q
0,q
1,q
2,q
3} avec q
0initial et q
3final
et dont les transitions sont
q
0ε−→
aq
0push
a1q
1a−→
bq
1pop
1q
2a−→
cq
2pop
1q
0a−→
aq
0push
a1q
1ε−→
εq
2pop
2q
2ε−→
εq
3push
2q
0a−→
εq
1push
2accepte le langage {a
nb
nc
n| n ≥ 1}. Son unique exécution sur le mot d’entrée
a
nb
nc
nest la séquence
(q
0,[[ ]]) −→
a(q
0,[[a]])−→
a(q
0,[[aa]])−→
a. . .
. . .−→
a(q
0,[[a
n]])−→
ε(q
1,[[a
n][a
n]])−→
b(q
1,[[a
n−1][a
n]])−→
b. . .
. . .−→
b(q
1,[[ ][a
n]])−→
ε(q
2,[[a
n]])−→
c(q
2,[[a
n−1]])−→
c. . .
. . .−→
c(q
2,[[a]])−→
c(q
2,[[ ]])−→
ε(q
3,[[ ][ ]]).
Les automates de niveau 1 sont bien sûr identiques aux automates à pile
classiques, et acceptent les langages hors-contexte. Les langages acceptés à chaque
niveau forment une hiérarchie stricte et infinie, mais sont tous contextuels. Les
langages {ww | w ∈ Σ
∗} et {a
nb
nc
n} sont des exemples de langages non
hors-contexte acceptés par des automates de niveau 2. Pour plus de détails sur ces
automates et cette hiérarchie de langages, voir par exemple [Dam82, Eng83].
Dans le document
Graphes infinis de présentation finie
(Page 35-38)