SlideShare une entreprise Scribd logo
Cours d’Algorithmique Marc Gengler [email_address] Alexandra Bac - Henry Kanoui - Alain Samuel 24h de cours 24h de TD des devoirs un projet …  et un examen
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é Les grandes lignes du cours
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 ;-) D’autres choix Introduction à l’algorithmique, Leiserson et al. chez Dunod. Initiation à l’algorithmique et aux structures de données, Courtin et Kowarski.
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 12 e  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
Al Khwarizmi 16  +  X^2  +  8 * X  = 33 +  16 X^2 2 * X 4 ( X + 4 )^2 = 7^2
Les tris sur tableaux ----------------------------------------------------------------- Tableau d’entrées 0 à n-1. Entiers naturels, mais n’importe quel ensemble ordonné peut convenir. Les répétitions sont possibles. Les hypothèses : Le but : Ordonner le tableau par valeurs non décroissantes. Nous trions pour accélérer les recherches !
Les tris sur tableaux ----------------------------------------------------------------- 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, . . . Quelle relation d’ordre ?
Les tris sur tableaux ----------------------------------------------------------------- Situation initiale Valeurs 0  1  2  3  … n-1 Pas de relation entre les indices et les valeurs !
Les tris sur tableaux ----------------------------------------------------------------- Situation finale Valeurs 0  1  2  3  … n-1 Une relation claire entre les indices et les valeurs !
Les tris sur tableaux ----------------------------------------------------------------- Tri par échange --- situation intermédiaire Valeurs 0  1  2  3  … n-1 Triées Non triées et plus grandes i-1
Les tris sur tableaux ----------------------------------------------------------------- Tri par échange  -  suite 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. Les hypothèses : 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.
Les tris sur tableaux ----------------------------------------------------------------- Tri par échange --- situation intermédiaire Valeurs 0  1  2  3  … n-1 Triées Non triées et plus grandes i j <- échange ->
Les tris sur tableaux ----------------------------------------------------------------- Tri par échange --- situation intermédiaire Valeurs 0  1  2  3  … n-1 Triées Non triées et plus grandes i j
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
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; }
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 :    (n-i)  =  0 (n^2) i=0..n-2 Tri en complexité quadratique.
Les tris sur tableaux ----------------------------------------------------------------- Tri par insertion --- situation intermédiaire Valeurs 0  1  2  3  … n-1 Triées Non triées et quelconques i-1
Les tris sur tableaux ----------------------------------------------------------------- Tri par insertion  -  suite 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. Les hypothèses : 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. ////////////////////////////////////////////
Les tris sur tableaux ----------------------------------------------------------------- Tri par insertion --- situation intermédiaire Valeurs 0  1  2  3  … n-1 Triées i-1 Plus grande : Rien à faire ! Non triées et quelconques
Les tris sur tableaux ----------------------------------------------------------------- Tri par insertion --- situation intermédiaire Valeurs 0  1  2  3  … n-1 Triées i-1 Non triées et quelconques Plus petit : L’insérer à gauche.
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.
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--;  }  }
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 :    i  =  0 (n^2) i=1..n-1 Tri en complexité quadratique.
Les tris sur tableaux ----------------------------------------------------------------- Tri bulle Valeurs 0  1  2  3  … n-1 Situation normale Situation anormale : Une bulle
Les tris sur tableaux ----------------------------------------------------------------- Tri bulle : on échange l’ordre dans la bulle Valeurs 0  1  2  3  … n-1 Situation normale La bulle a disparu par échange
Les tris sur tableaux ----------------------------------------------------------------- Tri bulle : évolution des bulles Valeurs 0  1  2  3  … n-1 Régions qui peuvent être ignorées lors du prochain passage.
Les tris sur tableaux ----------------------------------------------------------------- Tri bulle  -  principe des algorithmes Tant qu’il y a des bulles, on en choisit une et on la fait monter. L’idée : 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 !
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).
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.
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).
Les tris sur tableaux ----------------------------------------------------------------- Principe du tri par fusion Tri récursif des deux moitiés. Fusion des deux suites.
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.
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. petit grand moyen 0 n-1 (n-1)/2 X X < moyen Oui ! Chercher X dans [ 0 .. (n-1)/2- 1 ] Non ! Chercher X dans [ (n-1)/2 .. n-1 ]
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.
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; else   {m = (d+f)/2; if ( x < t[m] ) f = m-1; else d = m; } Return ( x == t[d] ); Résultat. Cas général. Intervalle de 2 éléments. Initialisation.
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 ! ! !
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     
Hashage ----------------------------------------------------------------- H  :  Eléments à stocker  Indices d’un tableau INSEE(Marc Gengler)  1.61.01 … 1.61.01 … MG Attention, certaines cases du tableau contiennent des valeurs alors que d’autres sont vides.
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. /
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+  ), etc. jusqu’à trouver une place. Et si on peut supprimer des éléments ????? La solution la plus fréquente : chainage des collisions !
Hashage ----------------------------------------------------------------- X X Y Y /
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. …

