Академический Документы
Профессиональный Документы
Культура Документы
37
CCM 1/11
PREUVE DINFORMATIQUE
Filire M P (Dure de lpreuve : 3 heures) RECOMMANDATIONS AUX CANDIDATS Si, a u cours de lpreuve, un candidat ou une candidate repre ce qui lui semble tre une e r r e u r dnonc, il ou elle le signale s u r sa copie et poursuit sa composition e n expliquant les raisons des initiatives quil o u elle est amen(e) prendre. Tout rsultat fourni dans lnonc peut tre utilis pour les questions ultrieures, mme sil na pas te dmontr. I l ne faut pas hsiter formuler les commentaires q u i vous semblent pertinents mme lorsque lnonc ne le demande pas explicitement.
COMPOSITION DE LPREUVE
Lpreuve comprend trois problmes indpendants.
-
Premier P r o b l m e : le problme de thorie des automates, no 1 page 2, rsoudre en , 60 minutes environ ; Deuxime problme: le problme de logique, no2 page 5 , rsoudre en 30 minutes environ ; Troisme problme: u n problme de programmation au choix parmi deux, rsoudre en 90 minutes environ. Attention ! Pour le troisime problme, un seul choix est possible. Le candidat prcisera son choix sur sa copie et seul le problme correspondant sera corrig. Les deux choix possibles sont : - le problme de programmation en langage Pascal, le problme no 3 page 6, pour les candidats et les candidates dsirant choisir ce langage ; - le problme de programmation en langage Caml, le problme no4 page 9, pour les candidats et les candidates dsirant choisir ce langage.
Lobjet du problme est de montrer que le modle des automates finis conduit naturellement la construction dalgorithmes efficaces pour la reconnaissance de motifs dans un texte. La reconnaissance de motifs est une fonction essentielle des logiciels de traitement de texte. Rappels et notations On appelle alphabet un ensemble fini A . Les Clments de A sont appels des lettres. On note A* lensemble des suites finies ddments de A qui sont appeles des mots sur A ou simplement des mots lorsquaucune ambigut nest craindre. Le mot vide est not 1A.. Soient f,g E A*, on note f g le mot obtenu en faisant suivre la suite des lettres de f par la suite des lettres de g, f g E A*. Soit f E A, sil existe g,h E A* tels que f = gh dors g est un prfixe de f et h est un sufixe de f. Si h # f,h est dit un sufixe propre de f et g est dit un prfixe non-vide de f . Sil existe u , v, w E A* tels que f = uvw, v est un facteur de f . Enfin, on note 1 f 1 la longueur de f , cest--dire le nombre de lettres de lalphabet qui le composent.
38
CCM 2/11
Un automate est une structure < Q , A , E , 1,T > telle que Q est un ensemble fini dlments appels tats, A est un alphabet, I C Q, les lments de I sont appels tats initiaus, T C_ Q , les Clments de T sont appels tats terminaus, E C Q x A x Q, les Clments de E sont appels des transitions.
Un automate est reprsent graphiquement par un graphe orient de la manire suivante: chaque tat e est reprsent par un noeud du graphe, chaque transition ( e , a , f ) est reprsente par une flche tiquete par le mot a et qui va de ltat e vers ltat f . Pour marquer quun tat est initial on ajoutera une flche entrante sans origine. Pour marquer quun tat est terminal on ajoutera une flche sortante sans but. La figure 1 illustre ce mode de reprsentation graphique.
O
Un noeud correspondant Itat e.
Une transition ( e ,a , f ) .
U
FIG. 2 - Lautomate
daba.
(a) Dcrivez le langage reconnu par lautomate d a b a . (b) Dterminisez lautomate d a b a . Donnez la table de transition de lautomate dterminis ainsi que sa reprsentation graphique.
39
CCM 3/11
(b) Dterminisez lautomate d a b a a b . Donnez uniquement la table d e transition de lautomate dterminis. Dans la suite du problme, on considre un mot f = al - . - a , E A* et lautomate d j dcrit graphiquement par la figure 4 page suivante. On note P lensemble des prfizes du mot f :
P = { 1 ~ 0 , l , ala2, a
. . . , al
a,-l,
al
- - -a,}
Lensemble des tats de lautomate d j peut tre identifi avec lensemble des prfixes de f : ltat O est identifi avec 1 ~et pour i E [l,n],ltat i est identifi avec le prfixe al - - - a i . . On note Dj le dterminis de lautomate d f obtenu par la mthode des sous-ensembles. Lensemble des tats de Dj est un sous-ensemble de lensemble des parties de P.
n
U
FIG 4 - L automate df. .
ab
aba
abaa
abaab
4P)
TAB.1 - La fonction Q pour f = abaab.
40
CCM 4/11
(b) Montrez que les transitions de Dj sont bien dfinies rcursivement par :
cy
6. Dduisez de ce qui prcde un algorithme qui reconnat toutes les occurrences dun facteur f dans un mot t donn avec une complexit en O(lfl+ Itl).
1,
FIG G d e f F V G
o F et G sont des formules de la logique propositionnelle? F et G sont les ngations ou complmentations de ces formules et =de f est un symbole dgalit par dfinition.
Notations. On utilisera les lettres minuscules z, y, z, ... pour dsigner les variables propositionnelles. V est le symbole pour le connecteur de disjonction. A est le symbole pour le connecteur de conjonction. =+ est le symbole pour le connecteur dimplication.
On considre la logique propositionnelle munie des connecteurs de ngation, de conjonction, de disjonction, dimplication et du connecteur de Sheffer. Lobjet de lexercice est de montrer que pour toute formule F de la logique propositionnelle, il existe une formule F*, ne contenant que des variables propositionnelles et le connecteur de Sheffer, telle que F et F* soient logiquement quivalentes.
1. Construisez la table de vrit dune formule zly.
212.
5 . En vous servant des questions prcdentes, montrez quil existe une formule logiquement quivalente z y ne contenant que les variables propositionnelles z et y et deux occur-
41
CCM 5/11
6. De mme, montrez quil existe une formule logiquement quivalente 2 A y ne contenant que les variables propositionnelles 2 et y et des occurrences du connecteur de Sheffer.
7 . Des questions prcdentes, dduisez un algorithme permettant de transformer toute formule F de la logique propositionnelle en une formule F* ne contenant que des occurrences du connecteur de Sheffer et les variables propositionnelles dj prsentes dans F .
2A
( y V z).
Dfinition 1. Soit F une formule de la logique propositionnelle, on appelle poids de F et on note a ( F ) le nombre de connecteurs prsents dans la formule. Dfinition 2. On appelle formule quziibre une formule F sans connecteur de ngation qui vrifie les proprits suivantes :
-
9. Dmontrez que si F est une formule quilibre alors a ( F ) est d la forme 2k - 1 avec k entier naturel. Que reprsente Ic?
10. On note a*(n)le poids a u pire de la transforme F* dune formule F quilibre de poids n. Calculez a*(n) .
- 90
mn environ
UNIQUEMENT POUR LES CANDIDATS ET LES CANDIDATES CHOISISSANT LE LANGAGE PASCAL La gestion des macro-dfinitions
Lobjet de ce problme est de poser les bases dun gestionnaire de macro-dfinitions. Les macro-dfinitions sont utilises dans la plupart des langages informatiques : langages de programmation, langages de traitement de texte, langages de commandes, etc.
Les macro-dfinitions
On appelle macro-dfinition lassociation dune chane de caractres ventuellement vide un mot. Le mot est alors appel un symbole actif et la chane de caractres est sa dfinition. Les mots sont construits laide des lettres de lalphabet { a , . . . , z , A , . . ., 2, O,. . ., 9}. Les caractres espace et virgule, dollar et les parenthses sont appels des sparateur5 Les chanes de caractres sont crites entoures par des guillemets () permettant de les dlimiter. Elles ne peuvent contenir que les caractres de lalphabet et des sparateurs. La table 2 page suivante donne des exemples de macro-dfinitions: chaque ligne de la table contient un symbole actif et sa dfinition. Lorsque la dfinition contient des sous-chanes de la forme $i avec i entier strictement positif, ces sous-chanes dsignent des arguments. Nous en verrons lusage plus loin.
42
CCM 6/11
Symbole actif
Info Permute Echange Cat Comment aire
X
"xx (
"XXX ( 1
xx
\Y
TAB. 2
-
"y (1
Exemples de macro-dfinitions.
Le macro-expanseur prend une chane de caractres et expanse les macro-expressions qu'elle contient de la manire suivante : la macro-expression est remplace par la dfinition associe au symbole actif puis, dans cette dfinition, chaque sous-chane $i est remplace par le i-ime argument du symbole actif. Lorsque le i-ime argument n'existe pas, $i est remplace par une chane vide. Ce processus est appel mucro-expunsion. chane
Exemple. En prenant en compte les macro-dfinitions de la table 2, la macro-expansion de la Permute(Pre ,Sec) I I fournit la chane SecPre Il.
N.B. Dans tout le problme, on considre les macro-dfinitions donnes dans la table 2.
1. Donnez les macro-expansions des chanes de caractres suivantes :
(a) la chane
Cat (1,2)
II
Echange(l,2)
II
(d) la chane
a Commentaire(Hello,World) b ".
2. Quels sont les deux rsultats envisageables de la macro-expansion de la chane de caractres Permute(Info0 ,Epreuve) " ?
3. Quand une chane contient des macro-expressions, celles-ci sont ordonnes de gauche droite en fonction de la position de leur premier caractre.
Exemple. Dans la chane Permute(Info0 ,Epreuve) la macro-expression 'IInfo(> est droite de la macro-expression "Permute(Info0 ,Epreuve) puisque le 1 de Info est droite du P de Permute.
II,
II
43
CCM 7/11
On dcide que le macro-expanseur traite une chane suivant l'algorithme suivant : tant que la chane contient une macro-expression, choisir la macro-expression la plus droite dans la chane et l'expanser suivant les rgles. Quel est alors le rsultat de la macro-expansion de
"
Permute(Info,Epreuve)
Il?
4. Donnez les macro-expansions des chanes de caractres suivantes, justifiez votre rsultat par la suite des rsultats intermdiaires :
(a) la chaine (b) la chane
(c) la chaine
II
II
Il
I'
; ;
'I
II
II
II
x 0 y 0
;
".
II
Cat(C,Cat(Echange(t,a)))(l,2)
N.B. Dans la suite du problme, on attachera une grande importance au traitement des erreurs dans les programmes qui vous sont demands. En cas de dtection d'erreur, un diagnostic clair doit tre donn l'utilisateur puis le programme doit se terminer.
Les macro-dfinitions sont mmorises dans une table des symboles. C'est un tableau dont les entres contiennent un symbole actif et sa dfinition. C'est une variable globale du programme. Voici sa dclaration :
const tableMax = 128 ; type macro-definition = (* une entree du tableau *) array[1..2] of string ; (* symbole et definition *> table = ( * la table *> array [l . .tableMax] of macro-def inition ; var TableDesSymboles : table ; TailleTable : integer ; TableDesSymboles est la table des symboles et la variable TailleTable contient le nombre de macro-dfinitions mmorises dans la table. Si la valeur de TailleTable est strictement positive, les macro-dfinitions sont mmorises entre les indices 1 et TailleTable.
string) : boolean ;
dont le rsultat est true si s est un symbole actif, false sinon. Quelle est sa complexit au pire en fonction du nombre d'entres dans la table?
6. Donnez le code d'une fonction
defDansTable(s
:
string) : string ;
44
CCM 8/11
dont le rsultat est la dfinition du symbole actif s. Quelle est sa complexit en fonction du nombre dentres dans la table? On se propose damliorer strictement la mmorisation des macro-dfinitions et la complexit des prcdentes oprations sur la table des symboles. Pour cela on se donne une fonction dordre sur les chanes de caractres dont len-tte est : function avant(chainel,chaine2 : s t r i n g )
:
boolean ;
On suppose que les entres dans la table des symboles sont tries en fonction de leurs symboles actifs par cette fonction dordre. 7. Donnez le nouveau code de la fonction defDansTable. Quelle est sa complexit au pire en fonction du nombre dentres contenues dans la table?
8. Donnez le nouveau code de la fonction estDamTable. Quelle est sa complexit au pire en fonction du nombre dentres contenues dans la table?
FIN D U PROBLME D E P R O G R A M M A T I O N E N P A S C A L
Les macro-dfinitions
On appelle macro-dfinition lassociation dune chane de caractres ventuellement vide a un mot. Le mot est alors appel un symbole actif et la chane de caractres est sa dfinition. Les mots sont construits laide des lettres de lalphabet { a , . . .! z , A , . . . , Z , O,. . .,9). Les caractres espace et virgule, dollar et les parenthses sont appels des sparateurs. Les chanes de caractres sont crites entoures par des guillemets ( O ) permettant de les dlimiter. Elles ne peuvent contenir que les caractres de lalphabet et des sparateurs. La table 3 page suivante donne des exemples de macro-dfinitions: chaque ligne de la table contient un symbole actif et sa dfinition. Lorsque la dfinition contient des sous-chanes de la forme $i avec i entier
45
CCM 9/11
Symbole actif
Info Permute Echange Cat Commentaire
X
xx
"xx ( ) "xxx ( )
"y0"
U n programme appel mucro-ezpunseur traite une chane de caractk'res et l'ezpanse en fonction des macro-dfinitions. On suppose que les chanes traites par le macro-expanseur commencent par un espace et se terminent par un espace. Une macro-expression dans la chane de caractres est compose d'un symbole actif qui doit tre prcd d'un sparateur, puis d'une parenthse ouvrante, d'un texte ventuellement vide et d'une parenthse fermante ; dans le texte, les virgules qui apparaissent sparent des sous-chanes qui sont appeles des arguments et qui sont numrotes conscutivement 8. partir de 1.
Exemple. Dans Il abcd Cat (abc de ,uvw ,nbc) II, "Cat (abc de ,uvw,nbc) est une macroexpression dont les trois arguments sont les chanes "abc de", "uvw" et "nbc".
Le macro-expanseur prend une chane de caractres et expanse les macro-expressions qu7elle contient de la manire suivante : la macro-expression est remplace par la dfinition associe a u symbole actif puis, dans cette dfinition, chaque sous-chane $i est remplace par le i-ime argument du symbole actif. Lorsque le i-ime argument n'existe pas, $i est remplace par une chane vide. Ce processus est appel macro-expansion.
Permute(Pre,Sec)
II
fournit la chane
II
SecPre
II.
Dbut du problme
N.B. Dans tout le problme, on considre les macro-dfinitions donnes dans la table 3.
1. Donnez les macro-expansions des chanes de caractres suivantes : (a) la chane
II
I n f o O Inf0 1 0
It
II
II
II
II.
2. Quels sont les deux rsultats envisageables de la macro-expansion de la chane de caractres II Permute(Info0 ,Epreuve) " ?
46
CCM 10/11
3. Quand une chane contient des macro-expressions, celles-ci sont ordonnes de gauche droite en fonction de la position de leur premier caractre.
Exemple. Dans la chane Pemute(1nf 0 0 ,Epreuve> ", la macro-expression "InfoO" est droite de la macro-expression "Permute(Info0 ,Epreuve)" puisque le 1 de Info est droite du P de Permute.
II
On dcide que le macro-expanseur traite une chane suivant l'algorithme suivant : tant que la chane contient une macro-expression, choisir la macro-expression la plus droite dans la chane et l'expanser suivant les rgles. Quel est alors le rsultat de la macro-expansion de Permute (Info ,Epreuve) " ?
4. Donnez les macro-expansions des chanes de caractres suivantes, justifiez votre rsultat par la suite des rsultats intermdiaires :
(a) la chane (b) la chane (c) la chane (d) la chane (e) la chane
II
II
II
x 0
y 0
II
; ;
II
II
II
II
x 0 y 0
;
II
(f) la chane
II
Cat(C,Cat(Echange(t ,a)))(lY2)
N.B. Dans la suite du problme, on attachera une grande importance a u traitement des erreurs dans les programmes qui vous sont demands. En cas de dtection d'erreur, un diagnostic clair doit tre donn l'utilisateur puis le programme doit se terminer. Les macro-dfinitions sont mmorises dans une table des symboles. C'est un tableau dont
les entres contiennent un symbole actif et sa dfinition. C'est une variable globale du programme. Voici sa dclaration : let tableMax = 128 ; ;
( * une entree du tableau ( * le symbole actif ( * sa definition *)
*> *>
;;
let
EntreeVide = { Symbole =
''II
; Definition =
"II
;;
;;
let
(* la table
*>
;;
47
CCM 11/11
Dans TableDesSymboles, le champ Table est la table des symboles et le champ TailleTable contient le nombre de macro-dfinitions mmorises dans la table. Si la valeur de TailleTable est strictement positive, les macro-dfinitions sont mmorises entre les indices O et TailleTable-1.
5 . Quel est le type de TableDesSymboles?
dont le rsultat est true si son argument est u n symbole actif, false sinon. Quelle est sa complexit au pire en fonction du nombre dentres dans la table?
7. Donnez le code dune fonction defDansTable : string -> string
dont le rsultat est la dfinition du symbole actif donn en argument. Quelle est sa complexit en fonction du nombre dentres dans la table? On se propose damliorer strictement la mmorisation des macro-dfinitions et la complexit des prcdentes oprations sur la table des symboles. Pour cela on se donne une fonction dordre sur les chanes de caractres dont le type est :
avant : a -> a -> bool
On suppose que les entres dans la table des symboles sont tries en fonction de leurs symboles actifs par cette fonction dordre.
8. Donnez le nouveau code de la fonction defDansTable. Quelle est sa complexit au pire en fonction du nombre dentres contenues dans la table? 9. Donnez le nouveau code de la fonction estDansTable. Quelle est sa complexit au pire en fonction du nombre dentres contenues dans la table?