La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours d’Algorithmique

Présentations similaires


Présentation au sujet: "Cours d’Algorithmique"— Transcription de la présentation:

1 Cours d’Algorithmique
Marc Gengler Alexandra Bac - Henry Kanoui - Alain Samuel 24h de cours 24h de TD des devoirs un projet … et un examen 6 novembre 2006 Cours d'algorithmique 1 - Intranet

2 Présentation générale
Les grandes lignes du cours Trier et chercher Listes et arbres Le back-track Arbres équilibrés Récursivité et induction sur la structure Divide and conquer Minimax Dérécursion Divers problèmes particuliers Logique de Hoare Programmation dynamique Complexité et calculabilité 6 novembre 2006 Cours d'algorithmique 1 - Intranet Cours d'algorithmique

3 Cours d'algorithmique 1 - Intranet
Bibliographie Tout ce qui contient algorithmes, algorithms. Internet souvent, c’est très (trop) simplifié, et pas toujours correct. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

4 Cours d'algorithmique 1 - Intranet
Bibliographie Tout ce qui contient algorithmes, algorithms. Internet souvent, c’est très (trop) simplifié, et pas toujours correct. Mes choix Introduction to Algorithms, Leiserson et al. Algorithms, Sedgewick. Fundamental Algorithms, Knuth. des anciens cours ;-) 6 novembre 2006 Cours d'algorithmique 1 - Intranet

5 Cours d'algorithmique 1 - Intranet
Bibliographie Tout ce qui contient algorithmes, algorithms. Internet souvent, c’est très (trop) simplifié, et pas toujours correct. D’autres choix Introduction à l’algorithmique, Leiserson et al. chez Dunod. Initiation à l’algorithmique et aux structures de données, Courtin et Kowarski. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

6 Cours d'algorithmique 1 - Intranet
L ‘ O R I G I N E D U M O T A L G O R I T H M E 6 novembre 2006 Cours d'algorithmique 1 - Intranet

7 Cours d'algorithmique 1 - Intranet
Al Khwarizmi Célèbre mathématicien à Bagdad, vers 6 novembre 2006 Cours d'algorithmique 1 - Intranet

8 Cours d'algorithmique 1 - Intranet
Al Khwarizmi Célèbre mathématicien à Bagdad, vers « Kitâb al-jabr wa al-muqâbala ». Livre sur la science de la transposition et de la réduction : résolution systématique de l’équation du second degré. Traduit en latin au 12e siècle par Gherardo di Cremona sous le titre « Dixit Algorismi ». 6 novembre 2006 Cours d'algorithmique 1 - Intranet

9 Cours d'algorithmique 1 - Intranet
Al Khwarizmi Célèbre mathématicien à Bagdad, vers « Kitâb al-jabr wa al-muqâbala ». Livre sur la science de la transposition et de la réduction : résolution systématique de l’équation du second degré. Traduit en latin au 12e siècle par Gherardo di Cremona sous le titre « Dixit Algorismi ». Aussi : « Kitâb al Jami wa al Tafriq bi Hisab al Hind ». Livre de l'addition et de la soustraction d'après le calcul des indiens. http ://trucsmaths.free.fr/alkhwarizmi.htm 6 novembre 2006 Cours d'algorithmique 1 - Intranet

10 Cours d'algorithmique 1 - Intranet
Al Khwarizmi X^2 + 8 * x = 33 2 * X X^2 6 novembre 2006 Cours d'algorithmique 1 - Intranet

11 Cours d'algorithmique 1 - Intranet
Al Khwarizmi 16 + X^2 + 8 * X = ( X + 4 )^2 = 7^2 4 2 * X X^2 6 novembre 2006 Cours d'algorithmique 1 - Intranet

12 Cours d'algorithmique 1 - Intranet
D I V E R S A L G O R I T H M E S D E T R I 6 novembre 2006 Cours d'algorithmique 1 - Intranet

13 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Les hypothèses : Tableau d’entrées 0 à n-1. Entiers naturels, mais n’importe quel ensemble ordonné peut convenir. Les répétitions sont possibles. Le but : Ordonner le tableau par valeurs non décroissantes. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

14 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Les hypothèses : Tableau d’entrées 0 à n-1. Entiers naturels, mais n’importe quel ensemble ordonné peut convenir. Les répétitions sont possibles. Le but : Nous trions pour accélérer les recherches ! Ordonner le tableau par valeurs non décroissantes. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

