Vous êtes sur la page 1sur 4

D partement STPI e

Lundi 20 Juin 2011

I3 - Algorithmique
Dur e : 3h e Documents autoris s : AUCUN (calculatrice comprise) 1 e Remarques : Veuillez lire attentivement les questions avant de r pondre. e Le bar` me donn est un bar` me indicatif qui pourra evoluer lors de la correction. e e e Rendez une copie propre. ` Nutilisez pas de crayon a papier.

Questions de cours (2 points)

Pour rappel, lalgorithme du tri par fusion est : proc dure triFusion (E/S t : Tableau[1..MAX] dEntier ,E nb :Naturel) e debut triFusionRecursif(t,1,nb) n proc dure triFusionRecursif (E/S t : Tableau[1..MAX] dEntier ,E d,f :Naturel) e debut si d<f alors triFusionRecursif(t,d,(d+f) div 2) triFusionRecursif(t,((d+f) div 2)+1,f) fusionnner(t,d,(d+f) div 2,f) nsi n Sachant que la complexit de la proc dure f usionner est en O(n) d montrez que la complexit de la e e e e proc dure triF usion est en O(nlog2 (n)). e

2
2.1

Exercice de TD (5 points)
Recherche dichotomique it rative e

Donnez lalgorithme de la fonction suivante qui retourne lindice de la derni` re occurence dun entier e que e lon sait pr sent dans le tableau t poss dant nb entiers signicatifs tri s en ordre croissant : e e e fonction indiceDerniereOccurence (t : Tableau[1..MAX] dEntier , nb : Naturel, e : Entier) : Naturel Testez votre algorithme sur le tableau suivant en cherchant lindice de la derni` re occurence du nombre 5 : e 1 1 5 2 5 3 5 4 7 5 9 6 10 7 10 8 12 9

2.2

Recherche dichotomique r cursive e

Faites de m me, mais cette fois de mani` re r cursive. Votre r cursivit est terminale ou non terminale ? e e e e e Justiez.
1. Sauf les dictionnaires pour les etudiants non francophones

Probl` me (13 points) e


` Soit le type Point2D utilisable a laide des fonctions et proc dures suivantes : e fonction point2D (x,y : Reel) : Point2D fonction obtenirX (p : Point2D) : Reel fonction obtenirY (p : Point2D) : Reel fonction distanceEuclidienne (p1,p2 : Point2D) : Reel proc dure translater (E/S p : Point2D,E vecteur : Point2D) e proc dure faireRotation (E/S p : Point2D,E centre : Point2D, angle : Reel) e

3.1

Polyligne

