1 UMLV  Université de Marne-la-Vallée STRUCTURES DE DONNÉES Maxime CROCHEMORE

Slides:



Advertisements
Présentations similaires
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Advertisements

Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Références Bibliographiques
Introduction à l’algorithmique
STRUCTURES DE DONNÉES Maxime CROCHEMORE
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
Algorithmes de tri et de recherche
Algorithme Calcul du PGCD Euclide.
Mathématiques Discrètes Chapitre 2 (section 3)
2005/2006 Structures de Données Introduction à la complexité des algorithmes.

Algorithmique Algorithmique  Pascal
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
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,
CINI – Li115 1 Semaine 3 Boucles (suite), tirages aléatoires, bibliothèque graphique ● Imbrication d'instructions if et for ● Boucles for imbriquées ●
Cahier de réussite Mathématiques. Voici ton cahier de réussite. Il te servira à visualiser tes progrès tout au long de l’année. Il te permettra également.
D.Enselme : VARI-NFP 135 cours n°5 1 Chapitre 5 : conception de programmes Décomposition par raffinements successifs Décomposition itérative Décomposition.
I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB GFDL 1.2 CM 7/8 v1.2.
Organisation, gestion de données Les connaissances que l'enseignant doit maîtriser à son niveau Présentation réalisée à partir de l'ouvrage de Roland Charnay.
Algorithmique ‘’ Un algorithme est une suite finie et non-ambiguë d’instructions permettant de donner la réponse à un problème. ‘’ Niveau de difficulté.
UE2 - M22 Licence acoustique
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Information, Communication, Calcul
« Un langage de programmation est une convention pour donner des ordres à un ordinateur. Ce n’est pas censé être obscur, bizarre et plein de pièges subtils.
Notions de base, connexité
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Algorithmique et programmation de modèles numériques
Techniques de décomposition
Semaine #1 INF130 par Frédérick Henri.
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Cours 4 : Tris de Tableaux
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap5: Les méthodes de résolution exactes.
Principes de programmation (suite)
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
Algorithmique - L’affectation -
Algorithmiques Abdelbasset KABOU
Information, Calcul, Communication
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Chapitre 2: Les équations et les inéquations polynômes
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap7: Les méthodes de résolution exactes.
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’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
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
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
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.
Introduction à l’algorithmique et à la programmation Modified by Dr. Mhamed Zineddine INSA Euro-Med Taken from:INSA de Lyon, Departement Telecommunications,
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Calcul Scientifique Initiation à SCILB
ACP Analyse en Composantes Principales
OPTIMISATION 1ère année ingénieurs
Algorithmique Avancée et Complexité
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
Mode, moyenne et médiane
CSI 3505 / Automne 2005: Conception et Analyse des Algorithmes I.
Définition : 2 Les structures de contrôle conditionnelles permettent à un programme de modifier son traitement en fonction d’une condition.
Information, Calcul, Communication
RABAH M ed Ali 2018/2019
Recherche de zero d'une fonction MARMAD ANAS MPSI -2.
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
PROGRAMMATION ET ENSEIGNEMENT
Flowchart Itération Cours 04.
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.
Introduction à L’Informatique
A. Zemmari SDRP & MA Problème du rendez vous : un algorithme probabiliste et une analyse probabiliste A. Zemmari.
Type Tableau Partie 1 : Vecteurs
Transcription de la présentation:

1 UMLV  Université de Marne-la-Vallée STRUCTURES DE DONNÉES Maxime CROCHEMORE

2 UMLV  Plan du cours Structures de données Algorithmes, preuve, complexité Récursivité Types abstraits, listes, ensembles Classements Recherches Algorithmique Graphes et leurs traitements Algorithmes sur les langages et automates Traitement des chaînes de caractères

3 UMLV  Algorithmique Conception de méthodes pour la résolution de problèmes Description des données Description des méthodes Preuve de bon fonctionnement Complexité des méthodes Efficacité : temps de calcul, espace nécessaire,... Complexité intrinsèque, optimalité Solutions approchées Réalisation - implémentation Organisation des objets Opérations élémentaires