15 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Quelle relation d’ordre ? En général, l’ordre est imposé par le monde extérieur. Je peux trier des personnes : d’après l’âge, d’après le poids, d’après la taille, d’après l’ordre lexicographique des patronymes, . . . 6 novembre 2006 Cours d'algorithmique 1 - Intranet

16 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Situation initiale Valeurs n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

17 les indices et les valeurs !
Les tris sur tableaux Situation initiale Valeurs Pas de relation entre les indices et les valeurs ! n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

18 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Situation finale Valeurs n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

19 Une relation claire entre les indices et les valeurs !
Les tris sur tableaux Situation finale Valeurs Une relation claire entre les indices et les valeurs ! n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

20 Les tris que nous regardons en cours :
Les tris sur tableaux Les tris que nous regardons en cours : Tri par échanges. Tri par insertions. Tri bulles. Tri par fusion. D’autres tris en TD. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

21 Cours d'algorithmique 1 - Intranet
T R I P A R E C H A N G E S 6 novembre 2006 Cours d'algorithmique 1 - Intranet

22 Tri par échange --- situation intermédiaire
Les tris sur tableaux Tri par échange --- situation intermédiaire Valeurs Non triées et plus grandes Triées i-1 n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

23 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Tri par échange - suite Les hypothèses : Les entrées de 0 à i-1 sont triées. Elles sont plus petites que les entrées suivantes. Les entrées à partir de l’indice i ne sont pas triées. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

24 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Tri par échange - suite Les hypothèses : Les entrées de 0 à i-1 sont triées. Elles sont plus petites que les entrées suivantes. Les entrées à partir de l’indice i ne sont pas triées. A faire pour mettre en place l’entrée i : Chercher l’indice j du minimum à partir de i. Echanger les éléments i et j. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

25 Tri par échange --- situation intermédiaire
Les tris sur tableaux Tri par échange --- situation intermédiaire Valeurs Non triées et plus grandes Triées <- échange -> i j n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

26 Tri par échange --- situation intermédiaire
Les tris sur tableaux Tri par échange --- situation intermédiaire Valeurs Non triées et plus grandes Triées i j n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

27 Tri par échange --- propriété invariante
Les tris sur tableaux Tri par échange --- propriété invariante Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] : les éléments jusqu’à i-1 sont triés, ceux qui suivent sont plus grands, mais pas triés. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

28 Tri par échange --- propriété invariante
Les tris sur tableaux Tri par échange --- propriété invariante Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] : les éléments jusqu’à i-1 sont triés, ceux qui suivent sont plus grands, mais pas triés. Nous retrouvons la même situation sur l’intervalle [ 0 .. i ] : les éléments jusqu’à i sont triés, 6 novembre 2006 Cours d'algorithmique 1 - Intranet

29 Les tris sur tableaux -----------------------------------------------------------------
Tri par échange --- propriété invariante Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] : les éléments jusqu’à i-1 sont triés, ceux qui suivent sont plus grands, mais pas triés. Nous retrouvons la même situation sur l’intervalle [ 0 .. i ] : les éléments jusqu’à i sont triés, Cette propriété est donc invariante avec i, on l’appelle un invariant 6 novembre 2006 Cours d'algorithmique 1 - Intranet

30 Tri par échange --- le code
Les tris sur tableaux Tri par échange --- le code for ( i=0 ; i<n-1 ; i++ ) {ind_min = i; for ( j=i+1 ; j<n ; j++ ) if ( t[j] < t[ind_min] ) ind_min = j; aux = t[i]; t[i] = t[ind_min]; t[ind_min] = aux; } 6 novembre 2006 Cours d'algorithmique 1 - Intranet

31 Tri par échange --- le code
Les tris sur tableaux Tri par échange --- le code Fini si i == n-1 ! for ( i=0 ; i<n-1 ; i++ ) {ind_min = i; for ( j=i+1 ; j<n ; j++ ) if ( t[j] < t[ind_min] ) ind_min = j; aux = t[i]; t[i] = t[ind_min]; t[ind_min] = aux; } 6 novembre 2006 Cours d'algorithmique 1 - Intranet

