Vous êtes sur la page 1sur 4

Premier cycle

Mardi 24 Juin 2008

I3 - Algorithmique
Dur e : 3h00 e Documents autoris s : AUCUN (calculatrice comprise) 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.

1
1.1

Compr hension dalgorithmes vus en cours (5 points) e


Min-max

Apr` s avoir rappel en quelques lignes le principe de lalgorithme min-max, quel est le coup qui sera choisi e e par cet algorithme sur larbre pr sent par la gure 1. e e
Position P

P11

P12

P13

P21

P22

P23

P24

P25

P26

P27

P31

P32

P33

P34

P35

P36

P37

P38

P39

P310 P311

P312

P313 P314

P315 P316

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 412 413P414 P414 P415 P416 417P418 P419 P420 421 422 P423 P424 P425 P426P427 P P P P P 3 -4 5 6 2 -3 0 -4 5 10 3 -4 -2 0 -2 2 -6 0 6 -2 -7 3 2 5 -4 -1 5 10

P428P429P430 P431 P432 3 -8 8 3 4

F IG . 1 Arbre de positions

1.2 paint
Dans le cours sur la r cursivit nous avons vu lalgorithme de la proc dure remplir suivante : e e e proc dure remplir ( E/S e : Ecran , E x,y : Naturel , ancienneCouleur, nouvelleCouleur : Couleur) e debut si obtenirCouleurPixel(e,x,y)=ancienneCouleur alors xerCouleurPixel(e,x,y,nouvelleCouleur) remplir(e,x,y-1,ancienneCouleur,nouvelleCouleur) remplir(e,x,y+1,ancienneCouleur,nouvelleCouleur) remplir(e,x-1,y,ancienneCouleur,nouvelleCouleur) remplir(e,x+1,y,ancienneCouleur,nouvelleCouleur) nsi n

Apr` s avoir recopi la gure 2 sur votre copie, num roter les pixels qui seront colori s suivant leur ordre e e e e ` e dapparition a l cran en commencant par le pixel num rot 1 (lancienne couleur est le blanc, la nouvelle le e e noir).

x 0,0 y

1 12,12
` F IG . 2 Surface a remplir

1.3

Partitionner

Apr` s avoir rappel en quelques lignes le principe du partitionnement dun tableau utilis dans le tri rapide, e e e donner le r sultat du partionnement du tableau suivant en consid rant que la valeur pivot est la valeur de la e e premi` re case. e 5 1 4 2 3 3 7 4 10 5 6 6 9 7 1 8 3 9 12 10 9 11 8 12

Polynome (4 points)
Soit le type Polynome avec les op rations suivantes : e fonction monome (a : Reel, n : Naturel) : Polynome fonction addition (p1,p2 : Polynome) : Polynome fonction degre (p : Polynome) : Naturel fonction coefcient (p : Polynome, n : Naturel) : Reel Donnez le corps des fonctions suivantes : 1. fonction multiplicationParScalaire (p : Polynome, a : Reel) : Polynome 2. fonction soustraction (p1,p2 : Polynome) : Polynome 3. fonction multiplication (p1,p2 : Polynome) : Polynome 4. fonction derivation (p : Polynome) : Polynome

Probl` me du labyrinthe (11 points)1 e

Lobjectif de cet exercice est d tudier le probl` me du labyrinthe. Comme lindique la gure 3, lobjectif e e est de trouver un algorithme permettant de trouver le chemin qui m` ne de lentr e a la sortie. e e ` ` En fait, un labyrinthe est compos de cases. On acc` de a une case a partir dune case et dune direction. Les e e ` directions possibles sont Nord, Sud, Est et Ouest. Par exemple, comme le montre la gure 4, le labyrinthe pr c dent peut etre consid r comme etant compos e e ee e de 25 cases. La case num ro 6 est la case dentr e. La case 20 est la case de sortie. La case 8 est accessible e e depuis la case 13 avec la direction Nord.
1

Les 4 premi` res parties de cet exercice sont ind pendantes e e

Entree

Sortie

F IG . 3 Un labytinthe

1 6 11 16 21