4 UMLV  Modèle Mathématique Types de données abstraits Structures de données Algorithme informel ou abstrait Algorithme formalisé Super-Pascal Programme Pascal, C, Java,...

5 UMLV  Algorithme Al Khowarizmi, Bagdad IXè siècle. Encyclopedia Universalis : « Spécification d’un schéma de calcul sous forme d’une suite finie d’opérations élémentaires obéissant à un enchaînement déterminé. » DONNÉES RÉSULTATS, ACTIONS Composition d ’un nombre fini d’opérations dont chacune est : définie de façon rigoureuse et non ambiguë effective sur les données adéquates (exécution en temps fini)

6 UMLV  Bibliographie Beauquier, Berstel, Chrétienne Éléments d’algorithmique, Masson, Sedgewick Algorithmes en C, InterÉditions, Aho, Hopcroft, Ullman Structures de données et algorithmes, InterÉditions, Cormen, Leiserson, Rivest Algorithmes, Dunod, 1994.

7 UMLV  Spécification d ’un algorithme : ce que fait l’algorithme cahier des charges du problème à résoudre Expression d ’un algorithme : comment il le fait texte dans un langage de type Pascal / C Implémentation d ’un algorithme : traduction du texte précédent dans un langage de programmation réel Bien distinguer !

8 UMLV  Éléments de méthodologie Programmation structurée Modularité Programmation fonctionnelle Récursivité Types abstraits de données Objets Réutilisabilité du code

9 UMLV  Exemple : classement Suites = (7, 3, 9, 4, 3, 5) Suite classéec = (3, 3, 4, 5, 7, 9) (en ordre croissant) Spécification suite suite classée Méthode informelle (Bulles) tant que il existe i tel que s i > s i +1 faire échanger (s i, s i +1 ) Opérations élémentaires comparaisons transpositions d’éléments consécutifs

10 UMLV  Preuve Inversion : (i,j) tels que i s j Inv(s) = nombre d’inversions dans la suite s Inv(7, 3, 9, 4, 3, 5) = 8 s = (s 1, …, s i-1, s i, s i+1, s i+2, …, s n ) échange de s i et s i+1 s’ = (s 1, …, s i-1, s i+1, s i, s i+2, …, s n ) Note : si s i > s i+1, alors Inv(s’) = Inv(s) - 1 c suite classée Inv(c) = 0

11 UMLV  Formalisation Algorithme Bulles1 répéter { i : = 1 ; tant que i < n et s i  s i+1 faire i := i + 1 ; si i < n alors {échanger (s i, s i+1 ) ; inversion := vrai ; } sinon inversion := faux ; } tant que inversion = vrai ;

12 UMLV  Temps de calcul Complexité en temps T (algo, d) = temps d'exécution de l'algorithme algo appliqué aux données d Éléments de calcul de la complexité en temps T (opération élémentaire) = constant T ( si C alors I sinon J )  T (C) + max ( T (I), T (J) ) T ( pour i  e 1 à e 2 faire I i )  T (e 1 ) + T (e 2 ) +  T (I i ) Temps de calcul de procédures récursives  solution d’équations de récurrence

13 Temps de calcul (suite) T (algo, d) dépend en général de d. Complexité au pire T MAX (algo, n)=max { T (algo, d) ; d de taille n } Complexité au mieux T MIN (algo, n)=min { T (algo, d) ; d de taille n } Complexité en moyenne T MOY (algo, n)=  p(d). T (algo, d) d de taille n p(d) = probabilité d'avoir la donnée d T MIN (algo, n)  T MOY (algo, n)  T MAX (algo, n) UMLV 

14 Algorithme Bulles2 { pour j := n-1 à 1 pas -1 faire pour i := 1 à j faire si s i > s i+1 alors échanger(s i, s i+1 ) ; } Temps d ’exécution T MAX (Bulles2, n) j donné  temps  k. j + k' T MAX (Bulles2, n)  (k. j + k') + k'' j  + k'.(n-1) + k'' Nb comparaisons =Nombre d'échanges  UMLV 