32 Tri par échange --- le code
Les tris sur tableaux Tri par échange --- le code Fini si i == n-1 ! for ( i=0 ; i<n-1 ; i++ ) {ind_min = i; for ( j=i+1 ; j<n ; j++ ) if ( t[j] < t[ind_min] ) ind_min = j; aux = t[i]; t[i] = t[ind_min]; t[ind_min] = aux; } En effet, il nous reste une seule valeur qui est plus grande que les valeurs précédentes ! 6 novembre 2006 Cours d'algorithmique 1 - Intranet

33 Tri par échange --- le code
Les tris sur tableaux Tri par échange --- le code for ( i=0 ; i<n-1 ; i++ ) {ind_min = i; for ( j=i+1 ; j<n ; j++ ) if ( t[j] < t[ind_min] ) ind_min = j; aux = t[i]; t[i] = t[ind_min]; t[ind_min] = aux; } Chercher l’indice du plus petit. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

34 Tri par échange --- le code
Les tris sur tableaux Tri par échange --- le code for ( i=0 ; i<n-1 ; i++ ) {ind_min = i; for ( j=i+1 ; j<n ; j++ ) if ( t[j] < t[ind_min] ) ind_min = j; aux = t[i]; t[i] = t[ind_min]; t[ind_min] = aux; } Echange, même si i == ind_min. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

35 Tri par échange --- la complexité
Les tris sur tableaux Tri par échange --- la complexité Ont fait n-1 fois, pour i de 0 à n-2 : Un parcours de [i..n-1]. Il y a donc un nombre de lectures qui vaut : S (n-i) = 0 (n^2) i=0..n-2 Tri en complexité quadratique. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

36 Cours d'algorithmique 1 - Intranet
T R I P A R I N S E R T I O N 6 novembre 2006 Cours d'algorithmique 1 - Intranet

37 Tri par insertion --- situation intermédiaire
Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs Non triées et quelconques Triées i-1 n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

38 Tri par insertion - suite
Les tris sur tableaux Tri par insertion - suite Les hypothèses : Les entrées de 0 à i-1 sont triées. Elles sont plus petites que les entrées suivantes. Les entrées à partir de l’indice i ne sont pas triées. //////////////////////////////////////////// 6 novembre 2006 Cours d'algorithmique 1 - Intranet

39 Tri par insertion - suite
Les tris sur tableaux Tri par insertion - suite Les hypothèses : Les entrées de 0 à i-1 sont triées. Elles sont plus petites que les entrées suivantes. Les entrées à partir de l’indice i ne sont pas triées. //////////////////////////////////////////// A faire pour mettre en place l’entrée i : Si elle est plus grande que les précédentes : RIEN ! Si elle est plus petite que certaines précédentes : l’insérer plus à gauche en décalant d’autres entrées. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

40 Tri par insertion --- situation intermédiaire
Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs Non triées et quelconques Plus grande : Rien à faire ! Triées i-1 n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

41 Tri par insertion --- situation intermédiaire
Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs Non triées et quelconques Plus grande : Rien à faire ! Triées i-1 n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

42 Tri par insertion --- situation intermédiaire
Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs Non triées et quelconques Triées i-1 n-1 Plus petit : L’insérer à gauche. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

43 Tri par insertion --- situation intermédiaire
Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs Non triées et quelconques Triées i n-1 Plus petit : L’insérer à gauche. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

44 Tri par insertion --- situation intermédiaire
Les tris sur tableaux Tri par insertion --- situation intermédiaire Vous avez vu qu’il y a à nouveau un INVARIANT ? Lequel est-ce ?????????????????? 6 novembre 2006 Cours d'algorithmique 1 - Intranet

45 Tri par insertion --- situation intermédiaire
Les tris sur tableaux Tri par insertion --- situation intermédiaire Vous avez vu qu’il y a à nouveau un INVARIANT ? Lequel est-ce ?????????????????? Les éléments déjà traités sont triés, les autres sont dans le désordre et sans rapport particulier (ni plus grands, ni plus petits) aux premiers. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

46 Tri par insertion --- le code
Les tris sur tableaux Tri par insertion --- le code for ( i=1 ; i<n ; i++ ) {cont = 1; j = i; while ( j>0 && cont ) {if ( t[j] < t[j-1] ) echange(t, j-1, j); else cont = 0; j--; } } 6 novembre 2006 Cours d'algorithmique 1 - Intranet