Contenu connexe

ODT
UML OCL : Cheat Sheet - 10
PDF
Chapitre iv algorithmes de tri
PDF
exercices-corriges-dalgorithmique
PDF
Cours04.pdf
PDF
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
PDF
algorithmes-de-tri-insertion-rapide-fusion.pdf
PDF
Chapitre 3 Les algorithmes de recherche et de tris
PPT
Cours as dch3
UML OCL : Cheat Sheet - 10
Chapitre iv algorithmes de tri
exercices-corriges-dalgorithmique
Cours04.pdf
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
algorithmes-de-tri-insertion-rapide-fusion.pdf
Chapitre 3 Les algorithmes de recherche et de tris
Cours as dch3

Similaire à Cours Algo 1 Resume (20)

PPT
PDF
Chapitre 2 - Les algorithmes de recherche et de tri.pdf
PPSX
Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...
PDF
cours TRI selection insertion bublle sort
PDF
Chap04 les-algorithme-de-tri-et-de-recherche
PDF
les-tableaux-langage-c.pdf-Programmation
PDF
Algorithmique et programmation michael griffith
PDF
Chapitre 1 rappel
PDF
Chapitre 1 rappel
PDF
477d1e_e8372c8ed9114ac38eef1e80b654c67e_241008_201854.pdf
DOCX
Le tri dans un tableau en algo
PDF
Algorithmes de tri
PPTX
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptx
PDF
Les algorithmes de tri
PPTX
20XX-XX.cours.complexite.powerpoint.sdd.pptx
PDF
Rapport Projet Module Complexité
PDF
algo-imsi-2.pdf
PPTX
TD2_Algo.pptx algorithme ecole nationale du science
PDF
Cours algorithmique et complexite
PDF
Cours algorithmique et complexite complet
Chapitre 2 - Les algorithmes de recherche et de tri.pdf
Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...
cours TRI selection insertion bublle sort
Chap04 les-algorithme-de-tri-et-de-recherche
les-tableaux-langage-c.pdf-Programmation
Algorithmique et programmation michael griffith
Chapitre 1 rappel
Chapitre 1 rappel
477d1e_e8372c8ed9114ac38eef1e80b654c67e_241008_201854.pdf
Le tri dans un tableau en algo
Algorithmes de tri
Algo et complexite file pilezzzzzzzzzzzzzzzz.pptx
Les algorithmes de tri
20XX-XX.cours.complexite.powerpoint.sdd.pptx
Rapport Projet Module Complexité
algo-imsi-2.pdf
TD2_Algo.pptx algorithme ecole nationale du science
Cours algorithmique et complexite
Cours algorithmique et complexite complet
Publicité

Dernier (7)

PDF
Architecture logicielle et Modeles de Conception
PDF
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025
PPTX
Cours Electrotechnique L2 - Séance 6.pptx
PDF
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...
PPTX
test pour la présentation foire de Chalôns V1
PDF
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
COURS GCDs Chap 9.pdf tous les éléments.
Architecture logicielle et Modeles de Conception
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025
Cours Electrotechnique L2 - Séance 6.pptx
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...
test pour la présentation foire de Chalôns V1
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26
COURS GCDs Chap 9.pdf tous les éléments.
Publicité

