l Listes chainees - Mikolaj Pawlikowski. Portfolio

publicité
L2-FLIN301- Algorithmiąue et Structures de Donnees
- Examen Session l -
Janvier 2009
Lisez attentwement le sujet avant de rediger et de poser une guestion.
Vous pouvez utiliser un algorithme vu en cours. Dans ce cas inutile de redonner ni le corps de l 'algorithme, ni
ses specifications.
Vous pouvez utiliser un algorithme vu en TD ou en TP. Dans ce cas inutile de redonner le corps de l'algorithme,
par contre vous devez rappeler ses specifications.
l
Listes chainees
Question l (5 points)
Algorithme l : HValCommunes(d LI : ListeSC, d L2 : ListeSC) :ListeSC
Donnees : LI et LI sont 2 listes simplement chainees; les elements de LI et L2 sont tries par valeur
strictement croissante
Resultat : renvoie une nouvelle listę triee par valeur stictement croissante; les valeurs des elements de
cette listę sont les valeurs communes a LI et LI; les listes LI et L2 ne sont pas modifiees.
La figurę ci-dessous illustre cette operation.
Donnez deux algorithmes pour l 'operation HValCommunes : un algorithme recursif et un algorithme iteratif.
Donnez la complexite de chacun de ces algorithmes.
Question 2 (3 points) Donnez un algorithme qui etant donnę 2 listes simplement chainees supprime de ces listes
les elements dont les valeurs sont communes aux 2 listes. Vous donnerez la complexite de votre algorithme.
Algorithme 2 : oterElemCommun(dr LI : Listę; dr Z/2 .' Listę)
Donnees : LI et LI sont 2 listes simplement chainees; les elements de LI et LI sont tries par valeur
strictement croissante
Resultat : Modifie les listes LI et L2 en supprimant de LI les elements dont la valeur est l'une des valeurs
de LI et en supprimant de L2 les elements dont la valeur est l'une des valeurs de LI; cet
algorithme ne doit creer aucune nouvelle cellule.
La figurę ci-dessous illustre cette operation :
2
Arbres
CJuestion 3 (l point) A guels intervalles doivent appartenir les etiąuettes X et Y pour que dans la figurę cidessous l'arbre A soit un arbre binaire de recherche et que l'arbre B soit un Tas binaire ?
20
24
29
20
L2-FLIN301- Algońthmiąue et Structures de Donnees
- Examen Session l -
Janvier 2009
Question 4 (3 points)
Algorithme 3 : UEtiqFeuilles(d A : Arbre binaire ) : listę
Donnees : A est un arbre binaire
Resultat : renvoie la listę simplement chalnee composee des etiguettes des feuilles de A.
La figurę ci-dessous illustre la ąuestion
Donnez un algorithme pour HEtiąFeuilles. Si pour cette ąuestion vous utilisez une operation de concatenation
de listes, precisez ses specifications.
Exceptionnellement vous ne donnerez pas la complexite de l'algorithme.
3
Tableaux
A et B etant 2 tableaux, ii s'agit de yerifier si 1'ensemble des yaleurs des elements de A est egal a 1'ensemble des
yaleurs des elements de B. II ne faut pas tenir compte du nombre d'occurrences des yaleurs dans chaąue tableau.
Ainsi on diraąue A[l..n] et B[l..p] ont meme ensemble de yaleurs si et seulement si Vi € [l..n], Elj e [l..p], A[i\ = B[j]
et Vi e [l..p], 3j e [L.n], A[i] = B\j\.
^_^_^_^_^
Par exemple les tableaux l 5 l 8 l 4 l 4 6 | 4 | et l 6 5 8 l 6 l 4 ont m&ne ensemble de yaleurs.
Algorithme 4 : memeEnsemble(d A[l..n] : tableau,d B[l..p] : tableau ) : booleen
Donnees : /ł[l..n] et -B[l..p] sont deux tableaux
Resultat : Renyoie Vrai si et seulement si A et B ont meme ensemble de yaleurs.
Vous devez ecrire 2 algorithmes pour ce probleme.
Question 5 (2 points) Les donnees du premier algońthme sont deux tableaux non tries. L'algorithme ne doit pas
trier les tableaux. Ecrwez l 'algorithme et donnez są complexite.
Question 6 (3 points) Les donnees du deuxieme algorithme sont deux tableaux tries. Yotre algorithme doit ameliorer la complexite de l'algorithme precedent. Ecrwez l'algorithme et donnez są complexite.
Question 7 (3 points) Donnez un algorithme efficace pour le probleme suivant :
Algorithme 5 : somme(d T[l..n] : tableau,d Som : entier ) : booleen
Donnees : T[l..n] est un tableau d'entiers; Som est un entier
Resultat : Renvoie Vrai si et seulement si ii existe 2 elements (eventuellement identiąues) du tableau T
dont la somme est egale a Som.
Par exemple pour le tableau | 5 | 9 | 7 | 6 | 6 | 4 , si le parametre Som vaut 8 ou 12 l'algorithme renvoie Vrai.
Si la valeur du parametre Som est 5 ou 17 l'algorithme renvoie Faux. On vous demande un algorithme efficace,
c.'est a dire un algorithme dont la complexite dans le pire des cas est meilleure que O(n 2 ). Quelle est są complexite ?
Téléchargement