2 7 12 17 22

3 8 13 18 23

4 9 14 19 24

5 10 15 20 25

F IG . 4 Un labytinthe compos de cases e

3.1

Type direction (0,25 points)


Donner le type Direction.

3.2

Conception pr liminaire dun ensemble de directions (2,5 points) e


` A limage du type EnsembleDEntiers vu en TD, on consid` re que lon a le type EnsembleDeDirections. e

1. Rappeler les op rations disponibles pour le type EnsembleDEntiers. e 2. Donner les signatures des proc dures et fonctions de ces op rations pour le type EnsembleDeDirections. e e

3.3

Conception d taill e dune pile de directions (4 points) e e

Une pile est un type de donn es de type LIFO (Last In First Out), cest-` -dire que la premi` re donn e e a e e ins r e dans une pile (on dit que lon empile une donn e) sera la derni` re donn e qui pourra etre retir e de la ee e e e e pile (on dit que lon d pile une donn e). R ciproquement, la derni` re donn e empil e sera la premi` re a etre e e e e e e e ` d pil e. e e e La gure 5 est une repr sentation graphique classique dune pile. Dans cet exemple, cest e1 qui a et empil e e e ` en premier. e2 a et empil en deuxi` me, e3 en troisi` me. Cest e3 qui sera le premier a etre d pil . e e e e e Les op rations pour manipuler une pile sont les suivantes : e e cr er une pile vide (sans aucun el ment) e savoir si une pile est vide e empiler un el ment dans une pile e d piler un el ment dune pile e e En consid rant que les el ments que lon va utiliser sont des directions, on peut concevoir le type e PileDeDirections de la facon suivante :

empiler

depiler

e3 e2 e1

F IG . 5 Une pile Type PilesDeDirections = Structure lesDirections : Tableau[1..MAX] de Direction nb : Naturel nstructure La conception pr liminaire de ce type donne les signatures de fonctions et proc dures suivantes : e e fonction creerPileDeDirections () : PileDeDirections fonction estUnePileDeDirectionsVide (p : PileDeDirections) : Booleen proc dure empilerDirection ( E/S p : PileDeDirections , E d : Direction ) e proc dure depilerDirection ( E/S p : PileDeDirections , S d : Direction ) e . . .avec non(estU neP ileDeDirectionsV ide(p)) Donner le corps de ces fonctions et proc dures. e

3.4

Conception pr liminaire du type Labyrinthe (1,25 points) e


Les op rations disponibles sur un labyrinthe sont les suivantes : e cr er un labyrinthe (rectangle dune certaine dimension), e obtenir la case dentr e, e savoir si une case est la case de sortie, obtenir un ensemble de directions possibles depuis une case donn e, e obtenir la case accessible depuis une case et une direction. Donner les signatures des fonctions et proc dures correspondant aux op rations d crites ci-dessus. e e e

3.5

Utilisation du type Labyrinthe : Algorithme du petit-poucet (4 points)

Lobjectif de cette derni` re partie est dobtenir une pile de directions qui permet de trouver la sortie depuis e une case. Une solution a ce probl` me est dutiliser le principe du petit poucet, cest-` -dire mettre un caillou sur e a ` les cases rencontr es. Lorsque lon tombe sur un cul de sac ou une case d j` rencontr e, on retourne a la e ea e case pr c dente pour tester une autre direction. e e Pour ne pas modier le type Labyrinthe, plut t que de marquer une case avec un caillou on peut ajouter une o ` case a un ensemble (EnsembleDEntiers vu en TD). Pour v rier si on a d ja rencontr une case, il suft e e e alors de v rier si la case est pr sente dans lensemble. e e ` Proposer le corps de la proc dure suivante qui permet de trouver le chemin de sortie (sil existe) a partir e 2 : dune case donn e e proc dure calculerCheminDeSortie ( E l : Labyrinthe, caseCourante : Entier , E/S casesVisitees : e EnsembleDEntiers , S permetDAllerJusquALaSortie : Booleen, lesDirectionsASuivre : PileDeDirections )

Vous pouvez vous inspirer de la proc dure remplir du premier exercice e