1 / 99

Cours d’Algorithmique

Cours d’Algorithmique. Alexandra Bac - Henry Kanoui - Alain Samuel. Marc Gengler Marc.Gengler@esil.univ-mrs.fr. 24h de cours 24h de TD des devoirs un projet … et un examen. Les grandes lignes du cours. Trier et chercher Listes et arbres Le back-track Arbres équilibrés

horace
Download Presentation

Cours d’Algorithmique

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cours d’Algorithmique Alexandra Bac - Henry Kanoui - Alain Samuel Marc Gengler Marc.Gengler@esil.univ-mrs.fr 24h de cours 24h de TD des devoirs un projet … et un examen Cours d'algorithmique 1 - Intranet

  2. 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é Cours d'algorithmique 1 - Intranet

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

  4. 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 ;-) Cours d'algorithmique 1 - Intranet

  5. 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. Cours d'algorithmique 1 - Intranet

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

  7. Al Khwarizmi • Célèbre mathématicien à Bagdad, vers 780-850. Cours d'algorithmique 1 - Intranet

  8. Al Khwarizmi • Célèbre mathématicien à Bagdad, vers 780-850. • « 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 ». Cours d'algorithmique 1 - Intranet

  9. Al Khwarizmi • Célèbre mathématicien à Bagdad, vers 780-850. • « 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 • http://publimath.irem.univ-mrs.fr/glossaire/AL016.htm Cours d'algorithmique 1 - Intranet

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

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

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

  13. 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. Cours d'algorithmique 1 - Intranet

  14. 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. Cours d'algorithmique 1 - Intranet

  15. 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, • . . . Cours d'algorithmique 1 - Intranet

  16. Les tris sur tableaux----------------------------------------------------------------- Situation initiale Valeurs n-1 0 1 2 3 … Cours d'algorithmique 1 - Intranet

  17. Les tris sur tableaux----------------------------------------------------------------- Situation initiale Valeurs Pas de relation entre les indices et les valeurs ! n-1 0 1 2 3 … Cours d'algorithmique 1 - Intranet

  18. Les tris sur tableaux----------------------------------------------------------------- Situation finale Valeurs n-1 0 1 2 3 … Cours d'algorithmique 1 - Intranet

  19. Les tris sur tableaux----------------------------------------------------------------- Situation finale Valeurs Une relation claire entre les indices et les valeurs ! n-1 0 1 2 3 … Cours d'algorithmique 1 - Intranet

  20. 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. Cours d'algorithmique 1 - Intranet

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

  22. Les tris sur tableaux----------------------------------------------------------------- Tri par échange --- situation intermédiaire Valeurs Non triées et plus grandes Triées i-1 n-1 0 1 2 3 … Cours d'algorithmique 1 - Intranet

  23. 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. Cours d'algorithmique 1 - Intranet

  24. 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. Cours d'algorithmique 1 - Intranet

  25. Les tris sur tableaux----------------------------------------------------------------- Tri par échange --- situation intermédiaire Valeurs Non triées et plus grandes Triées <- échange -> j n-1 0 1 2 3 … i Cours d'algorithmique 1 - Intranet

  26. Les tris sur tableaux----------------------------------------------------------------- Tri par échange --- situation intermédiaire Valeurs Non triées et plus grandes Triées j n-1 0 1 2 3 … i Cours d'algorithmique 1 - Intranet

  27. 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. Cours d'algorithmique 1 - Intranet

  28. 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, • ceux qui suivent sont plus grands, mais pas triés. 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, • ceux qui suivent sont plus grands, mais pas triés. • Cette propriété est donc invariante avec i, on l’appelle un invariant Cours d'algorithmique 1 - Intranet

  30. 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; } Cours d'algorithmique 1 - Intranet

  31. 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; } Cours d'algorithmique 1 - Intranet

  32. 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 ! Cours d'algorithmique 1 - Intranet

  33. 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. Cours d'algorithmique 1 - Intranet

  34. 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. Cours d'algorithmique 1 - Intranet

  35. 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. Cours d'algorithmique 1 - Intranet

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

  37. Les tris sur tableaux----------------------------------------------------------------- Tri par insertion --- situation intermédiaire Valeurs Non triées et quelconques Triées i-1 n-1 0 1 2 3 … Cours d'algorithmique 1 - Intranet

  38. 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. //////////////////////////////////////////// Cours d'algorithmique 1 - Intranet

  39. 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. Cours d'algorithmique 1 - Intranet

  40. 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 0 1 2 3 … Cours d'algorithmique 1 - Intranet

  41. 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 0 1 2 3 … Cours d'algorithmique 1 - Intranet

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

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

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

  45. 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. Cours d'algorithmique 1 - Intranet

  46. 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--; } } Cours d'algorithmique 1 - Intranet

  47. 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--; } } Cours d'algorithmique 1 - Intranet

  48. 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. Cours d'algorithmique 1 - Intranet

  49. 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. Cours d'algorithmique 1 - Intranet

  50. 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. Cours d'algorithmique 1 - Intranet

More Related