Vous êtes sur la page 1sur 6

J.

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- Parcours en escalier dans un tableau.


Soit M une matrice de n+l lignes et de n + l colonnes (@O). telle que m,,, = 2'3' pour 05 i s n et 05jln.

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'

4) On dispose d'une matrice M telle que

pour O1 i l n et OSjSn, dcrire un algorithme qui tant donn un

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.

+,.

- Soit I'lrnent qui se trouve en ( in +1, j , - l ) , si


7

mi,+,,,o = 2m [O

10

est stnctement suprieur 6 p , car dans ce cas

mio+~ j 0.- l

= - m i u . j Q est alors le plus grand des minorants de p sur la ligne i, + 1.

5)

Combien de comparaisons mettant en jeu un liment de la matrice M effectue votre algorithme '? Page 116

II- Codage de mots en parties communes.


Le problme consiste grer un dictionnaire en codant les mots en partie commune a Iaide dune arborescence. Exemple : les mots arc et artiste seront cods par larbre suivant :
a

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.

III- Expressions prfixes bien formes.


On se propose ici dnumerer et de dnombrer les expressions prfixes dune longueur fixe que lon peut crire avec un oprateur binaire note + et une seule variable note (1. Par exemple les seules expressions prfixes bien formes de longueur 5 sont : +ci+na et ++uaa correspondant respectivement aux expressions parenthses a+(a+a) et (a+a)+n. On associe toute expression, construite avec les seuls symboles -+ et u. un mot ii = ( u ,,u ? . ... ,u,, ) avec n2l et u,. E {- 1,l) pour i = I , . . .,n. A chacun des deux symboles on associe son arit diminue de 1. Ainsi a loprateur binaire + est associ le poids 1 et la variable a (oprateur darit O ) le poids -1. .Aux deux expressions bien formes ci-dessus correspondent respectivement les mots : ( 1- 1 I - 1- 1) et ( 11- 1- 1- 1). On dmontre quun mot de longueur n sur {- 1,I)correspond h une expression prfixe bien forme si et seulement si

,=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)

Quelle est la parit de la longueur dun mot bien form ?

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

un mot tel que


v

c i i , =
1=I

-1 et I le plus petit indice ( 1 5 i 5 I I ) tel que

zut
I

soit

!%=1

minimum. dmontrer que circulaire.


9)

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

* v . En dduire le nombre C, de mots bien forms de longueur

,=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 .

1) Parcours en escalier dans un tableau.


Dclarations :
type m a t r l c ? = a r r a y [ 0 . . 2 0 , 0 . . 2 0 ] of l o n g i n t
;1,J ,
;

En-tte de la fonction demande .


F r i n c t i o n p g c d ( m :matr,ce

k, 1

:i n t e g e r )

:i n t e g e r ,

II) Codage de mots en parties communes.


Dclarations :
Type pnceud = noeud; noeud = r e c o r a i n r o : char ; f i l s , c r r e r e :pnoeud end ; mot : s t r i n g ; dico : ? n o e u d ;

Var

En-tte des fonctions et urocdures demandes


m

r u n c t i o n Creer -b r a n c k e ! m : s t r i n g ) : p n o e u d ; Functi9,r. p l a c e r ( m :s:r:ng ; a : p n o e u d ) :;noeud; F i i n c t i o n i n s e r e r i m :string ; a : p n o e u d ) :-,noeud; P r o c e d u r e a f f i c h e ..................; Func:ia,r. s r e s e n t ( m : s c r i n g r ;a : p n o e u a ) : b o o l e a n ;

III) Expressions prfixes bien formes.


Dclarations :
T L

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

En-tte des fonctions et des procdures demandes :


Function est-bien-forrne(u : m o t ) : boolean ; P r o c e d u r e c o n s t r u i r e (12, 71 :mot ; v a r :mot) ; h n c t i o n f u s i o n ( l l , l 2 :Liste-mots) :liste-mots P r o c e d u r e enumere ( p : i n t e g e r ) ;

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

1) Parcours en escalier dans un tableau.


fonction demande
:

II) Codage de mots en parties communes.


Type et valeur globales :
t y p e arbre
=
..A-

n.

I x2eud of :nar*Irbre*arbrc;;

Let d i c o = ref ! n o e u d ( . . , nil,ni11

) ;;

liste des fonctions et procdures demandes :


creer-branche : string --, arbre = ( : u n > 3rbr2 -, a r ~ r e= (fun) placer : s t r i n ( 2 inserer : s t r i ~ g- a r t r e - a r ~ r e= <fun, affiche : . . . . . . - unit = (fun> arbre - ci001 = fun, present : string
2

--/

III) Expressions prfixes bien formes.


Valeur globale :
Let
il=

make-vect 20 0

;;

Liste des fonctions et procdures demandes :


est-bien-forme : construire : int fusion : in% ~ ~ enumere : int - 2 int - ~ e c t- 2 b o c l =< fun> .Ject - int 77ect int vect = .-fun/. e list c t int v e c t list - , int vect list int vect list -7ect = <fun>
- 2
-,a

<fun>

Page 616

Vous aimerez peut-être aussi