Cours dAlgorithmique Marc Gengler Marc Gengleresil univmrs fr

  • Slides: 42
Download presentation
Cours d’Algorithmique Marc Gengler Marc. Gengler@esil. univ-mrs. fr Alexandra Bac - Henry Kanoui -

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

Les grandes lignes du cours • Trier et cher • Listes et arbres •

Les grandes lignes du cours • Trier et cher • 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 2

Bibliographie • Tout ce qui contient – algorithmes, algorithms. • Internet – souvent, c’est

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. 6 novembre 2006 Cours d'algorithmique 1 - Intranet 3

Al Khwarizmi • Célèbre mathématicien à Bagdad, vers 780 -850. • « Kitâb al-jabr

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/AL 016. htm 6 novembre 2006 Cours d'algorithmique 1 - Intranet 4

Al Khwarizmi 16 + X^2 + 8 * X = 33 + 16 (

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

Les tris sur tableaux -------------------------------- Les hypothèses : • Tableau d’entrées 0 à n-1.

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 6

Les tris sur tableaux -------------------------------- Quelle relation d’ordre ? • En général, l’ordre est

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 7

Les tris sur tableaux --------------------------------Situation initiale Valeurs 0 6 novembre 2006 1 2 3

Les tris sur tableaux --------------------------------Situation initiale Valeurs 0 6 novembre 2006 1 2 3 … Cours d'algorithmique 1 - Intranet n-1 8

Les tris sur tableaux --------------------------------Situation finale Valeurs 0 6 novembre 2006 1 2 3

Les tris sur tableaux --------------------------------Situation finale Valeurs 0 6 novembre 2006 1 2 3 … Cours d'algorithmique 1 - Intranet n-1 9

Les tris sur tableaux --------------------------------Tri par échange --- situation intermédiaire Valeurs Non triées et

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

Les tris sur tableaux --------------------------------Tri par échange - suite Les hypothèses : • Les

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 11

Les tris sur tableaux --------------------------------Tri par échange --- situation intermédiaire Valeurs Non triées et

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

Les tris sur tableaux --------------------------------Tri par échange --- situation intermédiaire Valeurs Non triées et

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

Les tris sur tableaux --------------------------------Tri par échange --- propriété invariante • Nous avions une

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 6 novembre 2006 Cours d'algorithmique 1 - Intranet 14

Les tris sur tableaux --------------------------------Tri par échange --- le code for ( i=0 ;

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 15

Les tris sur tableaux --------------------------------Tri par échange --- la complexité • Ont fait n-1

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 16

Les tris sur tableaux --------------------------------Tri par insertion --- situation intermédiaire Valeurs Non triées et

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

Les tris sur tableaux --------------------------------Tri par insertion - suite Les hypothèses : • Les

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 18

Les tris sur tableaux --------------------------------Tri par insertion --- situation intermédiaire Valeurs Plus grande :

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

Les tris sur tableaux --------------------------------Tri par insertion --- situation intermédiaire Valeurs Non triées et

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

Les tris sur tableaux --------------------------------Tri par insertion --- situation intermédiaire • Vous avez vu

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 21

Les tris sur tableaux --------------------------------Tri par insertion --- le code for ( i=1 ;

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 22

Les tris sur tableaux --------------------------------Tri par insertion --- la complexité • Ont fait n-1

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=1. . n-1 i = 0 (n^2) Tri en complexité quadratique. 6 novembre 2006 Cours d'algorithmique 1 - Intranet 23

Les tris sur tableaux --------------------------------Tri bulle Valeurs Situation anormale : Une bulle Situation normale

Les tris sur tableaux --------------------------------Tri bulle Valeurs Situation anormale : Une bulle Situation normale 0 6 novembre 2006 1 2 3 … Cours d'algorithmique 1 - Intranet n-1 24

Les tris sur tableaux --------------------------------Tri bulle : on échange l’ordre dans la bulle Valeurs

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

Les tris sur tableaux --------------------------------Tri bulle : évolution des bulles Valeurs Régions qui peuvent

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

Les tris sur tableaux --------------------------------Tri bulle - principe des algorithmes L’idée : • Tant

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 27

Les tris sur tableaux --------------------------------Tri bulle - complexité • Le tri bulle a une

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 28

Les tris sur tableaux --------------------------------Différentes notions de complexité • Complexité du meilleur cas :

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 29

Les tris sur tableaux --------------------------------Principe du tri par fusion • Couper le tableau en

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 30

Les tris sur tableaux --------------------------------Principe du tri par fusion Tri récursif des deux moitiés.

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 31

Les tris sur tableaux --------------------------------Complexité du tri par fusion • Soit f(n) la fonction

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 32

Recherche dans des tableaux triés -------------------------------- • On utilise l’ordre pour – anticiper l’abandon

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 0 petit Oui ! Chercher X dans [ 0. . (n-1)/2 - 1 ] n-1 moyen X < moyen grand Non ! Chercher X dans [ (n-1)/2. . n-1 ] X 6 novembre 2006 Cours d'algorithmique 1 - Intranet 33

Recherche dans des tableaux triés --------------------------------Recherche par dichotomie - complexité • 1 test ->

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 34

Recherche dans des tableaux triés --------------------------------d = 0; Initialisation. f = n-1; While (

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

Recherche dans des tableaux triés --------------------------------Di-chotomie - Tri-chotomie - etc. • Di-chotomie : –

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 36

Soyons critiques ! -------------------------------- • Tableau trié : – Recherche efficace – Insertions et

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 37

Hashage --------------------------------H : Eléments à stocker Indices d’un tableau INSEE(Marc Gengler) 1. 61. 01

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

Hashage -------------------------------- • Parfait, si H est injective – Si H(x) = H(y) alors

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

Hashage -------------------------------- • Résolution locale des collisions : – – – Petite recherche séquentielle

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 40

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

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

Hashage -------------------------------- • Faits : – La fonction de hashage doit être « uniforme

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 42