• Aucun résultat trouvé

Judicaël Courant 2 novembre 2016

N/A
N/A
Protected

Academic year: 2022

Partager "Judicaël Courant 2 novembre 2016"

Copied!
2
0
0

Texte intégral

(1)

Lycée La Martinière Monplaisir Option Informatique MP/MP*

Année 2016-2017 Option Informatique 2eannée

TP 3: Automates finis

Judicaël Courant 2 novembre 2016

Le but de ce problème est de construire des automates finis en Caml. On dit que deux automates sont équivalents s’ils reconnaissent le même langage. Le fichierautomates.mldéfinissant le type des automates est disponible sur le site.

On veut modéliser des automates sur l’alphabetchardes caractères Caml, ou sur un sous-ensemble du type char. L’ensemble des états d’un automate n’ayant aucune importance, on choisit de se restreindre au cas où cet ensemble est un ensemble d’entiers.

hautomates.mli≡

type automate = {

etats : int list ; (* ensemble des états *) q0 : int; (* état initial *)

finaux : int list; (* liste des états finaux *)

(* la fonction de transition est représentée par la liste des triplets (q, a, q’) tels que delta(q, a) = q’ : *)

transitions : (int * char * int) list;

};;

On introduit également une exception qui servira à modéliser le fait qu’un automate est bloqué : hautomates.mli+≡

exception Blocage;;

Dans ce qui suit, on supposera qu’il n’existe jamais, dans la liste des transitions, deux triplets (q, c, q0) et (q, c, q00) avecq6=q00. Autrement dit, pour tout choix deq etc, il existe au plus un q0 tel qu’on ait une transition de q vers q0 quand on lit la lettrec: on dit que l’automate est déterministe.

Q1 Construire un automate reconnaissant le langageL(a), oùadésigne le caractère ’a’.

Q2 Construire un automate reconnaissant le mot vide (et seulement le mot vide).

Q3 Construire un automate reconnaissant le langage vide.

Q4 Écrire une fonctionexecute : afd -> char list -> int. Appliquée à un automate d’état initial q0et un motu, cette fonction doit rendreq=q0·usi cet étatq est bien défini et lever l’exceptionBlocage sinon.

Q5 Écrire une fonctionreconnait : afd -> char list -> booltelle que l’exécution de l’expression (reconnait A [c0;. . .;cn−1]) retourne true si le motc0. . . cn−1 est reconnu par l’automateA et false sinon. Vous testerez votre fonction sur les automates écrits précédemment.