47 Tri par insertion --- le code
Les tris sur tableaux Tri par insertion --- le code Pour tous, sauf le premier qui est forcément à sa place … for ( i=1 ; i<n ; i++ ) {cont = 1; j = i; while ( j>0 && cont ) {if ( t[j] < t[j-1] ) echange(t, j-1, j); else cont = 0; j--; } } 6 novembre 2006 Cours d'algorithmique 1 - Intranet

48 Tri par insertion --- le code
Les tris sur tableaux Tri par insertion --- le code for ( i=1 ; i<n ; i++ ) {cont = 1; j = i; while ( j>0 && cont ) {if ( t[j] < t[j-1] ) echange(t, j-1, j); else cont = 0; j--; } } On échange aussi longtemps que le prédécesseur existe et qu’il est plus grand que l’élément en question. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

49 Tri par insertion --- le code
Les tris sur tableaux Tri par insertion --- le code for ( i=1 ; i<n ; i++ ) {cont = 1; j = i; while ( j>0 && cont ) {if ( t[j] < t[j-1] ) echange(t, j-1, j); else cont = 0; j--; } } On arrête les échanges dès que le prédécesseur est au plus aussi grand que l’élément en question. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

50 Tri par insertion --- la complexité
Les tris sur tableaux Tri par insertion --- la complexité Ont fait n-1 fois, pour i de 1 à n-1 : Jusqu’à i échanges au maximum (peut-être moins). Le nombre d’échanges peut donc atteindre : S i = 0 (n^2) i=1..n-1 Tri en complexité quadratique. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

51 Cours d'algorithmique 1 - Intranet
T R I P A R B U L L E S 6 novembre 2006 Cours d'algorithmique 1 - Intranet

52 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Tri bulle Valeurs Situation anormale : Une bulle Situation normale n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

53 Tri bulle : on échange l’ordre dans la bulle
Les tris sur tableaux Tri bulle : on échange l’ordre dans la bulle Valeurs La bulle a disparu par échange Situation normale n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

54 Tri bulle - principe des algorithmes
Les tris sur tableaux Tri bulle - principe des algorithmes L’idée : Tant qu’il y a des bulles, on en choisit une et on la fait monter. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

55 Tri bulle : évolution des bulles
Les tris sur tableaux Tri bulle : évolution des bulles Valeurs n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

56 Tri bulle - principe des algorithmes
Les tris sur tableaux Tri bulle - principe des algorithmes L’idée : Tant qu’il y a des bulles, on en choisit une et on la fait monter. De nombreuses optimisations : Suivre une bulle et la faire monter aussi haut que possible. Si au dernier passage la première bulle était ( i , i+1 ) , il ne peut y avoir de bulle avant ( i-1 , i ) au passage courant. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

57 Tri bulle : évolution des bulles
Les tris sur tableaux Tri bulle : évolution des bulles Valeurs Régions qui peuvent être ignorées lors du prochain passage. n-1 6 novembre 2006 Cours d'algorithmique 1 - Intranet

58 Tri bulle - principe des algorithmes
Les tris sur tableaux Tri bulle - principe des algorithmes L’idée : Tant qu’il y a des bulles, on en choisit une et on la fait monter. De nombreuses optimisations : Suivre une bulle et la faire monter aussi haut que possible. Si au dernier passage la première bulle était ( i , i+1 ) , il ne peut y avoir de bulle avant ( i-1 , i ) au passage courant. Faire alternativement monter et descendre des bulles. … et puis d’autres trucs ! 6 novembre 2006 Cours d'algorithmique 1 - Intranet

59 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Tri bulle - complexité Le tri bulle a une complexité quadratique, car il existe des instances pour lesquels il faut 0 (n^2) échanges. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

60 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Tri bulle - complexité Le tri bulle a une complexité quadratique, car il existe des instances pour lesquels il faut 0 (n^2) échanges. Par contre, pour de nombreuses instances, le nombre des échanges est bien plus petit. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

61 Cours d'algorithmique 1 - Intranet
Les tris sur tableaux Tri bulle - complexité Le tri bulle a une complexité quadratique, car il existe des instances pour lesquels il faut 0 (n^2) échanges. Par contre, pour de nombreuses instances, le nombre des échanges est bien plus petit. Le tri bulle est bien adapté, comme d’autres tris, pour rétablir l’ordre dans un tableau presque trié (léger désordre produit par quelques insertions d’éléments par exemple). 6 novembre 2006 Cours d'algorithmique 1 - Intranet

