Languages Formels
TP6: Automates à piles
Exercice 1 (Exemples d'automates à pile)
1. Construire un automate à pile reconnaissant le langage
L1 = { aibjck | i + j = k }
2. Construire un automate à pile reconnaissant le langage
L2 = { aibjck | i + k = j }
3. Construire un automate à pile reconnaissant le langage
des palindromes { u ∈ { a, b }* | ũ = u }
Où ũ est l'image mirroir de u.
Exercice 2 (Variantes d'automates à pile)
Un automate à pile à double sens peut, à chaque transition, déplacer sa tête de lecture vers la gauche ou vers la droite ou encore la laisser sur place. De plus, on supposera que la donnée w est encadrée par 2 symboles spéciaux (marqueurs) ⊲ et ⊳.
Le mot w est donc accepté par l'automate s'il y a un calcul réussi sur
⊲ w ⊳.
De façon équivalente, un automate à pile à double sens est une machine de Turing qui ne peut pas modifier sa bande d'entrée et qui a une seule bande de travail qui est utilisée comme une pile.
a) Montrer que le langage {anbncn | n ≥ 1} peut être accepté par un automate à pile déterministe à double sens.
b) Montrer que le langage {ww|w ∈ {a,b}*} peut être accepté par un automate à pile
à double sens.
c) Montrer que le langage {vcuvw | u, v, w ∈ {a,b}* } peut être accepté par un automate à pile
à double sens.
Exercice 3 (Déterministes et non ambigus)
1. Montrer que tout langage reconnu par un automate à pile déterministe est non ambigu
2. Montrer que l'inclusion est stricte en considérant le langage
L = {anbn |n ≥ 1} ∪ {anb2n | n ≥ 1}.
Exercice 4
Construire un automate à pile acceptant par état final reconnaissant le langage
B = { bin(i)$mir(bin(i+1)) | i ≥ 0 } de {0, 1, $}*
Où bin(i) ∈ {0,1}* est la représentation en binaire (sans 0 additionnel à gauche) du nombre i, par exemple bin(11)=1011, et où mir(w) est le mot mirroir de w,
par exemple mir(bin(12))= 0011.