TD Compilation Les automates finis

publicité
TD Compilation
Les automates finis
Eric Ramat
[email protected]
8 mai 2014
Durée : 4 heures
1
Travail
Exercice 1.
Construire un Automate Fini Non déterministe (AFN) pour chacun des langages suivants :
— L1 = a∗ b∗ (ab)∗
— L2 = (ab)∗ c∗
— L3 = (a + b)∗ (b + c)∗
Dans cette première série, nous ne cherchons pas l’automate déterministe.
Exercice 2.
Trouver une expression régulière et construire un AFN caractérisant les langages suivants.
— L1 = {(ab)n abm /n, m >= 0}
— L2 = {w ∈ {a, b}∗ / la longueur de w est paire }
— L3 = {w ∈ {a, b}∗ / le nombre d’occurrences de a dans w = le nombre d’occurrences de b dans
w}
Est-ce toujours possible ?
Exercice 3.
Construire un Automate Fini Déterministe (AFD) pour chacun des langages suivants :
— L1 = a∗ b∗ (ab)∗
— L2 = (ab)∗ ab∗
— L3 = (a + b)∗ (b + c)∗
On ne cherchera pas pour l’instant à réduire l’automate.
Exercice 4.
Pour chacun des langages suivants :
— L1 = (a + b)∗ a
— L2 = (a + b)∗ a(a + b)
— L3 = (a + b)∗ a(a + b)(a + b)
1
Répondre aux questions suivantes :
1. construire un AFN reconnaissant le langage
2. simuler l’algorithme qui détermine si le mot x = abab est reconnu par cet automate (construction
de l’ensemble des états accessibles)
3. construire l’AFD correspondant (par l’algorithme de construction des sous-ensembles)
4. Simuler l’algorithme qui détermine si le mot x = abab est reconnu par cet automate
Que peut-on dire du nombre d’états d’un AFN et d’un AFD reconnaissant Ln = (a + b)∗ a(a + b)n−1 ?
Exercice 5.
Construire les AFD minimaux reconnaissant :
— L1 = (( + b)b∗ )∗
— L2 = a∗ b∗ c∗
— L3 = (a3 + a5 )∗
Exercice 6.
Considérons l’automate suivant :
a
start
q0
q1
a
b
b
q2
b
a
a
q3
b
a
b
q4
1. minimiser cet automate
2. donner une expression régulière caractérisant le langage reconnu par cet automate
3. minimiser l’automate initial en considérant que q0 est le seul état d’acceptation
4. même question en considérant q3 est le seul état d’acceptation
2
Téléchargement