15 Comparaisons de complexités Ordres de grandeur asymptotique "grand O" T (n) = O ( f(n) ) ssi  c > 0  N > 0  n > N T (n)  c.f(n) "grand oméga" T (n) =  ( f(n) ) ssi  c > 0  N > 0  n > N T (n)  c.f(n) "grand théta" T (n) =  ( f(n) ) ssi T (n) = O ( f(n) ) et T (n) =  ( f(n) ) Exemple (complexités au pire) T (BULLES2,n) = O(n 2 ) =  (n 2 ) T (BULLES1,n) = O(n 3 ) =  (n 3 ) UMLV 

16 UMLV  Ordres de grandeur (exemples) 1, log n, n, n.log n, n 2, n 3, 2 n n T(n)T(n) 1 Log n n 2 n 2n2n

17 UMLV  Évolution du temps Évolution de la taille quand la taille est quand le temps est 10 fois plus grande10 fois plus grand 1 t  log 2 n t + 3,32 n 10 n 10 x t10 x n n log 2 n (10 +  ) x t (10 -  ) x t n x t 3,16 x n n x t 2,15 x n 2 n t 10 n + 3,32

18 UMLV  Optimalité E (P) = ensemble des algorithmes qui résolvent un problème P au moyen de certaines opérations élémentaires. A  E (P) est optimal en temps (par rapport à E (P)) ssi  B  E (P)  donnée d T (B,d)  T (A,d) A  E (P) est asymptotiquement optimal ssi T (A,n) = O( T (B,n)) Exemple ( complexité au pire) BULLES 2 est asymptotiquement optimal parmi les algorithmes de classement qui utilisent les opérations élémentaires : comparaisons, transpositions d’éléments consécutifs. Preuve : Inv((n,n-1, …,1)) = = O (n 2 )

19 UMLV  Remarques 1. Temps de conception ne doit pas être >> temps d ’exécution. 2. La complexité de la description nuit à la mise à jour d ’un algorithme. 3. Les constantes de proportionnalité peuvent être importantes si les données sont réduites. 4. Réduire le temps peut conduire à augmenter l’espace nécessaire 5. Pour les algorithmes numériques, la précision et la stabilité des valeurs sont des critères importants.

20 UMLV  P G C D Spécification Calculer pgcd(n,m), plus grand diviseur commun aux entiers  0, n et m. Algorithme 1 (n  m) pour i : = m à 1 pas -1 faire si i divise n et m alors retour (i) pgcd (21,9) = 3 [21 = 3x7, 9 = 3x3]7 étapes Algorithme d ’Euclide (300 avant J-C) division entière n = q.m + r, 0  r < m propriété : pgcd (n,m) = pgcd (m,r) pgcd(n,m) = si m = o alors n sinon pgcd(m, n mod m) Preuve : si n<m première étape = échange, sinon propriété arithmétique Terminaison : m décroît à chaque étape (strictement) pgcd(9,21) = pgcd(21,9) = pgcd(9,3) = pgcd(3,0) = 3 3 étapes

21 UMLV  Complexité Algorithme 1 T (Algo1, (n,m)) = O(min(m,n)) moins de 2.min(n,m) divisions entières Algorithme d’Euclide Théorème de Lamé (1845) : (n  m) Si l ’algorithme d ’Euclide nécessite k étapes pour calculer pgcd (n,m) on a n  m  Fib k [Fib 0 = 0, Fib 1 = 1, Fib k = Fib k-1 + Fib k-2, pour k>1] pgcd(21,13) = pgcd(13,8) = pgcd(8,5) = pgcd(5,3) = pgcd(3,2) = pgcd(2,1) = pgcd(1,0) = 1 T (Euclide, (n,m)) = O(log min(n,m))

