Cours Algo 1 Resume

  • 2,794 views
Uploaded on

introduction a l algorithmique commencer a comprendre

introduction a l algorithmique commencer a comprendre

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,794
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
130
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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 !
  • 41. Hashage ----------------------------------------------------------------- X X Y Y /
  • 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.