Une ligne polygonale, ou ligne bris e (on utilise aussi parfois polyligne par traduction de langlais polye line) est une gure g om trique form e dune suite de segments, la seconde extr mit de chacun dentre eux e e e e e etant la premi` re du suivant.[. . .] Un polygone est une ligne polygonale ferm e. (Wikip dia) e e e La gure 1 pr sente deux polylignes compos es de 5 points. e e

(a) polyligne ouverte

(b) polyligne ferm e e

F IGURE 1 Deux polylignes De cette d nition nous pouvons faire les constats suivants : e Une polyligne est constitu e dau moins deux points ; e On peut obtenir le nombre de points dune polyligne ; Une polyligne est ouverte ou ferm e (quelle soit ouverte ou ferm e ne change pas le nombre de points : e e dans le cas o` elle est ferm , on consid` re quil a une ligne entre le dernier et le premier point) ; u e e ` On peut ins rer, supprimer des points a une polyligne (par exemple la gure 2 pr sente la supression du e e troisi` me point de la polyligne ouverte de la gure 1) ; e On peut parcourir les points dune polyligne ; On peut effectuer des transformations g om triques (translation, rotation, etc.) ; e e On peut calculer des propri t s dune polyligne (par exemple sa longueur totale). ee

F IGURE 2 Supression dun point

3.2

Conception pr liminaire e
Proposez la signature des fonctions et proc dures correspondant aux op rations suivantes : e e ` cr er une polyligne ouverte a partir de deux Point2D ; e savoir si une polyligne est ferm e ; e ouvrir une polyligne ; fermer une polyligne ; connaitre le nombre de points dun polyligne ; obtenir le i` me point dune polyligne ; e ins rer le i` me point dune polyligne ; e e supprimer le i` me point dune polyligne (on suppose quelle a au moins 3 points) ; e calculer la longueur dun polyligne ; translater une polyligne ; faire une rotation dune polyligne.

3.3

Conception d taill e e e

On propose de repr senter le type Polyligne de la facon suivante : e Type Polyligne = Structure lesPts : Tableau[1..MAX] de Point2D nbPts : Naturel estFermee : Booleen nstructure Proposez les fonctions et proc dures correspondant aux op rations suivantes : e e ` cr er une polyligne ouverte a partir de deux Point2D ; e ouvrir une polyligne ; translater une polyligne.

3.4

Utilisation dune polyligne

Dans cette partie, nous sommes utilisateur du type Polyligne et nous respectons le principe dencapsulation. 3.4.1 ` Point a lint rieur e

Nous supposons poss der la fonction suivante qui permet de calculer langle orient en degr form par les e e e e segments (ptCentre, pt1) et (ptCentre, pt2) : fonction angle (ptCentre,pt1,pt2 : Point2D) : Reel ` ` Il est possible de savoir si un point pt est a lint rieur ou a lext rieur dune polyligne ferm e en calculant e e e la somme des angles orient s form s par les segments issus de pt vers les points cons cutifs de la polyligne. En e e e ` ` effet si cette somme en valeur absolue est egale a 360 alors le point pt est a lint rieur de la polyligne, sinon il e ` est a lext rieur. e ` Par exemple, sur la gure 3, on peut savoir algorithmiquement que pt est a lint rieur de la polyligne car e |1 + 2 + 3 + 4 + 5 | = 360. Proposez le code de la fonction suivante en supposant que p est bien une polyligne ferm e : e fonction estALinterieur (p : Polyligne ; pt : Point2D) : Booleen 3.4.2 Surface dune polyligne par la m thode de mont -carlo e e

Une des facons dapproximer la surface dune polyligne est dutiliser la m thode de Mont -Carlo. Le prin e e cipe de cette m thode est de calculer une valeur num rique en utilisant des proc d s al atoires, cest-` -dire e e e e e a des techniques probabilistes (Wikip dia). Dans le cas du calcul dune surface, il suft de tirer au hasard des e ` points qui sont a lint rieur du plus petit rectangle contenant la polyligne. La surface S de la polyligne pourra e alors etre approxim e par la formule suivante : e 3

2 1 1 5 5 2 pt 4 3 4

` F IGURE 3 Point a lint rieur dune polyligne e

S SurfaceDuRectangle

Nb points dans la polyligne Nb points total

Par exemple, sur la gure 4, en supposant que le rectangle fasse 3 cm de hauteur et 4, 25 cm de largeur, et ` quil y a 28 points sur 39 qui sont a lint rieur de la polyligne, sa surface S peut etre approxim e par : e e S 3 4, 25 28 = 9, 39 cm2 38

F IGURE 4 Calcul de la surface dune polyligne par la m thode de Mont -Carlo e e On suppose poss der la fonction suivante qui permet dobtenir un r el al atoire entre une borne minimum e e e et une borne maximum : fonction reelAleatoire (borneMin,bornneMax : Reel) : Reel ` 1. Proposez lanalyse descendante pour le calcul dune surface dune polyligne a laide de la m thode de e Mont -Carlo. e 2. Donnez les signatures des proc dures et fonctions de votre analyse descendante. e 3. Donnez lalgorithme de lop ration principale (au sommet de votre analyse descendante). e