IFT 2015 Structures de données Professeure: Sylvie Hamel EXAMEN FINAL, lundi 15 décembre 2008 NOM: CODE PERMANENT: QUESTION 1: 20 pts QUESTION 2: 20 pts QUESTION 3: 20 pts QUESTION 4: 20 pts QUESTION 5: 10 pts QUESTION 6: 10 pts TOTAL /100 Directives 1) 2) 3) 4) Vérifiez que ce document comporte bien 18 pages. Utilisez les versos des pages comme brouillons. Examen à livre fermé i.e. aucune documentation permise. Les règles concernant le plagiat seront strictement appliquées. 1 Arbres Question 1) Arbres binaires de recherche [20 points] a) [3pts] Qu’est-ce qu’un arbre binaire de recherche? b) [5pts] On ajoute à un arbre de recherche binaire initialement vide les clés suivantes dans cet ordre: 12, 24, 2, 18, 16, 19, 20, 26 et 18. Dessinez la forme finale de l’arbre de recherche. 2 c) [5pts] On enlève à l’arbre obtenu en b) l’élément de clé 24 puis l’élément de clé 12, dans cet ordre. Dessinez les arbres obtenus après chacune des suppressions. 3 d) [7pts] Donnez le pseudocode de l’opération chercher(k) dans un arbre binaire de recherche. 4 Question 2) Arbres AVL [20 points] a) [3pts] Qu’est-ce qu’un arbre AVL? b) [5pts] On ajoute à un arbre AVL initialement vide les clés suivantes dans cet ordre: 12, 24, 2, 18, 16, 19, 20, 26 et 32. Dessinez l’arbre avant et après chaque rebalancement et l’arbre final. 5 6 c) [5pts] On enlève à l’arbre obtenu en b) l’élément de clé 20 puis l’élément de clé 18, dans cet ordre. Dessinez les arbres obtenus après chacune des suppressions (et rebalancement si nécessaire). 7 d) [7pts] Choissisez un événement de débalancement, dessinez-le et donnez le pseudocode de la reconstruction. 8 Question 3) Arbres (2,4) [20 points] a) [4pts] Qu’est-ce qu’un arbre (2,4)? b) [5pts] On ajoute à un arbre (2,4) initialement vide les clés suivantes dans cet ordre: 12, 24, 2, 18, 16, 19, 20, 26, 4, 10 et 8. Dessinez l’arbre avant et après chaque débordement/fractionnement et l’arbre final. 9 10 c) [5pts] On enlève à l’arbre obtenu en b) l’élément de clé 16 puis l’élément de clé 26 puis l’élément de clé 19, dans cet ordre. Dessinez les arbres obtenus après chacune des suppressions (et fusion ou transfert si nécessaire). 11 d) [3pts] Donnez un arbre (2,4) équivalent à l’arbre rouge-noir suivant: 62 16 44 10 2 17 78 22 15 17 48 65 54 45 20 21 e) [3pts] Donnez un arbre rouge-noir équivalent à l’arbre (2,4) suivant: 8 24 1 5 12 9 16 28 Graphes Question 4) [20 points] Supposons qu’un graphe non-orienté G soit représenté par la liste d’adjacences suivante: Sommet 1 2 3 4 5 6 7 8 9 Sommets adjacents 2,3,4,8 1,5,6 1,5 1,5,7 2,3,4,6,7 2,5,9 4,5 1 6 a) [2pts] Dessinez le graphe G 13 b) [5pts] Donnez, dans l’ordre de visite, la séquence des sommets visités lors d’un parcours en profondeur de G (Depth-first search) à partir du sommet a. Dessinez le graphe G avec les arêtes sélectionnées par l’algorithme en ligne pleine et les arêtes non sélectionnées en trait pointillé. Ordre de sélection des sommets: Graphe: c) [5pts] Donnez, dans l’ordre de visite, la séquence des sommets visités lors d’un parcours en largeur de G (Breadth-first search) à partir du sommet a. Dessinez le graphe G avec les arêtes sélectionnées par l’algorithme en ligne pleine et les arêtes non sélectionnées en trait pointillé. Ordre de sélection des sommets: Graphe: 14 d) [8pts] Donnez le pseudo-code d’un algorithme permettant de trouver le plus court chemin entre un sommet et tous les autres sommets du graphe. Quel est la complexité de votre algorithme et pourquoi? 15 Question 5) [10 points] a) [5pts] Que calcule l’algorithme de Kruskal et quel est la complexité de l’algorithme et pourquoi? b) [5pts] Décrivez le déroulement de l’algorithme sur le graphe suivant en dessinant chaque étape de sélection. (Votre dernier graphe devrait contenir les arêtes sélectionnées en ligne pleine et les arêtes non sélectionnées en trait pointillé). 16 17 Question 6) [10 points] a) [5pts] Trouver un ordre topologique pour les sommets du graphe qui suit. c b g a h d f e b) [5pts] Dans quel cas l’algorithme utilisé en a) ne trouve-t-il pas de solutions? 18