IF111 - Algorithmique et structures de données-EI2 Exercice 1 Soit T un tableau d’entiers de taille n, le rang d’une case i de T est définie comme la somme des valeurs des cases de i à n de T . Par exemple, soit T = {3, 5, 2}, le rang de T [1] = 10, le rang de T [2] = 7 et le rang de T [3] = 2. 1. Ecrire un algorithme recursif qui pour un tableau donné, modifie chaque case du tableau avec le rang correspondant. Par exemple, pour le tableau T = {3, 5, 2} on veut obtenir le tableau T = {10, 7, 2}. 2. Ecrire la récurrence correspondante au nombre d’additions faites par l’algorithme sur un tableau de taille n. Résoudre la récurrence avec la Méthode iterative. Exercice 2 Soit E une suite de n éléments rangés dans un tableau E[1..n]. On dit qu’un élément x ∈ E est majoritaire si le cardinal de l’ensemble Ex ={y ∈ E tel que y = x} est strictement plus de n2 . On supposera que n est une puissance de 2. On suppose que la seule opération qu’on sait effectuer sur les éléments du tableau est de lire la valeur d’un élément et de vérifier si deux éléments sont égaux ou non. 1. Écrire un algorithme itératif pour vérifier si E possède un élément majoritaire. L’algorithme retourne la couple (x, cx ) si x est l’ élément majoritaire avec cx occurrences et la couple (−, 0) autrement. Quelle est le nombre de comparaisons à faire dans le pire des cas? 2. En s’appuyant sur la technique diviser pour regner, donner un algorithme récursif basé sur un découpage de E en deux sous-tableaux de même taille. L’algorithme M ajoritaire(E, i, j) retourne la couple (x, cx ) si x est l’ élément majoritaire avec cx occurrences dans le (sous)tableau E[i..j] et la couple (−, 0) autrement. L’appel initial sera M ajoritaire(E, 1, n). L’algorithme utilisera un algorithme Occurence(E, x, i, j) qui retourne le nombre d’occurence de x dans le (sous)tableau E[i, j]. Donner le nombre de comparaisons faites par l’algorithme pour un tableau de taille n. L’algorithme Occurence(E, x, i, j) éxécute un nombre de comparaisons linéaire dans la taille du tableau E[i, j]. gruppo 1 deve ancora calcolare la complessità e la recurrence. Exercice 3 Résoudre les récurrences suivantes en appliquant la méthode générale. 1. T (n) = 4T (n/2) + n, T (1) = 1 2. T (n) = 4T (n/2) + n2 , T (1) = 1 1 Exercice 4 Appliquer l’algorithme de tri par fusion pour trier la séquence E, X, A, M, P, L, E en ordre alphabetique. 2