I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB 2009-2010 - GFDL 1.2 CM 7/8 v1.2.

Slides:



Advertisements
Présentations similaires
IFT Complexité et NP-complétude
Advertisements

L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
Pierre Collet : Intelligence Artificielle 1 Optimisation Stochastique Avancée Pierre Collet Laboratoire des Sciences de l’Image, de l’Informatique et de.
I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB GFDL 1.2 CM 6/8 v1.1.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Du chapitre 1 au chapitre 2 1. Les graphiques : introduction (p.15)  Pour prendre possession des données o des chiffres dans un tableau, c’est bien o.
Chapitre 4 la représentation des nombres. Chapitre 4 : La représentation des nombres 1 - Introduction 1.1 – Notion de mot 2 - La représentation des entiers.
CINI – Li115 1 Semaine 3 Boucles (suite), tirages aléatoires, bibliothèque graphique ● Imbrication d'instructions if et for ● Boucles for imbriquées ●
Classement alphabétique
Suites ordonnées ou mettre de l’ordre
Tableau à double entrée
Information, Communication, Calcul
Les Instructions Itératives (Les Boucles)
L’opération de multiplication
Comprendre, classer et analyser les problèmes multiplicatifs
Les distributions en classes
Deuxième partie : La courbe d’indifférence
Algorithmiques Abdelbasset KABOU
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
5 – PARALLELISME , ORDONNANCEMENT
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Cours 4 : Tris de Tableaux
I21 Algorithmique et programmation II
Master Réseaux et Systèmes Distribués (RSD)
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
Techniques d’Optimisation Chapitre 2: Problème de flôt
Algorithmiques Abdelbasset KABOU
Information, Calcul, Communication
Un Algorithme , c'est Quoi ?
Initiation à la programmation impérative et algorithmique
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Plans d’experiences : plans de melanges
VI. Tri par tas (Heap sort)
Routage S 3 - Questionnaire N°1
Exploitation de mesures scientifiques.
Introduction à l’algorithmique et à la programmation Modified by Dr. Mhamed Zineddine INSA Euro-Med Taken from:INSA de Lyon, Departement Telecommunications,
Fonctions Logiques & Algèbre de BOOLE
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Science du traitement rationnel de l'information
Information, Communication, Calcul
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Les tableaux.
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
Calcul Relationnel Chapitre 4, Section 4.3.
Introduction à l’algorithmique et à la programmation Modified by Dr. Mhamed Zineddine INSA Euro-Med Taken from:INSA de Lyon, Departement Telecommunications,
- Méthodologie - Rédiger une fiche de lecture -
1 UMLV  Université de Marne-la-Vallée STRUCTURES DE DONNÉES Maxime CROCHEMORE
Type Concret – Type Abstrait
Calcul Scientifique Initiation à SCILB
Exercice : le jeu. Vous devez concevoir l’algorithme permettant de jouer avec votre calculatrice : elle détermine au hasard un nombre caché entier entre.
OPTIMISATION 1ère année ingénieurs
Enfin une vraie définition pour un concept déjà rencontré
SYSTèMES à évènements discrets
2.4 La loi de vitesse d’une réaction chimique
AIAC GEET-12 Année : Régulation Industrielle: Programme M.BAHATTI.
Algorithme de tri - Tri à bulles
Information, Calcul, Communication
CSI 3505 Algorithmes Voraces
La démarche scientifique
Tris Simples/Rapides.
Flowchart Itération Cours 04.
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.
Encadré par : M. Mohammad EL GHABZOURI Elaboré par : - AZEGAMOUT Mohamed - ABOULKACEM abdelouahed - GOUN Ayoub EXPOSÉ Sous le thème : SER 2018 Parallélisme.
L.P.M Chapitre N°3 Les structures de contrôle itératives Dégager le traitement itératif Problème Nombre d’itération ?? Inconnu à l’avance Connu à l’avance.
CSI 3505 / Automne 2005: Conception et Analyse des Algorithmes I.
Encadrée par: - Mr. Abdallah ALAOUI AMINI Réalisée par : -ERAOUI Oumaima -DEKKAR Amal - ES-SAHLY Samira -Houari Mohammed PROGRAMMATION MULTIOBJECTIFS.
Tableaux : Algorithmes de recherches
Transcription de la présentation:

