IG2I Année scolaire 2010/2011 Devoir Surveillé (sans documents) Structure de Données & Algorithmique Enseignant : Samir EL KHATTABI Durée : 2 heures Exercice 1 : Complexité Question n°1 : Reportez vos réponses sur le QCM fourni en annexe et n’oubliez de le joindre à votre copie. Question n°2 Considérons la fonction définie ci-dessous : double P(double x, int n) { if (n == 0) return 1; if (n == 1) return x; if (n % 2 == 0) return P(x*x, n/2); return x * P(x*x, n/2); } a. Que calcule cette fonction ? b. Établir la relation de récurrence exprimant le coût de cette fonction en nombre de multiplications dans le cas le plus favorable. En déduire la complexité dans ce cas. c. Établir la relation de récurrence exprimant le coût de cette fonction en nombre de multiplications dans le cas le plus défavorable. En déduire la complexité dans ce cas. d. En déduire la complexité dans tous les cas. Exercice 2 : Arbre Binaire de Recherche Question n°1 Représentez graphiquement l’arbre binaire de recherche obtenu après l’ajout, dans cet ordre, de toutes les valeurs suivantes : ‘P’, ‘S’, ‘H’, ‘F’, ‘M’, ‘X’, ‘I’. Question n°2 Écrire la (les) déclaration(s) de type(s) permettant de définir les noeuds ainsi que les pointeurs sur les noeuds d’un ABR contenant des caractères alphabétiques. Question n°3 Quelle est la hauteur minimale, ainsi que la hauteur maximale d’un arbre binaire formé de n noeuds ? Question n°4 En utilisant la définition du type noeud établie à la question n°2, écrire de façon itérative la fonction qui retourne la valeur du plus petit caractère alphabétique contenu dans un arbre de recherche non vide ; la valeur d’un caractère est son code ASCII : ‘A’ = 65, ‘B’ = 66, ‘a’ = 97, ‘b’ = 98, … IG2I/DS Structure de Données & Algorithmique (2010/2011) -1- Question n°5 En effectuant un parcours RGD puis un parcours GRD d’un ABR, développer deux versions d’une fonction qui fournit comme résultat, le nombre de valeurs paires présentes dans un arbre binaire. Question n°6 Ecrire une fonction int estIsomorphe(T_ABR a, T_ABR b) qui revoie 1 si a est isomorphe avec b, 0 sinon. a est isomorphe avec b si toutes les valeurs présentes dans a et seulement les valeurs de a sont présentes dans b (et vice versa). Exercice 3 : AVL Question n°1 Détaillez les opérations mises en jeu lors de l’ajout de la valeur 2, dans l’arbre AVL ci-dessous (figures et commentaires nécessaires): 8 6 12 4 Question n°2 Détaillez les opérations mises en jeu lors de l’ajout de la valeur 5, dans l’arbre AVL ci-dessous (figures et commentaires nécessaires): 8 6 12 4 Question n°3 Ecrire une fonction qui permet de supprimer un nœud dans un AVL. IG2I/DS Structure de Données & Algorithmique (2010/2011) -2- Exercice 4 : TAS Question n°1 Représentez graphiquement l’arbre partiellement ordonné (maximier) correspondant à une table dont les valeurs sont rangées dans cet ordre : 18, 16, 9, 15, 5, 5, 8, 3 Question n°2 Complétez la définition de la macro-fonction précisant si le noeud rangé en position i d’un tableau de n éléments représentant un maximier, est un noeud interne. #define est1noeudInterne(i, n) Question n°3 En utilisant les macro-fonctions FilsG(i), FilsD(i), supposées déjà écrites, écrire la fonction permettant d’afficher, selon un parcours RGD, les valeurs présentes dans un maximier de taille n, à partir d’une position i donnée. void afficherRGD(int T[], int i, int n) { } Question n°4 Ecrire une fonction qui permet de supprimer un nœud dans un TAS. Exercice 5 : Graphes Question n°1 Donnez la matrice d’adjacence du graphe ci-dessous : 0 3 2 3 1 2 1 2 1 5 4 1 3 Question n°2 Pour le graphe ci-dessus indiquez dans quel ordre seront visités les noeuds du graphe lors d’un parcours en profondeur d’abord démarrant au noeud n°0. LES REPONSES DOIVENT ETRE JUSTIFIEES et SANS AMBIGUITE UN SOIN PARTICULIER DOIT ETRE APPORTE A VOTRE COPIE, IL EN SERA TENU COMPTE DANS LA NOTATION. BON TRAVAIL. IG2I/DS Structure de Données & Algorithmique (2010/2011) -3- CETTE ANNEXE EST A COMPLETER AVEC VOS REPONSES ET A RENDRE AVEC VOTRE COPIE Nom : Prénom : DS SDA2 Pour chaque question du QCM, les notes possibles sont : -2 ; -1 ; 0 ; 1 ; 2 ; et 3 selon le barème suivant : Réponse(s) correcte(s) et complète(s) +3 points Absence de réponse -2 points Réponse(s) incorrectes et/ou incomplètes +1 point/rép. correcte -1 point/rép. fausse ou absente Ce qui donne un total de 30, qui sera rapporté à l’échelle d’une note globale sur 3 points. Pour chaque question ci-dessous, cocher la ou les propositions correctes. Question Proposition A Proposition B Proposition C La complexité du tri par insertion est en … En analyse d’algorithme, l’opération de base d’un tri est … □ Θ(log n) □ Ω(n2) □ O(n2) □ la comparaison d’un élément du tableau à un autre élément □ la comparaison de l’indice d’un élément au nombre d’éléments □ l’échange de deux éléments □ ≥ 10 N □ ≈ N+7 □ N+100 □ Ω(n) □ Θ(n2) □ O(n2) □ Θ(n2) □ Θ(n log n) □ O(n log n) □ optimal. □ en Θ(n log n) □ en O(log n) x∈ℝ, ┌x┐ représente… □ la valeur absolue de x □ la partie entière de x 8 x∈ℝ+, └x┘ représente… 9 Le tri fusion a un coût en n log n … □ le plus grand entier inférieur à x □ en moyenne 10 L’interclassement de deux séquences ordonnées de n/2 éléments pour former une seule séquence ordonnée de n éléments, nécessite… □ le plus petit entier supérieur à x □ dans le cas le plus favorable □ le plus petit entier supérieur à x □ la partie entière de x □ au moins n/2 comparaisons □ au plus log n comparaisons 1 2 3 4 5 6 7 Un programme dont la complexité est en Θ(2N) résout en 1 h un problème de taille N sur un ordinateur M1, quelle taille de problème pourra-t-on traiter, avec le même programme exécuté sur un ordinateur M2,100 fois plus rapide… La complexité du tri par sélection est en … La complexité d’un traitement composé d’une opération P dont le coût est en Θ(n log n), suivie d’une opération Q dont le coût est en Θ(n2), est en … L’algorithme d’exponentiation rapide (calcul de xn) présenté lors du cours est : IG2I/DS Structure de Données & Algorithmique (2010/2011) □ dans le cas le plus défavorable □ au plus n comparaisons -4- Note