Judicaël Courant- 2 novembre 2016 1/2 Document sous licence Art Libre (http://artlibre.org)

(2)

Lycée La Martinière Monplaisir Option Informatique MP/MP*

Année 2016-2017 Option Informatique 2eannée

Q6 Écrire une fonctionest_complet : char list -> afd -> booltel que l’exécution de l’expression (est_complet[l0;. . .;ln−1]A) retournetrue ou falsesuivant que l’automate A, supposé travailler sur l’alphabet {l0, . . . , ln−1}(et nonchartout entier) est complet ou non, c’est-à-dire suivant que pour tout état q et toute lettre a,q·aest bien défini ou non.

Q7 Montrer que tout automate fini déterministe (Q, q0, F, δ) est équivalent à un automate fini détermi- niste (Q0, q0, F, δ0) bien choisi. On dit qu’on a obtenu ce deuxième automate en complétant le premier.

Q8 Écrire une fonctioncomplete : list -> afd -> afdtel que (complete[l0;. . .;ln−1]A) complète l’automate A, supposé travailler sur l’alphabet{l0, . . . , ln−1}.

Q9 Étant donné deux automates finis déterministesAi= (Qi, qi, Fi, δi), pouri= 1,2, on peut construire un automate, appelé automate produit de A1 etA2, défini parA1× A2= (Q1×Q2,(q1, q2), F1×F2, δ),δ est défini par δ((q, q0), a) = (δ(q, a), δ(q0, a)).

Montrer queA1× A2 reconnaît l’intersection des langages reconnus parA1 etA2.

Q10 Étant donné deux entiersp etq non nuls, donner une bijection fp,q: [[0, p[[×[[0, q[[→[[0, pq[[.

Écrire une fonction code : int -> int -> int * int -> int telle que(code p q (i,j)), où i∈ [[0, p[[ etj∈[[0, q[[, retournefp,q(i, j) ainsi qu’une fonctiondecode : int -> int -> int -> int * int telle que decode p q n, où n∈[[0, pq[[, retournefp,q−1(n).

Q11 Notre représentation ne permet pas de construire directement le produit de deux automates A1 et A2 car l’ensemble des états de celui-ci est un ensemble de couples alors que l’ensemble des états d’un de nos automates est nécessairement un ensemble d’entiers. Cependant, on peut aisément transformer A1× A2 en un automate équivalent dont l’ensemble des états est un ensemble d’entiers.

Écrire une fonction produit : afd -> afd -> afd construisant un automate équivalent au produit de deux automates.

Q12 On dit qu’un état q d’un automate A = (Q, q0, F, δ) est accessible s’il existe un mot u tel que δ(q0, u) =q.

Écrire une fonctionaccessibles : afd -> int listretournant la liste des états accessibles de l’au- tomate qui lui est passé en argument.

Q13 On dit qu’un état q d’un automate A = (Q, q0, F, δ) est coaccessible s’il existe un mot u tel que δ(q, u) ∈F. Écrire une fonction coaccessibles : afd -> int list retournant la liste des états coaccessibles de l’automate qui lui est passé en argument.

Q14 On dit qu’un automate estémondé si tous ses états sont à la fois accessibles et co-accessibles (sauf éventuellement l’état initial). L’opération d’émondage d’un automate, consiste à lui enlever des états de façon à obtenir un automate émondé. Cette définition de l’émondage est volontairement imprécise. Étant donné un automateA= (Q, q0, F, δ) définir précisément ce qu’est l’automate émondé obtenu à partir de A.

Q15 Écrire une fonction emonde : afd -> afd qui, appliquée à un afd A retourne l’automate A émondé.

Q16 Écrire une fonctionafd_local : ’a list -> ’a list -> (’a * ’a) list -> ’a afdtelle que (afd_local[a0;. . .;ap−1] [b0;. . .;bq−1] [(c0, d0);. . .; (cn−1, dn−1)]) retourne un automate local reconnais- sant le langage local L ne contenant pas le mot vide, dont l’ensemble des préfixes de longueur 1 est {a0, . . . , ap−1}, l’ensemble des suffixes de longueur 1 est {b0, . . . , bq−1} et l’ensemble des facteurs de longueur 2 est {(c0, d0), . . . ,(cn−1, dn−1)}.

Judicaël Courant- 2 novembre 2016 2/2 Document sous licence Art Libre (http://artlibre.org)

Références

Documents relatifs

Ces capteurs sont montés en série avec la charge à commander (l’entrée automate). Ils sont en général alimentés par la source de tension 24V disponible en façade de l’A.P.I.

WEEK : Jour de la semaine. Mot codant le ou les jours de la semaine pris en compte dans la période 

Mêmes questions en remplaçant le quantificateur exis- tentiel par un quantificateur universel dans la défini- tion de L2. Exercice 2 Soit (Q, q 0 , F, δ) un automate sur un

(ii) ⇒ (i) Si G est connexe d’ensemble d’arêtes minimal, alors il ne peut posséder de cycle : sinon en enlevant une arête d’un cycle, on obtient un graphe avec un

Écrire une fonction inverse(s) prenant en argument la représentation d’une

Écrire une fonction fusion(t1, t2) prenant en argument deux tableaux t1 et t2 de nombres supposés triés 1 de longueurs

On généralise cette notion aux ensembles de clauses (ou aux formes normales conjonctives si l’on préfère) : on dit qu’un atome apparaît positivement (négativement) dans un

Le problème de séparation par automate consiste à chercher l’existence, pour des langages S et T finis et un entier k donnés, un automate fini déterministe à k états qui accepte