62 Cours d'algorithmique 1 - Intranet
D I F F E R E N T E S N O T I O N S D E C O M P L E X I T E 6 novembre 2006 Cours d'algorithmique 1 - Intranet

63 Différentes notions de complexité
Les tris sur tableaux Différentes notions de complexité Complexité du meilleur cas : inintéressante, car ce n’est pas le cas typique. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

64 Différentes notions de complexité
Les tris sur tableaux Différentes notions de complexité Complexité du meilleur cas : inintéressante, car ce n’est pas le cas typique. Complexité du cas moyen : intéressante, mais difficile à établir, est-ce que mes instances du problème sont dans la moyenne ? 6 novembre 2006 Cours d'algorithmique 1 - Intranet

65 Différentes notions de complexité
Les tris sur tableaux Différentes notions de complexité Complexité du meilleur cas : inintéressante, car ce n’est pas le cas typique. Complexité du cas moyen : intéressante, mais difficile à établir, est-ce que mes instances du problème sont dans la moyenne ? Complexité du pire cas : donne une limite supérieure pour le nombre d’opérations, celle-ci peut être atypique, souvent assez facile à calculer, mais, c’est la COMPLEXITE utilisée PAR DEFAUT. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

66 Cours d'algorithmique 1 - Intranet
T R I P A R F U S I O N 6 novembre 2006 Cours d'algorithmique 1 - Intranet

67 Principe du tri par fusion
Les tris sur tableaux Principe du tri par fusion Couper le tableau en deux (mentalement et de façon non violente), trier récursivement chaque partie et fusionner les deux parties triées (cf. cours d’Introduction à la programmation). 6 novembre 2006 Cours d'algorithmique 1 - Intranet

68 Principe du tri par fusion
Les tris sur tableaux Principe du tri par fusion 6 novembre 2006 Cours d'algorithmique 1 - Intranet

69 Principe du tri par fusion
Les tris sur tableaux Principe du tri par fusion Tri récursif des deux moitiés. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

70 Principe du tri par fusion
Les tris sur tableaux Principe du tri par fusion Tri récursif des deux moitiés. Fusion des deux suites. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

71 Complexité du tri par fusion
Les tris sur tableaux Complexité du tri par fusion Soit f(n) la fonction de complexité pour trier n éléments. Le découpage se fait en temps constant ou 0( n ), s’il y a copie. Les deux appels récursifs nécessitent 2 * f( n/2 ). La fusion se fait en 0( n ). 6 novembre 2006 Cours d'algorithmique 1 - Intranet

72 Complexité du tri par fusion
Les tris sur tableaux Complexité du tri par fusion Soit f(n) la fonction de complexité pour trier n éléments. Le découpage se fait en temps constant ou 0( n ), s’il y a copie. Les deux appels récursifs nécessitent 2 * f( n/2 ). La fusion se fait en 0( n ). Donc f(n) = 0(n) + 2 * f(n/2) = 0(n) + 2 * ( 0(n/2) + 2 * f(n/4) ) = 2 * 0(n) + 2^2 * f(n/2^2) = 3 * 0(n) + 2^3 * f(n/(2^3)) = k * O(n) + 2^k * f(n/(2^k)) = 0(n * log n) + 2^(log n) * f(n/(2^(log n))) = 0(n * log n) car f(n/(2^(log n))) = f(1) = 0 Tri en complexité n log n. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

73 Cours d'algorithmique 1 - Intranet
R E C H E R C H E D A N S D E S T A B L E A U X T R I E S 6 novembre 2006 Cours d'algorithmique 1 - Intranet

74 Cours d'algorithmique 1 - Intranet
Recherche dans des tableaux triés On utilise l’ordre pour anticiper l’abandon dans une recherche linéaire, guider la recherche : recherche par dichotomie. (n-1)/2 n-1 petit moyen grand X < moyen X 6 novembre 2006 Cours d'algorithmique 1 - Intranet

75 Cours d'algorithmique 1 - Intranet
Recherche dans des tableaux triés On utilise l’ordre pour anticiper l’abandon dans une recherche linéaire, guider la recherche : recherche par dichotomie. (n-1)/2 n-1 petit moyen grand X < moyen Oui ! Chercher X dans [ 0 .. (n-1)/2- 1 ] X 6 novembre 2006 Cours d'algorithmique 1 - Intranet