I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB GFDL 1.2 CM 7/8 v1.2

i21 IEM-UB GFDL Types de données et algorithmes 1.Récursivité 2.Algorithmes de tri 2.1 Définitions 2.2 Tri par sélection 2.3 Tri par insertion 2.4 Tri par échange (tri à bulle, tri rapide) 2.5 Tri fusion 2.6 Comparaisons des méthodes 2.7 Défi à $ 1.Types de données

i21 IEM-UB GFDL Seuls les transparents marqués * sont à connaître (8 au total)

i21 IEM-UB GFDL Quelle méthode de tri choisir ? ● Petits tableaux – Qui s'en soucie ? 1ms contre 0,9 ms... ● Pour de grands tableaux ! – Tableau de tous les étudiants de l'université ( étudiants) – Classement de toutes les pages Wikipedia par titre ( pages en français, en anglais)

i21 IEM-UB GFDL Quelle méthode de tri choisir ? ● Minimiser le temps de calcul ● Minimiser l'espace mémoire ● Approche expérimentale : – Chronométrer : ex. 2,5s pour trier entiers – Surveiller la mémoire : ex. 2 Go pour trier d'entiers – Peu instructif, utile quand on ne peut faire mieux – Que se passera-t-il quand on doublera la taille du problème à traiter ? Doublement, Triplement ?

i21 IEM-UB GFDL Quelle méthode de tri choisir ? ● Approche analytique : – Mesurer la complexité des algorithmes – Comprendre ce qui se passe – Analyse indépendante du matériel

i21 IEM-UB GFDL *Complexité en temps ● Nombre d'opérations pertinentes effectuées pour réaliser l'opération, en fonction de la taille du problème à traiter ● Ex : combien de lecture des t[i] en fonction de la taille du tableau t à trier ● Relation avec le chronomètre : lecture d'un t[i], temps constant, dépend seulement du processeur

i21 IEM-UB GFDL *Complexité en espace ● Quantité de mémoire utilisée pour réaliser l'opération, en fonction de la taille du problème à traiter ● Ex. taille des tableaux manipulés en fonction de la taille du tableau t à trier ● Relation avec la mémoire : taille d'un entier constante, 1 mot mémoire en Java (32 bits)

i21 IEM-UB GFDL Exemple : tri a bulle, espace ● Trier t : (facile) ● Rappel : tant qu'il y a un désordre, reparcourir tout le tableau en inversant les éléments consécutifs mal classés

i21 IEM-UB GFDL Exemple : tri à bulle, espace ● Algorithme TriBulle (tableau t) booléen désordre faire désordre=faux pour entier i de 0 à taille(t)-2 si (t[i] > t[i+1]) inverser(t,i,i+1); désordre=vrai; tant que désordre ● Remarque : variables t,désordre,i

i21 IEM-UB GFDL Exemple : tri à bulle, espace ● Complexité en espace pour trier – taille de l'entrée : 9 entiers – type de tri : en place (pas de tableau intermédiaire) ● Complexité en espace pour trier t : – 9 entiers + 2 variables ● Même complexité quel que soit contenu de t ● Conclusion : pour un tableau de taille n en entrée, la complexité en espace du tri à bulle est n+2

i21 IEM-UB GFDL Exemple : tri à bulle, temps ● Opération ? nombre de comparaisons entre t[i] et t[i+1] ● Algorithme TriBulle (tableau t) booléen désordre faire désordre=faux pour entier i de 0 à taille(t)-2 si (t[i] > t[i+1]) inverser(t,i,i+1); désordre=vrai; tant que désordre

i21 IEM-UB GFDL Exemple : tri à bulle, temps ● Pour trier t0= – Premier parcours complet (boucle pour i) – Jamais de désordre rencontré (reste à faux) – Sortie de la boucle tant que – Terminé ● Pour ce tableau t0 : 8 comparaisons ● Mais pas toujours 8, dépend du tableau

i21 IEM-UB GFDL Exemple : tri à bulle, temps ● Pour trier t1= – Premier tour de i : 9 descend en dernière position ● – Deuxieme tour : 8 descend jusqu'à l'avant dernière position ● – etc. ● Au total : 8 passages complets