Cours Algo 1 Resume

  • 1. Cours d’Algorithmique Marc Gengler [email_address] Alexandra Bac - Henry Kanoui - Alain Samuel 24h de cours 24h de TD des devoirs un projet … et un examen
  • 2. 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é Les grandes lignes du cours
  • 3. 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 ;-) D’autres choix Introduction à l’algorithmique, Leiserson et al. chez Dunod. Initiation à l’algorithmique et aux structures de données, Courtin et Kowarski.
  • 4. 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 12 e 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
  • 5. Al Khwarizmi 16 + X^2 + 8 * X = 33 + 16 X^2 2 * X 4 ( X + 4 )^2 = 7^2
  • 6. Les tris sur tableaux ----------------------------------------------------------------- Tableau d’entrées 0 à n-1. Entiers naturels, mais n’importe quel ensemble ordonné peut convenir. Les répétitions sont possibles. Les hypothèses : Le but : Ordonner le tableau par valeurs non décroissantes. Nous trions pour accélérer les recherches !
  • 7. Les tris sur tableaux ----------------------------------------------------------------- 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, . . . Quelle relation d’ordre ?
  • 8. Les tris sur tableaux ----------------------------------------------------------------- Situation initiale Valeurs 0 1 2 3 … n-1 Pas de relation entre les indices et les valeurs !
  • 9. Les tris sur tableaux ----------------------------------------------------------------- Situation finale Valeurs 0 1 2 3 … n-1 Une relation claire entre les indices et les valeurs !
  • 10. Les tris sur tableaux ----------------------------------------------------------------- Tri par échange --- situation intermédiaire Valeurs 0 1 2 3 … n-1 Triées Non triées et plus grandes i-1
  • 11. Les tris sur tableaux ----------------------------------------------------------------- Tri par échange - suite 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. Les hypothèses : 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.
  • 12. Les tris sur tableaux ----------------------------------------------------------------- Tri par échange --- situation intermédiaire Valeurs 0 1 2 3 … n-1 Triées Non triées et plus grandes i j <- échange ->
  • 13. Les tris sur tableaux ----------------------------------------------------------------- Tri par échange --- situation intermédiaire Valeurs 0 1 2 3 … n-1 Triées Non triées et plus grandes i j
  • 14. 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
  • 15. 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; }
  • 16. 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 :    (n-i) = 0 (n^2) i=0..n-2 Tri en complexité quadratique.
  • 17. Les tris sur tableaux ----------------------------------------------------------------- Tri par insertion --- situation intermédiaire Valeurs 0 1 2 3 … n-1 Triées Non triées et quelconques i-1
  • 18. Les tris sur tableaux ----------------------------------------------------------------- Tri par insertion - suite 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. Les hypothèses : 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. ////////////////////////////////////////////
  • 19. Les tris sur tableaux ----------------------------------------------------------------- Tri par insertion --- situation intermédiaire Valeurs 0 1 2 3 … n-1 Triées i-1 Plus grande : Rien à faire ! Non triées et quelconques
  • 20. Les tris sur tableaux ----------------------------------------------------------------- Tri par insertion --- situation intermédiaire Valeurs 0 1 2 3 … n-1 Triées i-1 Non triées et quelconques Plus petit : L’insérer à gauche.
  • 21. 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.
  • 22. 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--; } }
  • 23. 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 :    i = 0 (n^2) i=1..n-1 Tri en complexité quadratique.
  • 24. Les tris sur tableaux ----------------------------------------------------------------- Tri bulle Valeurs 0 1 2 3 … n-1 Situation normale Situation anormale : Une bulle
  • 25. Les tris sur tableaux ----------------------------------------------------------------- Tri bulle : on échange l’ordre dans la bulle Valeurs 0 1 2 3 … n-1 Situation normale La bulle a disparu par échange
  • 26. Les tris sur tableaux ----------------------------------------------------------------- Tri bulle : évolution des bulles Valeurs 0 1 2 3 … n-1 Régions qui peuvent être ignorées lors du prochain passage.
  • 27. Les tris sur tableaux ----------------------------------------------------------------- Tri bulle - principe des algorithmes Tant qu’il y a des bulles, on en choisit une et on la fait monter. L’idée : 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 !
  • 28. 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).
  • 29. 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.
  • 30. 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).
  • 31. Les tris sur tableaux ----------------------------------------------------------------- Principe du tri par fusion Tri récursif des deux moitiés. Fusion des deux suites.
  • 32. 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.
  • 33. 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. petit grand moyen 0 n-1 (n-1)/2 X X < moyen Oui ! Chercher X dans [ 0 .. (n-1)/2- 1 ] Non ! Chercher X dans [ (n-1)/2 .. n-1 ]
  • 34. 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.
  • 35. 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; else {m = (d+f)/2; if ( x < t[m] ) f = m-1; else d = m; } Return ( x == t[d] ); Résultat. Cas général. Intervalle de 2 éléments. Initialisation.
  • 36. 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 ! ! !
  • 37. 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  
  • 38. Hashage ----------------------------------------------------------------- H : Eléments à stocker Indices d’un tableau INSEE(Marc Gengler) 1.61.01 … 1.61.01 … MG Attention, certaines cases du tableau contiennent des valeurs alors que d’autres sont vides.
  • 39. 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. /
  • 40. 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+  ), etc. jusqu’à trouver une place. Et si on peut supprimer des éléments ????? La solution la plus fréquente : chainage des collisions !
  • 42. 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. …