cours d algorithmique n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Cours d’Algorithmique PowerPoint Presentation
Download Presentation
Cours d’Algorithmique

Loading in 2 Seconds...

play fullscreen
1 / 99

Cours d’Algorithmique - PowerPoint PPT Presentation


  • 128 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - 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