i21 IEM-UB GFDL Exemple : tri à bulle, temps ● 1er passage : 8 comparaisons ● 2ème : 8 comparaisons ● 3ème : 8 comparaisons ● etc. ● 8ème : 8 comparaisons ● Au total : 8 x 8 =64 comparaisons

i21 IEM-UB GFDL Plus malin ● Chaque passage : le maximum va à la fin ● Pas la peine de revérifier ● faire désordre=faux ; nbBienPlacé=0; pour entier i de 0 à taille(t)-2-nbBienPlacé si (t[i] > t[i+1]) inverser(t,i,i+1); désordre=vrai; nbBienPlacé++; tant que désordre

i21 IEM-UB GFDL Exemple : tri à bulle, temps ● 1er passage : 8 comparaisons ● 2ème : 7 comparaisons (9 déjà bien placé) ● 3ème : 6 comparaisons ● etc. ● 8ème : 1 comparaison ● Au total : =36 comparaisons

i21 IEM-UB GFDL Exemple : tri à bulle, temps ● En général : trier n (n-1) (n-2) ● Au total : (n-1)+(n-2) comparaisons, soit n(n-1)/2

i21 IEM-UB GFDL Complexité : plusieurs notions ● Trier : 8 comparaisons ● Trier : 32 comparaisons ● Donc : ne dépend pas que de la taille, mais aussi du contenu de l'entrée ● Trois aspects de la complexité : – Pire des cas – Meilleur des cas – En moyenne

i21 IEM-UB GFDL *Complexité : plusieurs notions ● Complexité dans le meilleur des cas : prendre le tableau le plus facile – pas très instructive ● Complexité dans le pire des cas : permet de connaître la place maximale/le temps maximal – parfois pessimiste / vraies données ● Complexité en moyenne : moyenne du temps/de l'espace utilisé, pour tous les tableaux possibles – très difficile à calculer

i21 IEM-UB GFDL Complexité des tris ● Domaine très étudié (~1960) ● Complexités au pire et en moyenne connues pour tous les tris classiques ● Comment les comparer ?

i21 IEM-UB GFDL Complexité : simplification ● Exemple : complexité en temps 10n+34 op. ● Négliger les constantes additives (34) – 34 opérations négligeables devant 10n, quand n devient grand ● Négliger les constantes multiplicatives (10) – 10n : groupe de 10 opérations répété à chaque fois – acheter une machine faisant les 10 d'un coup

i21 IEM-UB GFDL Complexité : notation ● « l'algorithme A a une complexité en temps plus faible que l'algorithme B » ● Exemple : 400n+32 < n² ● 400n+32 est bornée asymptotiquement par n² ● Notation O (grand O, notation de Landau) ● Definition : s'il existe n0 et M tq, pour tout n>n0, f(n) < M.g(n), alors f est en O(g) ● 400n+32 est en O(n²)

i21 IEM-UB GFDL Notion « f est O(g) complexité en temps ou espace n, taille de l'entrée f(n) M.g(n) n0

i21 IEM-UB GFDL Complexité : notation ● « l'algorithme A a la même complexité en temps que l'algorithme B » ● Ex. : 400n+32 et 600n+12 sont (asymptotiquement) les mêmes complexités ● Notation (grand théta) ● Propriété : f est (g) si f est O(g) et g est O(f)

i21 IEM-UB GFDL *Vocabulaire ● Taille d'entrée n ● O(1) : complexité constante ● O(n) : complexité linéaire ● O(n²) : complexité quadratique ● O(ln n) : complexité logarithmique ● O(2 n ) : complexité exponentielle ● Rq : O(1) est O(ln(n)) qui est O(n) qui est O(n²) qui est O(2 n )

i21 IEM-UB GFDL Les tris : complexité nb comparaisons (* pire) Trimeilleur moyennepire Sélection directe O(n²)O(n²)O(n²) Insertion séq.O(n-1)O(n²) O(n²) A bulleO(n) O(n²)O(n²) RapideO(n ln n)O(n ln n) O(n²) FusionO(n ln n)O(n ln n)O(n ln n) Rq. Les O peuvent être remplacé par