76 Cours d'algorithmique 1 - Intranet
Recherche dans des tableaux triés On utilise l’ordre pour anticiper l’abandon dans une recherche linéaire, guider la recherche : recherche par dichotomie. (n-1)/2 n-1 petit moyen grand X < moyen Oui ! Chercher X dans [ 0 .. (n-1)/2- 1 ] Non ! Chercher X dans [ (n-1)/2 .. n-1 ] X 6 novembre 2006 Cours d'algorithmique 1 - Intranet

77 Recherche par dichotomie - complexité
Recherche dans des tableaux triés Recherche par dichotomie - complexité 1 test -> n/2 éléments. 2 tests -> n/4 éléments. 0( log n) tests -> 1 élément. Est-ce bien lui ? Donc un test en plus. Il existe des arguments théoriques (théorie de l’information) qui montrent que l’on ne peut pas faire mieux. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

78 Cours d'algorithmique 1 - Intranet
Recherche dans des tableaux triés d = 0; f = n-1; While ( d < f ) if ( d == f-1 ) if ( x == t[d] ) f = d; else d = f; {m = (d+f)/2; if ( x < t[m] ) f = m-1; d = m; } Return ( x == t[d] ); Initialisation. Intervalle de 2 éléments. Cas général. Résultat. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

79 Di-chotomie - Tri-chotomie - etc.
Recherche dans des tableaux triés Di-chotomie - Tri-chotomie - etc. Di-chotomie : 1 test -> 2 intervalles de n/2 éléments. Donc, 1 * log_2 (n) + 1 tests. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

80 Di-chotomie - Tri-chotomie - etc.
Recherche dans des tableaux triés Di-chotomie - Tri-chotomie - etc. Di-chotomie : 1 test -> 2 intervalles de n/2 éléments. Donc, 1 * log_2 (n) + 1 tests. Tri-chotomie : 2 tests -> 3 intervalles de n/3 éléments. Donc, 2 * log_3(n) + 1 tests. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

81 Di-chotomie - Tri-chotomie - etc.
Recherche dans des tableaux triés Di-chotomie - Tri-chotomie - etc. Di-chotomie : 1 test -> 2 intervalles de n/2 éléments. Donc, 1 * log_2 (n) + 1 tests. Tri-chotomie : 2 tests -> 3 intervalles de n/3 éléments. Donc, 2 * log_3(n) + 1 tests. K-chotomie : k-1 tests -> k intervalles de n/k éléments. Donc, (k-1) * log_k(n) + 1 tests. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

82 Di-chotomie - Tri-chotomie - etc.
Recherche dans des tableaux triés Di-chotomie - Tri-chotomie - etc. Di-chotomie : 1 test -> 2 intervalles de n/2 éléments. Donc, 1 * log_2 (n) + 1 tests. Tri-chotomie : 2 tests -> 3 intervalles de n/3 éléments. Donc, 2 * log_3(n) + 1 tests. K-chotomie : k-1 tests -> k intervalles de n/k éléments. Donc, (k-1) * log_k(n) + 1 tests. Optimal si k = 2 ! ! ! 6 novembre 2006 Cours d'algorithmique 1 - Intranet

83 Cours d'algorithmique 1 - Intranet
Soyons critiques ! Tableau trié : Recherche efficace  Insertions et suppressions pénibles  6 novembre 2006 Cours d'algorithmique 1 - Intranet

84 Cours d'algorithmique 1 - Intranet
Soyons critiques ! Tableau trié : Recherche efficace  Insertions et suppressions pénibles  Liste triée : Insertions et suppressions efficaces  Recherche pénible  6 novembre 2006 Cours d'algorithmique 1 - Intranet

85 Cours d'algorithmique 1 - Intranet
Soyons critiques ! Tableau trié : Recherche efficace  Insertions et suppressions pénibles  Liste triée : Insertions et suppressions efficaces  Recherche pénible  Hashage sur tableaux & arbres de recherche équilibrés : Toutes les opérations sont efficaces   6 novembre 2006 Cours d'algorithmique 1 - Intranet