22 UMLV  Version récursive function PGCD(n,m: integer): integer; {n>=0, m>=0} begin if m = 0 then return (n) else return (PGCD(m, n mod m)); end; Version itérative : function PGCD(n,m: integer): integer; {n>=0, m>=0} var temp; begin while m > 0 do begin temp := m; m := n mod m; n := temp; end; return (n); end;

23 UMLV  Version récursive : int PGCD(int n, int m){ /* n>=0, m>=0 */ if (m == o) return (n); else return ( PGCD(m, n % m)); } Version itérative : int PGCD(int n, int m){ /* n>=0, m>=0 */ int temp; while (m > o){ temp = m; m = n % m; n = temp; } return (n); }

24 Récursivité terminale fonction F(x) ; début si C(x) alors { I ; retour (y); } sinon {J; retour ( F(z) ) ; } fin. SEUL APPEL RÉCURSIF Élimination (par copier-coller) : fonction F(x) ; début tant que non C(x) faire {J; x := z; } { I ; retour (y); } fin. UMLV 

25 Factorielle fonction FAC(n) ;fonction FAC'(n, m)début si n=0 alors retour (1)si n=0 alors retour (m) sinon retour ( n* FAC(n-1) ) ;sinon retour ( FAC'(n-1, n*m) ) ; fin.fin. RÉCURSIVERÉCURSIVITÉ TERMINALE fonction FAC(n) ;fonction FAC'(n, m) ;début m : = 1 ; tant que n > 0 faire tant que n > 0 faire { m : = n* m ; n : = n-1 ; } { m := n* m ; n := n-1 ; } retour (m) ; retour (m) ;fin. fin. ITÉRATIVE UMLV 

26 Tours de Hanoï RÈGLES (opérations élémentaires) 1. déplacer un disque à la fois d'un bâton sur un autre 2. ne jamais mettre un disque sur un plus petit BUT transférer la pile de disques de a vers b EXEMPLE (3 disques) UMLV 

27 Spécification Calculer H(n, x, y, z) = suite des coups pour transférer n disques de x vers y avec le bâton intermédiaire z (n   1). Relations x-y si n = 1 H(n, x, y, z) = H(n-1, x, z, y). x-y. H(n-1, z, y, x) si n > 1 Algorithme (n  1) fonction H(n, x, y, z) ; début si n = 1 alors écrire (x-y) ; sinon {H(n-1, x, z, y); écrire(x-y); H(n-1, z, y, x); } fin. UMLV 

28 Exécution H (3, a, b, c) H (2, a, c, b) a - b H (2, c, b, a) H (1, a, b, c) a - c H (1, b, c, a) H (1, c, a, b) c - bH (1, a, b, c) a - bb - cc - a a - b Temps d ’exécution T (H, n disques) = O(2 n ) Longueur ( H(n, a, b, c) ) = 2 n -1 H est optimal (parmi les algorithmes qui respectent les règles) UMLV 

29 Jeu des chiffres Spécification Données :w 1, w 2, …, w n s Résultat :une partie I de (1, 2, …, n) telle que  w i = s  sinon i  I Algorithme récursif fonction CHIFFRES (t, i) ; / * prend la valeur vrai ssi il existe une partie de (i, i+1,..., n) qui donne la somme t ; écrit les nombres correspondants */ début si (t = 0 ) alors retour ( vrai ) sinon si ( t n ) alors retour ( faux ) sinon si CHIFFRES ( t - w i, i+1) alors { écrire (w i ) ; retour ( vrai ) ; } sinon retour (CHIFFRES ( t, i+1) ) ; fin. entiers > 0 UMLV 

30 UMLV  Exécution surw 1 = 2, w 2 = 9, w 3 = 10, w 4 = 7 s = 19 ti faux faux faux vrai --> w 4 = 7 vrai --> w 3 = 10 vrai vrai --> w 1 = 2 vrai

31 Complexité en temps = O(2 n ) Preuve : on vérifie que si s >  w i l'algorithme parcourt tous les sous-ensembles de (1, 2, …, n). Il y en a 2 n. UMLV 