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

Références Bibliographiques 1. Th. Cormen, Ch. Leiserson, R. Rivest, « Introduction à lalgorithmique », DUNOD, Paris, 1994, (2002) 2. Ch. Froidevaux, M.-C.

Présentations similaires


Présentation au sujet: "Références Bibliographiques 1. Th. Cormen, Ch. Leiserson, R. Rivest, « Introduction à lalgorithmique », DUNOD, Paris, 1994, (2002) 2. Ch. Froidevaux, M.-C."— Transcription de la présentation:

1 Références Bibliographiques 1. Th. Cormen, Ch. Leiserson, R. Rivest, « Introduction à lalgorithmique », DUNOD, Paris, 1994, (2002) 2. Ch. Froidevaux, M.-C. Gaudel et M. Soria Types de données et algorithmes, McGraw-Hill, Collection Informatique, A. Aho, J. Ulman, « Concepts fondamentaux de linformatique », DUNOD, M. Quercia, « Algorithmique », Vuibert, 2002

2 Sommaire Chapitre I. Algorithmes et Algorithmique. Notions de base Chapitre II.Rappels mathématiques et complexité Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri) Chapitre IV. Structures linéaires (piles, files, listes chaînées) Chapitre V. Tables de hachage Chapitre VI. Arbres (définition, parcours, représentation) Chapitre VII. Tri Chapitre VIII. Introduction aux graphes

3 Chapitre I. Algorithmes et Algorithmique. Notions de base Notion de lAlgorithme Expression des algorithmes Types dalgorithmes (récursifs, itératifs) Critères dévaluation des algorithmes 5. Complexité

4 Notion de lAlgorithme Algorithme est une notion connue depuis lantiquité –Babyloniens, 1800 avant J.C. –Euclide, III siècle de n.è. « algorithme de la division entière » Terme « Algorithme » - vient du nom dun mathématicien perse « al-Khowa-rismi » La notion est très liée à lidée de machine capable dexécuter des opérations mathématiques élémentaires. Machine de Babbage(1833), Ada Lovelace (Byron) (1840) Vers 1930 machine abstraite de Turing.

5 Machine de Von Neumann(1945) Mémoire UAL UContrôle Accumulateur Programme EntréesSorties

6 Définition Un algorithme décrit un traitement sur un certain nombre fini de données (éventuellement aucune). Un algorithme est la composition dun ensemble fini détapes, chaque étape étant formée dun nombre fini dopérations dont chacune est : –définie de façon rigoureuse et non ambiguë; –effective, cest à dire pouvant être effectivement réalisée par une machine. Quelle que soit la donnée sur la quelle il travaille, un algorithme doit toujours se terminer après un nombre fini dopérations et fournir un résultat [1]. Algorithmes « déterministes » vs « stochastiques »

