Вы находитесь на странице: 1из 11

Epreuves dInformatique 1997

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.

Problme sur les automates - 60 mn environ


La reconnaissance de motifs

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

preuves dInformatique 1997

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 ) .

Un tat initial e et un tat iinal f .

FIG. - Reprsentation graphique dun automate. 1


Si pour chaque tat e E Q et pour chaque lettre a E A , il existe au plus un tat f E Q tel que ( e ,a , f ) soit une transition de lautomate, on dit que lautomate est dterministe. Dans ce cas, si (e, a , f ) E E on choisit alors de noter f par e . a. On nattachera pas dimportance a u fait que la notation e . a nest pas dfinie pour tous les couples ( e , a ) E Q x A .

N.B. Dans tout le problme, lalphabet A est fix: A = {a, b } .


1. On considre lautomate d a b a dcrit graphiquement par la figure 2.

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.

2. On considre lautomate dobaab dcrit graphiquement par la figure 3.

preuves dInformatique 1997

39

CCM 3/11

(a) Dcrivez le langage reconnu par lautomate d a b a a b .

(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

preuves dInformatique 1997

CCM 4/11

(b) Montrez que les transitions de Dj sont bien dfinies rcursivement par :

5 . Montrez que la fonction

cy

elle-mme peut tre calcule rcursivement par :

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).

FIN D U PROBLME SUR LES AUTOMATES

Problme de logique - 30 mn environ


Le connecteur de Shefler

Le connecteur de Sheffer, not connecteur est dfini par :

1,

est u n connecteur binaire de la logique propositionnelle. Ce

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.

2. Construisez la table de vrit de la formule

212.

3. Montrez que les formules Z et z1z sont logiquement quivalentes.


4. Montrez que z V y et (z1z)I(yly) sont des formules logiquement quivalentes.

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-

rences du connecteur de Sheffer.

preuves dInformatique 1997

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 .

8. Appliquez lalgorithme de la question 7 la formule

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 :
-

si F est une variable propositionnelle. F est quilibre par dfinition ;

si F peut scrire G c H avec c E { V , A , * , ~ } , si G et H sont quilibres et si o(G)= u ( H ) alors F est quilibre.

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) .

FIN D U PROBLME D E LOGIQUE

Problme de programmation en Pascal

- 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

preuves d'Informatique 1997

CCM 6/11

Symbole actif
Info Permute Echange Cat Comment aire
X

Dfinition "Informatique" "$2$1" "$2,$1 II


11$1$2II
II I I

"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

InfoO I n f o l 0 ' ' 1


II

(b) la chane (c) 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

preuves d'Informatique 1997

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

Echange (Echange (1,2)1 Cat(In,foO> " ; x 0 y 0


II

II

Il

I'

; ;
'I

(d) la chane (e) la chane (f) la chaine

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.

5 . Donnez le code d'une fonction


estDansTable(s
:

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

preuves dInformatique 1997

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

4 Problme de programmation en Cam1 - 90 mn environ


UNIQUEMENT POUR LES CANDIDATS ET LES CANDIDATES CHOISISSANT LE LANGAGE CAML

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 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

preuves d'Informatique 1997

45

CCM 9/11

Symbole actif
Info Permute Echange Cat Commentaire
X

Dfi nit ion


"Informatique" "$2$1" "$2,$1 I I I I $1$2 I I
II I I

xx

"xx ( ) "xxx ( )
"y0"

TAB. - Exemples de macro-dfinitions. 3


strictement positif, ces sous-chanes dsignent des arguments. Kous en verrons l'usage plus loin.

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.

Exemple. En prenant en compte les macro-dfinitions de la table 3, la macro-expansion de la


chane
II

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

(b) la chane (c) la chane (d) la chane

II

II

Cat (1,2) ; Echange (1,2) ; a Commentaix?e(Hello,World) b

II.

2. Quels sont les deux rsultats envisageables de la macro-expansion de la chane de caractres II Permute(Info0 ,Epreuve) " ?

46

preuves d'Informatique 1997

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

Echange (Echange ( 1 ,2)) cat(In,foO)


Il;

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 *)

type macro-definition = { Symbole : string ; Definition : string

*> *>

;;

let

EntreeVide = { Symbole =

''II

; Definition =

"II

;;

type 'a table-des-symboles = { Table : 'a vect ; mutable TailleTable : int

;;

let

TableDesSymboles = { Table = make-vect tableMax EntreeVide ; TailleTable = O

(* la table

*>

;;

preuves dInformatique 1997

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?

6. Donnez le code dune fonction


estDamTable : string -> bool

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?

FIN D U PROBLME D E PROGRAMMATION E N C A M L


FIN DE LPREUVE

Вам также может понравиться