• Aucun résultat trouvé

Automates à pile

Dans le document Graphes infinis de présentation finie (Page 35-38)

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

0

initial et q

2

final, et dont les

transitions sont

q

0

]−→

a

q

0

a] q

0

a−→

b

q

1

q

1

]−→

ε

q

2

]

q

0

a−→

a

q

0

aa q

1

a−→

b

q

1

accepte le langage hors-contexte{a

n

b

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

n

b

n

est acceptante, c’est la séquence

[q

0

]−→

a

[q

0

a]−→

a

[q

0

aa]−→

a

. . .

. . .−→

a

[q

0

a

n

]−→

b

[q

1

a

n−1

]−→

b

[q

1

a

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−→

a

qW 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

n

b

n

c

n

|n ∈N}ou le langage{(a

n

b

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

1

a

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

1

s

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

1

pour

[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

n

l’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

n

ou pop

n

, ou push

a1

,pop

1

si 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 −→

l

qo avec p,q ∈ Q, A ∈ Γ∪ {ε},

o∈O

n

et l∈Σ∪ {ε}.

Le niveau d’une règle de transition pA−→

l

qoest 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 (−→

l

Une hiérarchie de langages et d’accepteurs 27

(p,s)−→

l

P

(q,s

) si et seulement si top(s) = A, P possède une règle pA −→

l

qo 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

0

initial et q

3

final

et dont les transitions sont

q

0

ε−→

a

q

0

push

a1

q

1

a−→

b

q

1

pop

1

q

2

a−→

c

q

2

pop

1

q

0

a−→

a

q

0

push

a1

q

1

ε−→

ε

q

2

pop

2

q

2

ε−→

ε

q

3

push

2

q

0

a−→

ε

q

1

push

2

accepte le langage {a

n

b

n

c

n

| n ≥ 1}. Son unique exécution sur le mot d’entrée

a

n

b

n

c

n

est 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

n

b

n

c

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)