Cours d’Algorithmique

Slides:



Advertisements
Présentations similaires
Explorer un espace d’états
Advertisements

CHAPITRE 8 Equations - Inéquations
Présentation générale Marc Gengler
Arbre-B+ Hypothèse initiale : clé simple et unique Nœud = bloc.
Sensibilisation à l’Algorithmique
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
Les Algorithmes de tri.
Nouveau programme informatique.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours dAlgorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours d’Algorithmique
Cours d’Algorithmique
Problème des 4 couleurs, graphes planaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.
Cours d’Algorithmique
Cours d'algorithmique 11 / Intranet 1 9 janvier 2006 Cours dAlgorithmique N P - complétude.
Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.
Enseignant responsable :
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
21 septembre 2007Cours de compilation 2 - Intranet1 Cours de compilation Evaluation partielle etcompilation.
Cours d'algorithmique 8 - Intranet 1 4 décembre 2006 Cours dAlgorithmique Dérécursion (fin) : Équivalences entre programmes récursifs et programmes itératifs.
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Cours d’Algorithmique
CHAPITRE 2 Nombres entiers, initiation à l’arithmétique- Nombres rationnels.
Notion de problème Pavilly Novembre Typologie de problèmes Construction dune nouvelle connaissance Construction dune nouvelle connaissance Réinvestissement.
CHAPITRE 8 Equations - Inéquations
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Utilisation des tableaux
Références Bibliographiques
ALGORITHMES RECURSIFS
Cours d’Algorithmique
CHAPITRE 9 Equations - Inéquations
Les algorithmes: complexité et notation asymptotique
Chapitre VII. Tri Tri par tas Tri rapide.
Methode de Tri efficace
Problème des 4 couleurs, graphes planaires.
Quelques applications.
ALGORITHMIQUE en classe de seconde
CHAPITRE 1 Arithmétique
Cinquième étape : colorier les graphes
STRUCTURES DE DONNÉES Maxime CROCHEMORE
Efficacité des algorithmes
Cours de graphes Marc Gengler Alexandra Bac Sébastien Fournier
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
23 février 2007Cours de graphes 4 - Intranet1 Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut. Algos de Ford-Fulkerson et Edmonds-Karp.
Les Algorithmes de Tri Introduction Tri par Sélection
L’adaptativité pour un solveur de l’équation de Vlasov
III. Récursivité Principe et exemples
Méthodes de tri.
STATISTIQUES – PROBABILITÉS
Contexte historique En l’an mil, c’est le Moyen-âge, L’Europe a été longtemps influencée par la pensée, la science et la culture de la civilisation musulmane,
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2) François Meunier DMI.
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours 5 - Trois algorithmes de tri d'un tableau
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Structures de données IFT-2000
Seconde 8 Module 3 M. FELT 22/09/2015.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
SDD Helen KASSEL (amphi), Helen KASSEL, Itheri YAHIAOUI, Albin MORELLE(TD) Albin MORELLE, Itheri YAHIAOUI(TP) 1.
Transcription de la présentation:

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

Présentation générale 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é 6 novembre 2006 Cours d'algorithmique 1 - Intranet Cours d'algorithmique

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

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

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

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

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

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

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

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

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

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

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

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, Cette propriété est donc invariante avec i, on l’appelle un invariant 6 novembre 2006 Cours d'algorithmique 1 - Intranet

Tri par échange --- le code 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

Tri par échange --- la complexité 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

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

Tri par insertion - suite 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

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

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

Tri par insertion --- situation intermédiaire 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

Tri par insertion --- le code 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

Tri par insertion --- la complexité 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. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

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

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

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

Tri bulle - principe des algorithmes 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

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

Différentes notions de complexité 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

Principe du tri par fusion 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

Principe du tri par fusion 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

Complexité du tri par fusion 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

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

Recherche par dichotomie - complexité 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

Cours d'algorithmique 1 - Intranet 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; {m = (d+f)/2; if ( x < t[m] ) f = m-1; d = m; } Return ( x == t[d] ); Initialisation. Intervalle de 2 éléments. Cas général. Résultat. 6 novembre 2006 Cours d'algorithmique 1 - Intranet

Di-chotomie - Tri-chotomie - etc. 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

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

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

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

La solution la plus fréquente : chainage des 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+e), etc. jusqu’à trouver une place. Et si on peut supprimer des éléments ????? La solution la plus fréquente : chainage des collisions ! 6 novembre 2006 Cours d'algorithmique 1 - Intranet

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

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