i21 IEM-UB GFDL Remarque ● Théorème : la complexité au pire des cas d'un tri en place par comparaison ne peut être inférieure à n ln n [Knuth, 1973] ● Conclusion : tri fusion optimal

i21 IEM-UB GFDL Donald Knuth (1938-) ● Stanford ● « The art of computer programming » ● TeX ● Notations (O,...) ● Prix Turing 1974 ● etc.

i21 IEM-UB GFDL Les tris : complexité en espace (*pire) Tripire cause Sélection directe n+O(1)en place Insertion séq.n+O(1)en place A bullen+O(1)en place Rapiden+O(ln n) récursivité Fusionn+O(n) pas en place(fusion) Rq. Les O peuvent être remplacé par

i21 IEM-UB GFDL *Stabilité ● Trier les étudiants par âge – 19:Jean22:Marc19:Sarah ● Tri stable : conserve l'ordre initial pour les valeurs identiques – 19:Jean19:Sarah22:Marc ● Tri instable : mélange les données de même valeur – 19:Sarah19:Jean22:Marc

i21 IEM-UB GFDL *Stabilité ● Tri rapide : instable ● Tri fusion : stable (si bien programmé)

i21 IEM-UB GFDL En résumé ● <100 éléments : qu'importe ● Données presque triées : insertion séquentielle (ou sa variante, insertion dichotomique) ● Données quelconques, stabilité non requise – tri rapide ● Données quelconques, stabilité requise – tri fusion ● Bilbiothèque standard de Java (Sun) : tri fusion

i21 IEM-UB GFDL Tri rapide : Sir Charles Antony Richard Hoare (1934-) ● Oxford ● Prix Turing 1980 ● Tri rapide ● Vérification logique des programmes

i21 IEM-UB GFDL Ce qui suit n'est pas au programme, mais juste pour le plaisir

i21 IEM-UB GFDL Types de données et algorithmes 1.Récursivité 2.Algorithmes de tri 2.1 Définitions 2.2 Tri par sélection 2.3 Tri par insertion 2.4 Tri par échange (tri à bulle, tri rapide) 2.5 Tri fusion 2.6 Comparaisons des méthodes 2.7 Défi à $ 1.Types de données

i21 IEM-UB GFDL Complexité générale ● Tri : faible complexité (O(n²) et moins) ● Complexité d'autre problèmes ? ● Ex. : voyageur de commerce

i21 IEM-UB GFDL Voyageur de commerce ● Donnée : – n villes, certaines étant reliées par des routes – un voyageur de commerce, devant visiter chaque ville ● Problème : – trouver un ordre de visite pour ● visiter chaque ville ● ne jamais passer 2 fois par la même ville ● pas toujours possible

i21 IEM-UB GFDL Voyageur de commerce départarrivée

i21 IEM-UB GFDL Voyageur de commerce départarrivée solution

i21 IEM-UB GFDL Voyageur de commerce Et là ?

i21 IEM-UB GFDL Voyageur de commerce ● Algorithme : – Pour tous les parcours possibles ● vérifier si on passe deux fois par la même ville ● si oui, passer au parcours suivant ● sinon, répondre « gagné ! » – Si jamais gagné, alors répondre « pas possible »

i21 IEM-UB GFDL Complexité en temps ● Algorithme correct ● Mais, pour n villes, 2 n chemins possibles ! ● Complexité en temps : O(2 n ) : exponentielle

i21 IEM-UB GFDL Pour ce week-end ● Personne ne sait faire mieux ● Trouver un algorithme en temps polynomial pour le voyageur de commerce : $ ● Millennium Problems du Clay Mathematics institute ( ● Problème P =? NP

i21 IEM-UB GFDL Pour ce week-end ● Classe P : ensemble des problèmes ayant une complexité en temps O(n k ) ● classe NP : ensemble des problèmes dont la vérification d'une solution est P – Vérifier qu'un parcours est ok pour le voyageur de commerce est facile – Trouver le parcours est difficile ! ● P est inclus dans NP, mais est-ce que P=NP ?

i21 IEM-UB GFDL Hiérarchie de complexité P NP EXP n² tris voyageur de commerce algèbre élémentaire géométrie élémentaire itinéraire