Académique Documents
Professionnel Documents
Culture Documents
0734
SESSION 2000
Option MP
EPREUVE D'INFORMATIQUE
Dure : 4 heures
L 'usage des calculutrices est uutoris. Les algorithmes demands peuvent ire codis en CAML ou en PASCAL. Quand aucune directive n *estdonnie le candidat peut tablir une version rccursive ou non. @el que soit le choix du langage, les algorithmes rioiveni Ptre crits de la maniire la plus courte possible, pavaitement lisible, avec une indentation
convenable. sans uucune rature et en respectant scrupuleusemint les notations introduites. Ils doivent Ptre documents par des e.rplications concises et prcises sur les points qui le tricessitent. La lecture de l'annexe correspondant au langage choisi est vivemen! conseille avant d'aborder les questions de programmation. Les rponses qui ne respecteraient pas les consi,qnespreckrlentes ne seront pas prises en corsidiration. Les questioris sont assez souvent indpendantes les unes ries uutres. il est cependant conseil12 rie respecter la chronologie propose. Les parties 1. I I et III sont izdipendantes.
1) Dcrire un algorithme de remplissage du tableau h deux dimensions reprsentant la matrice M 2) Quel est le nombre total de multiplications de votre algorithme '?
3) Ecrlre la foncaon pgcd qui a prend pour arguments une matnce M (telle que m,,, = 2'3 ' pour O1 i$n et OIj<n) et quatre indices i
, ~ k. ,
f dans [ O J ] , et ietoume pour resultat la valeur du plus grand commun diviseur de m,,, et de mk,/
m i , , = 2'3'
entierp, l l p l 2 " 3 " , calcule les indices i, j du plus grand des minorants de p de la forme 2'3' . On s'efforcera dans cette question de minimiser le nombre de comparaisons en exploitant la remarque qui suit. Remarque : Si sur la ligne I n le plus grand des minorants de p se trouve en colonne j o , alors sur la ligne i, +1 le PIUS grand des minorants de p est : - Soit I'lrnent qui se trouve sur en ( i, +1, j,, ), si mi,, ;, = 2mlo, est inferieur ou igal h p.
+,.
mi,+,,,o = 2m [O
10
mio+~ j 0.- l
5)
Combien de comparaisons mettant en jeu un liment de la matrice M effectue votre algorithme '? Page 116
t
e
Afin de pouvoir coder avec une telle structure de donnes des mots qui sont prfixes dautres mots dj placs, on rajoute systmatiquement un pomt a la fin de chaque mot. A m i les mots arc, art, artiste seront cods par :
a
t :
Il y a correspondance biunivoque entre les branches de larbre et les mots qui y ont te placs. Pour reprsenter une telle structure de donnes on associe i chaque nud de larborescence un triplet dont la premire composante connent le caractre associ au nud. la seconde composante permet daccder au fils ain de ce nud et la troisime permet laccs au frre cadet. On suppose que la racine de larbre conhent le caractre ., ainsi ds le dpart le dictionnaire contient le mot vide cela simplifie lalgorithme dinsertion car on vite de se poser la question de savoir si le dictionnaire est vide ou pas. Le caractere . tant infrieur daprs lordre lexicographique a nimporte quelle lettre. on peut schmatiser larborescence qui respecte lordre alphabtique et qui contient les mots urc, urt, artiste, bol par :
*
C
Page 216
Ecrire la fonction creer-hranche qui prend pour argument un mot m et retourne pour rsultat larbre rduit la branche qui code le mot m.Si le motest le mot bol, la fonction retourne pour resultat ladresse de larbre reprsent par la branche :
1)
Ecrire la fonction placer qui a pour arguments un mot m et un arbre a, cette fonchon retourne pour rsultat larbre auquel le mot tn a Cte ajoute. Dans cette question on ne suppose pas que larbre respecte lordre alphabtique, le mot m est simplement ajoute a larborescence et cod en partie commune sans tenu compte de lordre alphabtique.
2) bcrire la fonction inserer qui a pour arguments un mot m et un arbre a. cette fonction retourne pour resultat larbre auquel le mot m a t ajoute. Ici on suppose que larbre (1 contient les mots ranges dans lordre alphabtique, larbre resultat apres insertion du mot m doit posseder la mme propnete.
3) Ecrire la procedure affiche qui affiche dans lordre alphabetique tous les mots contenus dans un arbre cr avec la fonction inw-er Le(s) parameae( s ) de cette procedure est (sont 1 a preciser
4) Emre la fonction boolenne prescrit qui a pour argument un mot m et arbre a. cette fonction renvoie pour rsultat le boolen vrai si le mot m est prsent dans larbre o. le boolenfiircv sinon.
5 ) Ecrlre la squence dinstructions qui permet de saisir en lecture des mots et de les insrer au fur et a mesure dans larbre dont la racine se nomme (tico. La tin de la lecture intervient lorsque le motfin est lu.
,=I
i=1
Par analogie, on dira que des mots qui possdent la proprit ci-dessus quils sont des mots bien formes. Quel que soit le langage choisi un mot u est reprsent dans la suite de cet noncd par un tableau dentiers dont les composantes sont indexees i partir de O , la composante dindice O contient la longueur du mot. Amsi le mot bien forme I - I - 1 est represente par le tableau u, avec u,, = 3. u, = 1, i l 2 = - I,ii, = - I La longueur dun mot u, note lui, est le nombre de ses composantes.
1)
2) Dmontrer que si u = ( u , u , . . , u ,, ) et v = ( v , , v 2 ,. . . , v,,,) sont des mots bien forms, alors w = (1, u , , u 2 ,..., u n , v , , v , ;.. , v m ) est un mot bien form.
Page 316
3)
Dmontrer que rciproquement, si w = ( \ Y , , I.v?. ... ,w,, ) est mot bien form (n>l) alors il existe un unique couple u = ( u , , ~ , ; . . ,u , ) et Y = ( v , , Y ? , . . . , v r ) de mots bien forms tels que w =(I,u,,u2,...,ii, , v l , v Z , " . ,v , . ) .
4) Ecrire la fonction boolenne est-bienf o r m e , qui a pour argument un mot z i et pour rsultat le boolen vrai si le mot 11 satisfait la proprit ( l ) , f a u xsinon.
5 ) Ecrire suivant le langage choisi. : - Pour PASCAL, la procdure consrruire qui prend comme paramtres de donnes deux mots bien foms ZJ et IJ et a pour paramtre rsultat le mot bien form w dont il est question en 2).
Pour CAML. la fonction construire qui prend comme paramtres deux mots bien forms ii et v et a pour rsultat le mot bien form w dont il est question en 2).
6 ) Ecrire la fonctionfitsion qui a pour paramtres deux listes 1, et f? de mots bien formls, et retourne pour rsultat la liste de tous les mots bien forms obtenu par (( construction )) ( l'aide de la pnmitivc construire qui est demandee i la question qui prcde) partir d'un mot de la liste Il suivi d'un mot de la liste 1, . Si la premire liste a n tilments et la seconde p lments, la liste rsultat aura np lments.
7) Ecrire la procdure enumere qui a pour argument un nombre entier p et pour effet de remplir le tableau de liste de m ~f (global) t ~ de faon telle que lajme composante de cc tableau contienne la liste de tous les mots bien formes de longueur exactement 2*j+ 1.
n
8) Soit
ii
= ( u ,,u? ;",u,,)
c i i , =
1=I
zut
I
soit
!%=1
= ( u t + ,, ..,un , I I ( ..,ut ) est l'unique mot bien t o m e dduit de u par une permutation
On peut dmontrer (on ne le demande pas) que si u et v sont deux mots dduits l'un de l'autre par une permutation circulaire tels que
2k+l.
1 1
1
v, =
II,
= - 1 alors u
,=I
I=I
Page JI6
..
.
-
ANNEXE PASCAL
Rappels de quelques fonctions standard de PASCAL : - La fonction l e n g t h a pour rsultat l a longueur de la chane passe en parametre.
Loprateur i n f i x e de concatnation de chaines est not + La fonctlon c o p y ( c h , 1, lg 1 renvoie pour rsultat la sous-chane extraite de la chaine c h qul cornence au caractere de rang i et qui a pour longueur lg. Si c h est une vanable chaine. chCi] dslgne le ieme caractre de la chaine c h .
k, 1
:i n t e g e r )
:i n t e g e r ,
Var
ype
mot = 3rray[O..2l] lof i n c e g e r ; Iisti-mots = d o u b l e t ; ?oublet = r-?rord i n f o : mot ; s u i v : l i s t e -mots
end ;
t a b l e a u -d e - L i s t e s - n o t s ,7ar
t_
a r r a y [ O . . l 3 ] of l i s t e - m o t s
;
tableau-de-liztes -mots
On suppose disponible la fonction c o n c ( 11, 1 2 : 11s t e -m o t s ) qui ralise la concatnation de deux listes.
Page 516
..
#
ANNEXE CAML
RaDpels de auelaues fonctions de la bibliothque CAML :
Si m est une matTice, m. ( i ) . ( j 1 dsigne la composante qui se trouve sur la ligne i et la colonne j Si s est une chane s . [ i ] disigne le caractre de rang i de la chaine s .
string-length : string -,int renvoie lalongueurdelachainedonne. sub-string : string - ? int -> int - > string, sub-string s d 1 renvoie unenouvelle chane de longueur 1contenant les caractres de la chane s a partir du caractre numro d. prfix * : string - > string - > string, s l A s 2 renvoie une nouvelle chane concatne des chanes s 1 et s 2 . : 1Jnit - 3 string lit des caractres sur lentre standardjusqua rencontrer un saut de ligne. read-Line Renvoie la chane de tous les caracrres lus, sans le caractre saut de ligne final. prefix @ : a list - - a l i s t - ? a iist, 11 Ca 1 2 renvoleunenouvellelisteconcatne des listes 11 et 1 2 . : a list ->int renvoie le nombre dClments de la liste donne. list-length
n.
I x2eud of :nar*Irbre*arbrc;;
) ;;
--/
make-vect 20 0
;;
<fun>
Page 616