La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB 2009-2010 - GFDL 1.2 CM 7/8 v1.2."— Transcription de la présentation:

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

2 i21 IEM-UB 2008-2009 GFDL 1.2 2 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 à 1000 000 $ 1.Types de données

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

4 i21 IEM-UB 2008-2009 GFDL 1.2 4 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é (30 000 étudiants) – Classement de toutes les pages Wikipedia par titre (700 000 pages en français, 2 800 000 en anglais)

5 i21 IEM-UB 2008-2009 GFDL 1.2 5 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 1 000 000 entiers – Surveiller la mémoire : ex. 2 Go pour trier 1 000 000 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 ?

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

7 i21 IEM-UB 2008-2009 GFDL 1.2 7 *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

8 i21 IEM-UB 2008-2009 GFDL 1.2 8 *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)

9 i21 IEM-UB 2008-2009 GFDL 1.2 9 Exemple : tri a bulle, espace ● Trier t : 1 2 3 4 5 6 7 8 9 (facile) ● Rappel : tant qu'il y a un désordre, reparcourir tout le tableau en inversant les éléments consécutifs mal classés

10 i21 IEM-UB 2008-2009 GFDL 1.2 10 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

11 i21 IEM-UB 2008-2009 GFDL 1.2 11 Exemple : tri à bulle, espace ● Complexité en espace pour trier 1 2 3 4 5 6 7 8 9 – 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

12 i21 IEM-UB 2008-2009 GFDL 1.2 12 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

13 i21 IEM-UB 2008-2009 GFDL 1.2 13 Exemple : tri à bulle, temps ● Pour trier t0=1 2 3 4 5 6 7 8 9 – 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

14 i21 IEM-UB 2008-2009 GFDL 1.2 14 Exemple : tri à bulle, temps ● Pour trier t1=9 8 7 6 5 4 3 2 1 – Premier tour de i : 9 descend en dernière position ● 8 7 6 5 4 3 2 1 9 – Deuxieme tour : 8 descend jusqu'à l'avant dernière position ● 7 6 5 4 3 2 1 8 9 – etc. ● Au total : 8 passages complets

15 i21 IEM-UB 2008-2009 GFDL 1.2 15 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

16 i21 IEM-UB 2008-2009 GFDL 1.2 16 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

17 i21 IEM-UB 2008-2009 GFDL 1.2 17 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 : 8+7+6+5+4+3+2+1=36 comparaisons

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

19 i21 IEM-UB 2008-2009 GFDL 1.2 19 Complexité : plusieurs notions ● Trier 1 2 3 4 5 6 7 8 9 : 8 comparaisons ● Trier 9 8 7 6 5 4 3 2 1 : 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

20 i21 IEM-UB 2008-2009 GFDL 1.2 20 *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

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

22 i21 IEM-UB 2008-2009 GFDL 1.2 22 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

23 i21 IEM-UB 2008-2009 GFDL 1.2 23 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²)

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

25 i21 IEM-UB 2008-2009 GFDL 1.2 25 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)

26 i21 IEM-UB 2008-2009 GFDL 1.2 26 *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 )

27 i21 IEM-UB 2008-2009 GFDL 1.2 27 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

28 i21 IEM-UB 2008-2009 GFDL 1.2 28 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

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

30 i21 IEM-UB 2008-2009 GFDL 1.2 30 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

31 i21 IEM-UB 2008-2009 GFDL 1.2 31 *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

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

33 i21 IEM-UB 2008-2009 GFDL 1.2 33 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

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

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

36 i21 IEM-UB 2008-2009 GFDL 1.2 36 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 à 1000 000 $ 1.Types de données

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

38 i21 IEM-UB 2008-2009 GFDL 1.2 38 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

39 i21 IEM-UB 2008-2009 GFDL 1.2 39 Voyageur de commerce départarrivée

40 i21 IEM-UB 2008-2009 GFDL 1.2 40 Voyageur de commerce départarrivée solution

41 i21 IEM-UB 2008-2009 GFDL 1.2 41 Voyageur de commerce Et là ?

42 i21 IEM-UB 2008-2009 GFDL 1.2 42 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 »

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

44 i21 IEM-UB 2008-2009 GFDL 1.2 44 Pour ce week-end ● Personne ne sait faire mieux ● Trouver un algorithme en temps polynomial pour le voyageur de commerce : 1 000 000 $ ● Millennium Problems du Clay Mathematics institute (http://www.claymath.org/)http://www.claymath.org/ ● Problème P =? NP

45 i21 IEM-UB 2008-2009 GFDL 1.2 45 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 ?

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


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

Présentations similaires


Annonces Google