7 Expression des algorithmes Pseudo-code Exalgo : langage proche au Pascal, C++, …permet décriture logique Exemple : const int N=100; int Sigma =0; for (int i=0;i

8 Pseudo-Code Structure dun programme : Partie déclarative : types, variables, constantes Exemples : Type Enregistrement : entier a; caractère c; Fin Enregistrement; // Var a,b : réelles; Const entier c; Partie « exécutable » : instructions –Parenthèses opératoires « Début », « Fin MonProgramme » –« Début » et « Fin » pour des blocs dinstructions

9 Type pointeur Si T est un type quelconque, alors ^T représente un pointeur sur le type T Type1 = Enregistrement a : entier; suivant : ^Type1; Fin Enregistrement;

10 Structures de contrôle (1) (1) Séquence dinstructions : a := 12; b := 21; c := a+b; (2) Alternative : Si condition alors exemple : max(a,b) (A) sinon (B) Fin-Si

11 Structures de contrôle (2) Répétition: Tant que, Pour, Répéter jusquà Exemple : calcul de f(x)=x 2 sur [a;b] en a, a+, a+2,… (1) Tant que a

12 Strucutres de contrôle (3) Repeter //traitement c:=lire_un_caractère(); afficher_un_caractère(c); Jusquà c =! //condition darrêt

13 Spécification des algorithmes La spécification dun algorithme décrit ce que lalgorithme fait, sans détailler comment. Il est important dindiquer les entrées et les sorties

14 Exemple On considère le problème de recherche suivant : Entrée : Une séquence de n Nombres A={a1, a2, …, an} et une valeur v. Sortie : Un indice i tel que v=A[i], ou la valeur spéciale NIL si v nappartient pas à A.

15 Procédures et fonctions Le pseudo-code admet trois formes de représentation dun algorithme –programme –procédure –fonction A proprement parler, les 3 peuvent être exprimés à laide des deux derniers. (Remarquons que ce nest pas le cas des langages de programmation moderne tel le C++ où tout algorithme peut être exprimé sous forme dune fonction) Néanmoins nous allons garder cette partition en « fonction » et « procédure ».

16 Procédure vs fonction Procédure Division_Euclidéenne(val a,b:entiers, réf p,q:entiers); Fonction PGCD(val a,b:entiers):entier; Une procédure est nécessaire quand il sagit de modifier la valeur de plusieurs variables de sortie Une fonction renvoie toujours un résultat (qui peut être représenté sous forme dun ensemble, dun vecteur, … dune collection dobjets)

17 Passage par valeur ou par référence? Passage par valeur : les valeurs dappel restent inchangées quelles que soient opérations effectuées sur les variables à lintérieur de la procédure/fonction Passage par référence : cest ladresse demplacement dans la mémoire de la machine abstraite Exemple : Procédure qui additionne et soustrait deux nombres Procédure AddSous(val a,b:entier, réf somme, reste : entiers) Ou Procédure AddSous(réf a,b : entiers)

18 Types dalgorithmes (récursifs, itératifs) Lexpression des algorithmes sous forme récursive permet des descriptions concises qui se prêtent bien à des démonstrations par récurrence. Le principe de récursivité : utiliser pour décrire lalgorithme sur une donnée d, lalgorithme lui-même appliqué à un sous-ensemble de d ou à une donnée d plus petite. Pour un algorithme récursif on définit : –relation de récurrence ; –base de récursivité ; –domaine de récursivité (rejoint le domaine de validité)

19 Algorithmes récursifs (1) Exemple 1. Factorielle Def. 1.Relation de récurrence : 2.Base : 3.Domaine : N

20 Algorithmes récursifs (2) Version récursiveVersion itérative Fonction Fact(val n: entier):entier Var fct : entier; Debut Si n=0 alors fct := 1; sinon fct := n*Fact(n-1); FinSi retourner fct; Fin Fact Fonction Fact(val n: entier):entier Var fct : entier; Si n=0 alors fct=1; sinon fct:=n; Tant que (n>1) fct:=fct*(n-1); n:=n-1; FinTantQue FinSi retourner fct; Fin Fact

21 Algorithmes récursifs (3) Exemple 2 : pgcd On utilise la propriété suivante pour tout a>=0 et b>0 pgcd(a,b) = pgcd(b, a mod b); A. Version récursive 1. Relation de récurrence pgcd(a,b)=pgcd(b, a mod b); 2. Base de récursivité a mod b =0=>pgcd=b 3. Domaine a>=0, b>0.

22 Algorithmes récursifs (4) Fonction pgcd(val a,b : entiers):entier Var r : entier; Début /* a est supposé supérieur ou égal à b*/ r:= a mod b; Si r=0 alors retourner b; sinon retourner pgcd(b,r); /* b est supéieur à r*/ FinSi Fin pgcd

23 Algorithmes récursifs (5) Exemple 2 : pgcd B) Version itérative Fonction pgcd(val a,b : entiers):entier Var r : entier; Debut r:= a-(a/b)*b /* rappel du modulo*/ Tant que r!=0 faire a:=b; b:=r; r:= a-(a/b)*b; FinTq retourner b; Fin pgcd

24 Critères dévaluation des algorithmes Terminaison Validité Lisibilité Complexité

