Automate à piles emboîtées
# Automate à piles emboîtées

En théorie des automates, un automate à piles emboîtées est un automate fini qui utilise comme mémoire auxiliaire une pile dont les éléments peuvent eux-mêmes être des piles. Mais contrairement à un automate à pile usuel, un automate à piles emboîtées peut se déplacer en avant et en arrière sur la « pile », qui est donc plutôt structurée en liste ; de plus, l'automate peut insérer une nouvelle pile, opérer sur elle, la détruire, et continuer à travailler sur l'ancienne pile. Ce mode opératoire peut être emboîté récursivement à une profondeur arbitraire ; toutefois, l'automate manipule toujours la pile la plus interne.

Un automate à piles emboîtées est capable de reconnaître un langage indexé, et de fait les langages indexés sont exactement les langages reconnus par les automates à piles emboîtées non $déterministes^,^,.$

Les automates à piles emboîtées diffèrent des automates à piles embarquées qui sont moins puissants puisque pour ces derniers, la mémoire auxiliaire, toujours organisée récursivement, n'est accessible que par le haut de pile. Les automates à pile embarquée reconnaissent exactement les langages engendrés par les grammaires d'arbres adjoints.

## Description informelle

Un automate à piles emboîtées lit ses données sur une bande d'entrée ; le mot d'entrée n'est pas modifiable, il est délimité par deux marqueurs, et dans le cas bidirectionnel, la tête de lecture peut se déplacer sur la bande d'entrée en avant et en arrière ; pour des automates emboîtés unidirectionnels, la tête de lecture du mot d'entrée ne peut pas revenir en arrière.

L'automate est composé d'ensembles

* $Q,\Sigma$, et $\Gamma$ qui sont des ensembles finis respectivement d'états, de symboles d'entrée et de symboles de pile ;
* de marqueurs, notés $\$$, ${\text{¢}}$, et $\#$ ; ce sont des symboles additionnels, utilisés comme marqueurs de début ou de fin de mots de pile;
* d'un ensemble de règles de transition qui permettent des déplacements de la tête de lecture sur la bande d'entrée, et de la tête de lecture et écriture sur la pile.

La mémoire auxiliaire, appelée pile (« stack ») est en fait une structure linéaire où la tête de pile peut se déplacer dans les deux sens. La pile est un codage d'une structure arborescente : ses éléments sont soit des symboles de l'alphabet de pile $\Gamma$, soit des piles elles-mêmes, représentées linéairement à l'aide de marqueurs de début et fin de pile. Les sous-piles peuvent elles-mêmes contenir des piles. Une pile peut se présenter typiquement sous la forme linéaire suivante :

    $\$\,a\,b\,\$\,k\,{\text{¢}}\,{\underline {\$\,p}}{\text{¢}}\,{\text{¢}}\,c\,{\text{¢}}\#$

Si, pour plus de lisibilité, on remplace les marqueurs $\$$, ${\text{¢}}$ par des parenthèses ouvrante et fermante et qu'on omet marqueur $\#$, on obtient l'écriture :

    $\,(\,a\,b\,(\,k\,)\,{\underline {(\,p}}\,)\,c\,)$

La pile contient les éléments $a,b$ de l’alphabet de pile, puis une sous-pile réduite à l'élément $k$ suivie d'une deuxième sous-pile composée de $p$ et enfin la lettre $c$. La tête de lecture-écriture est positionnée en début de la sous-pile $(p)$, ce qui est représenté par un soulignement.

## Exemple

Voici une séquence d'opérations et leur effet sur la pile. À l'étape 2, une pile est créée à l'intérieur de la sous-pile $(p)$ ; cette sous-sous-pile est $(rs)$. Elle est ensuite progressivement vidée, puis détruite à l’étape 5. À l'étape 8, la tête d'écriture sur la pile se retrouve au niveau du début et une insertion simple ajoute les symboles $n,o$.

    n° action pile 1:  $\,(\,a\,b\,(\,k\,)\,{\underline {(\,p}}\,)\,c\,)$ 2: création de sous-pile    $\,(\,a\,b\,(\,k\,)\,(\,p\,{\underline {(\,r}}\,s\,)\,)\,c)$ 3: pop $(\,a\,b\,(\,k\,)\,(\,p\,{\underline {(\,s}}\,)\,)\,c\,)$ 4: pop $(\,a\,b\,(\,k\,)\,(\,p\,{\underline {}\,)\,)\,c)$ 5: destruction de sous-pile $(\,a\,b\,(\,k\,)\,(\,p\,{\underline}}\,c\,)$ 6: descente $(\,a\,b\,(\,k\,)\,(\,p\,)\,{\underline {c}}\,)$ 7: montée $(\,a\,b\,(\,k\,)\,(\,p\,{\underline}}\,c\,)$ 8: montée $\,(\,a\,b\,(\,k\,)\,{\underline {(\,p}}\,)\,c\,)$ 9: push $\,(\,a\,b\,(\,k\,)\,{\underline {(\,n}}\,o\,p\,)\,c\,)$

La description formelle des règles de transition est complexe, puisqu'elle doit tenir compte des symboles de pile et de la structure arborescente de la pile.

## Propriétés

On peut définir des automates bidirectionnels à piles emboîtées, et on peut montrer que cela n'augmente pas la puissance de calcul par rapport aux automates à pile bidirectionnels ordinaires.

Robert Gilman et Michael Shapiro ont utilisé des automates à piles emboîtées pour résoudre le problème du motdans certains groupes certain groups.

