Anda di halaman 1dari 2

L2-GLIN301- Algorithmique et Structures de Donnes

 Examen Session 1 

Janvier 2012

Listes chanes

Pour crire vos algorithmes sur les listes, vous pouvez utiliser les oprations sur les listes vues en cours, ainsi
que l'opration dernier vue en TD renvoyant l'adresse du dernier lment d'une liste non vide.
(2 points) crivez un algorithme dplaant le dernier lment d'une liste en premire position. Vous
devez raliser cette opration en modiant le chanage de la liste. Donnez la complexit de votre algorithme en
fonction de n la taille de la liste.
Algorithme 1 : deplacerDernierElem(dr L : ListeSC)
Donnes : L est une liste simplement chane contenant au moins 2 lments.
Rsultat : Modie la liste L en dplaant le dernier lment de L en premire position. Aucun lment de L
ne doit tre dupliqu. Cet algorithme ne renvoie aucune valeur.

Question 1.

La gure illustre cette opration :

(2 points) Vous devez crire 2 algorithmes entrelaant les lments de 2 listes L1 et L2 de mme
longueur : le rsultat est la liste dont le 1er lment est le 1er lment de L1, le 2e`me lment est le 1er lment de
L2, le 3e`me lment est le 2e`me lment de L1, le 4e`me lment est le 2e`me lment de L2, . . ., ainsi de suite jusqu'aux
derniers lments de L1 et L2. La gure ci-dessous illustre cette opration :

Question 2.

L1

2
5

L2

Le premier algorithme que vous devez crire doit tre rcursif . Son rsultat est une nouvelle liste obtenue en
les lments de L1 et ceux de L2. Quelle est la complexit de ce premier algorithme, exprime en
fonction de n la taille de chaque liste L1 et L2 ?
dupliquant

: entrelacer1(d L1 : ListeSC, d L2 : ListeSC) : ListeSC


: L1 et L2 sont 2 listes simplement chanes de mme longueur
: Renvoie une nouvelle liste qui est le rsultat de l'entrelacement des listes L1 et L2. Les 2 listes L1
et L2 ne doivent pas tre modies.

Algorithme 2
Donnes
Rsultat

(3 points) Le deuxime algorithme d'entrelacement opre en modiant les chanages des listes. Aucun
lment ne doit tre dupliqu. Cet algorithme peut tre rcursif ou non. Donnez l'algorithme et sa complexit.
Question 3.

: entrelacer2(dr L1 : ListeSC, d L2 : ListeSC)


Donnes : L1 et L2 sont 2 listes simplement chanes de mme longueur.
Rsultat : Modie L1 de sorte qu'en n d'algorithme L1 soit le rsultat de l'entrelacement des listes initiales
L1 et L2. La valeur nale de L2 est quelconque. Aucun lment n'est dupliqu. L'algorithme ne renvoie rien.

Algorithme 3

Arbres Binaires

Question 4.

non vide.
Question 5.

(2

points)

(2

points)

crivez un algorithme calculant la plus petite valeur d'un Arbre Binaire de Recherche

: tailler(dr A : ArbreBin, d p : Entier)


: A un arbre binaire, p un entier positif
: Modie A en supprimant tous les noeuds de profondeur suprieure ou gale p (on rappelle que
la profondeur de la racine d'un arbre est 0). Cet algorithme ne renvoie rien.

Algorithme 4
Donnes
Rsultat

20

20
14

Illustration pour p=3 :

18
11

10

14

22

8
15

30
25

40

22
18

30

L2-GLIN301- Algorithmique et Structures de Donnes

 Examen Session 1 

Janvier 2012

Tableaux

3.1

Plus petit cart

Il s'agit de calculer la plus petite dirence entre les valeurs de 2 lments distincts d'un tableau d'entiers. Plus
prcisment cette valeur pour un tableau T [1..n] est M in{ | T [i] T [j] | : i [1..n], j [1..n] et i 6= j}.
Exemple : le plus petit cart pour le tableau 1 7 4 11 9 est 2, dirence atteinte pour les valeurs 7 et
9 (ou 9 et 11). Pour le tableau 1 7 3 9 1 2 le plus petit cart est 0, dirence entre les valeurs 1 et 1.
Question 6.

(1,5

point)

crivez un algorithme calculant le petit cart d'un tableau tri. Quelle est sa complexit ?

(2 points) Donnez prsent un algorithme pour un tableau non tri. Vous ne devez pas trier le
tableau pour calculer le plus petit cart. Quelle est sa complexit ?

Question 7.

(0,5 point) Est-il intressant d'un point de vue complexit de trier le tableau pour calculer le plus
petit cart d'un tableau non tri ? Justiez votre rponse.
Question 8.

3.2

Rservation de salle

L'tat des rservations d'une salle est reprsent par un tableau R[1..n] de boolens o les indices sont les
numros de jours et la valeur R[i] (i [1..n]) est Faux si la salle est libre le jour i et Vrai si elle est rserve.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
F
V F F F F V V F F
F
V
F
F
F
V
Exemple : le tableau de rservations

signie que la salle est rserve les jours 2, 7, 8, 12 et 16. Les autres jours la salle est libre.
Il s'agit de rpondre une demande de rservation de j jours conscutifs.
Par exemple avec le tableau de rservations de l'exemple prcdent, une demande de rservation de 5 jours
conscutifs ne pourra pas tre satisfaite. Une demande de rservation de 3 jours conscutifs pourra tre satisfaite
de plusieurs faons : la date de dbut de la rservation pourrait tre :
 le jour 3 (les jours rservs seraient les jours 3, 4 et 5)
 ou bien le jour 4 (les jours rservs seraient les jours 4, 5 et 6)
 ou bien le jour 9 (les jours rservs seraient les jours 9, 10 et 11).
 ou bien le jour 13 (les jours rservs seraient les jours 13, 14 et 15).
Plusieurs stratgies de rservation peuvent tre appliques.
Question 9.

(2

points)

La premire stratgie consiste calculer la premire date de dbut disponible.

: dbutReserv1(d R[1..n] : Tableau de boolens, d j :entier) : entier


: R est un tableau de boolens, j est un entier strictement positif
: Renvoie le plus petit indice i tel que i + j 1 6 n et R[i] = R[i + 1] = = R[i + j 1] = F alse.
Si un tel indice n'existe pas, l'algorithme renvoie -1

Algorithme 5
Donnes
Rsultat

Par exemple en reprenant l'exemple cidessus de tableau de rservations, pour la donne j = 6 l'algorithme
renvoie -1, pour la donne j = 2 l'algorithme renvoie 3 et pour la donne j = 1 l'algorithme renvoie 1.
crivez l'algorithme et donnez sa complexit en fonction de n et de j .
(4 points) La seconde stratgie pour une rservation de j jours conscutifs choisit le plus petit
emplacement de taille au moins n. Si plusieurs possibilits existent on choisit le premier emplacement. Par exemple
avec cette stratgie une demande de rservation de 3 jours sera place au premier emplacement de 3 jours, celui
commenant la date 9.
Question 10.

: dbutReserv2(d R[1..n] : Tableau de boolens, d j :entier) : entier


: R est un tableau de boolens, j est un entier strictement positif
: Renvoie la date de dbut du plus petit intervalle d'au moins j emplacements libres. Si plusieurs
emplacements conviennent, l'algorithme renvoie la date de dbut du premier d'entre eux. Si
aucun emplacement de taille au moins j n'existe, l'algorithme renvoie -1.

Algorithme 6
Donnes
Rsultat

En reprenant l'exemple cidessus, pour la donne j = 6 l'algorithme renvoie -1, pour la donne j = 4 l'algorithme
renvoie 3 et pour la donne j = 2 l'algorithme renvoie 9.
crivez l'algorithme et donnez sa complexit en fonction de n et de j .

Anda mungkin juga menyukai