25 5. Complexité Lobjet de lanalyse de la complexité dun algorithme est de quantifier les deux grandeurs physiques « temps dexécution » et « place mémoire » dans le but de comparer entre eux différents algorithmes qui résolvent le même problème. Complexité en temps : le nombre dopérations effectuées par le programme et le temps dexécution Complexité en espace : le nombre dinstructions et le nombre de données du programme avec le nombre de mots mémoire nécessaires pour stocker chacune dentre elles, ainsi que le nombre de mots mémoire supplémentaires pour la manipulation des données. Le but de lanalyse de la complexité des algorithmes est détablir des résultats généraux, permettant destimer lefficacité intrinsèque de la méthode utilisée par un algorithme, indépendamment de la machine, du langage de programmation, du compilateur et de tous les détails dimplémentation.

26 Complexité en temps Mesure de complexité : nombre dopérations fondamentales Exemples : -recherche séquentielle dans une liste – OF est celle de comparaison; -calcul de la somme de n nombres – OF est celle daddition; -multiplication des matrices – OF sont laddition et la multiplication Etc…

27 Calcul de complexité (1) Dénotons C(X) le nombre dopérations fondamentales de la construction X 1.Lorsque les opérations sont dans une séquence dinstructions, leur nombres sajoutent (ex. incrémenter n variables) 2.Pour les branchements conditionnels C(Si Cond alors I1 sinon I2)< C(Cond)+max(C(I1),C(I2)) – majoration 3.Pour les boucles, le nombre dopérations dans la boucle est Avec n – le nombre ditérations dans la boucle, C(i) – le nombre dopérations fondamentales à chaque itération

28 Calcul de complexité (2) 4.Pour les appels des procédures ou fonctions : sil ny a pas dappels récursifs, on peut toujours trouver une façon dordonner les procédures et fonctions de telle sorte que chacune dentre elles nappelle que des procédures et des fonctions dont le nombre dopérations fondamentales a déjà été évalué. 5.Appels récursifs : résolution de la relation de récurrence Exemple (factorielle) Fonction Fact(val n: entier):entier Var fct : entier; Debut Si n=0 alors fct := 1; sinon fct := n*Fact(n-1); FinSi retourner fct; Fin Fact Dénotons T(n) le nombre des opérations fondamentales (multiplications). T(0)=0, T(n)=T(n-1)+1, T(n)=T(n-2)+1+1, … T(n)=T(0) ….=n Ordre de grandeur, récurrences => bases mathématiques.

29 Complexité : du meilleur au pire (1) Exemple : algorithme de recherche séquentielle dans un tableau. Son temps dexécution dépend de la donnée sur laquelle il opère. On peut définir plusieurs quantités pour caractériser le comportement dun algorithme sur lensemble Dn des données de taille n. Notons coût A (d) la complexité en temps de lalgorithme A sur la donnée d (de taille n). A) La complexité dans le meilleur des cas B) La complexité dans le pire des cas C) La complexité en moyenne

30 Complexité : du meilleur au pire (2) Relations entre les complexités Si le comportement de lalgorithme ne dépend que de la taille des données, alors les trois sont égales. Un exemple : Algorithme de la recherche séquentielle dun élément dans un tableau non-ordonné. Le résultat est lindice de lélément ou 0 Var L: tableau[1…n] des entiers X: entier J: entier Début j:=1 TQ (j<=n et L[j]!=X) faire j:=j+1; FTQ Si j>n alors j:=0 Fsi

31 Complexité : du meilleur au pire (3) Analyse de la complexité Opération fondamentale : comparaison Solution : dénotons q la probabilité que X se trouve dans le tableau. Supposons que toutes les places sont équiprobables p(i)=1/n Ainsi la probabilité que X se trouve dans le tableau en i-ème place est p(Dn,i)=qxp(i)=q/n La probabilité que X ne se trouve pas dans le tableau est : p(Dn,i)=1-q

32 Comparaisons de complexités Comparer sur un ensemble des données très grand; « Ordre de grandeur », « Comportement asymptotique »


Télécharger ppt "Références Bibliographiques 1. Th. Cormen, Ch. Leiserson, R. Rivest, « Introduction à lalgorithmique », DUNOD, Paris, 1994, (2002) 2. Ch. Froidevaux, M.-C."

Présentations similaires


Annonces Google