86 Cours d'algorithmique 1 - Intranet
H A S H A G E 6 novembre 2006 Cours d'algorithmique 1 - Intranet

87 Cours d'algorithmique 1 - Intranet
Hashage H : Eléments à stocker Indices d’un tableau INSEE(Marc Gengler) … Attention, certaines cases du tableau contiennent des valeurs alors que d’autres sont vides. MG 6 novembre 2006 Cours d'algorithmique 1 - Intranet

88 Cours d'algorithmique 1 - Intranet
Hashage Parfait, si H est injective Si H(x) = H(y) alors x = y. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

89 Cours d'algorithmique 1 - Intranet
Hashage Une seule valeur par entrée du tableau ! ! ! Parfait, si H est injective Si H(x) = H(y) alors x = y. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

90 Cours d'algorithmique 1 - Intranet
Hashage Une seule valeur par entrée du tableau ! ! ! Parfait, si H est injective Si H(x) = H(y) alors x = y. Souvent, H ne l’est pas : x = y mais H(x) = H(y) il y a donc collision ! Il y a différentes manières de gérer les collisions. / 6 novembre 2006 Cours d'algorithmique 1 - Intranet

91 Cours d'algorithmique 1 - Intranet
Hashage Résolution locale des collisions : Petite recherche séquentielle dans une liste chainée. Prendre la première case libre en séquence dans le tableau. Et si on peut supprimer des éléments ????? Des éléments qui étaient responsables d’une collision viennent à disparaître ! 6 novembre 2006 Cours d'algorithmique 1 - Intranet

92 Cours d'algorithmique 1 - Intranet
Hashage Résolution locale des collisions : Petite recherche séquentielle dans une liste chainée. Prendre la première case libre en séquence dans le tableau. Et si on peut supprimer des éléments ????? Des éléments qui étaient responsables d’une collision viennent à disparaître ! Re-hashage : Si H(x) est déjà occupé on calcule H’(x) ou H(x+e), etc. jusqu’à trouver une place. Et si on peut supprimer des éléments ????? 6 novembre 2006 Cours d'algorithmique 1 - Intranet

93 La solution la plus fréquente : chainage des collisions !
Hashage Résolution locale des collisions : Petite recherche séquentielle dans une liste chainée. Prendre la première case libre en séquence dans le tableau. Et si on peut supprimer des éléments ????? Des éléments qui étaient responsables d’une collision viennent à disparaître ! Re-hashage : Si H(x) est déjà occupé on calcule H’(x) ou H(x+e), etc. jusqu’à trouver une place. Et si on peut supprimer des éléments ????? La solution la plus fréquente : chainage des collisions ! 6 novembre 2006 Cours d'algorithmique 1 - Intranet

94 Cours d'algorithmique 1 - Intranet
Hashage X X / 6 novembre 2006 Cours d'algorithmique 1 - Intranet

95 Cours d'algorithmique 1 - Intranet
Hashage X X Y / Y 6 novembre 2006 Cours d'algorithmique 1 - Intranet

96 Cours d'algorithmique 1 - Intranet
Hashage Faits : La fonction de hashage doit être « uniforme » : pour des choix au hasard de données d , les indices H( d ) doivent être répartis le plus uniformément possible. A ce moment, le taux de remplissage donne la proportion des collisions. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

97 Cours d'algorithmique 1 - Intranet
Hashage Faits : La fonction de hashage doit être « uniforme » : pour des choix au hasard de données d , les indices H( d ) doivent être répartis le plus uniformément possible. A ce moment, le taux de remplissage donne la proportion des collisions. Coût : Coût du calcul de H multiplié par le nombre moyen de collisions (re-hashage). Coût du calcul de H plus le coût de la recherche dans la liste chainée. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

98 Cours d'algorithmique 1 - Intranet
Synthèse Quelques tris sur tableaux. Recherche dans un tableau trié. Limites des tableaux et des listes triés. Hashage comme solution alternative. A venir : d’autres alternatives comme les arbres de recherche équilibrés. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

99 Cours d'algorithmique 1 - Intranet
m E r C i e T b O n N e J o U r N é E ! ! ! n ‘ O u B l I e Z p A s D e p R é P a R e R v O s T D ! ! ! 6 novembre 2006 Cours d'algorithmique 1 - Intranet


Télécharger ppt "Cours d’Algorithmique"

Présentations similaires


Annonces Google