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

IPA – Catherine Faron Zucker Introduction à lAlgorithmique.

Présentations similaires


Présentation au sujet: "IPA – Catherine Faron Zucker Introduction à lAlgorithmique."— Transcription de la présentation:

1 IPA – Catherine Faron Zucker Introduction à lAlgorithmique

2 IPA – Catherine Faron Zucker 2 Introduction à l'Algorithmique Algorithme Validité d'un algorithme Preuve de sa correction Analyse d'un algorithme Complexité d'un algorithme Structures de données Conception d'un algorithme

3 IPA – Catherine Faron Zucker 3 Algorithme Permet de résoudre un problème donné ex: Trier une liste de noms par ordre alphabétique Procédure de calcul bien définie Séquence d'instructions élémentaires termine en un temps fini prend une ou des valeur(s) en entrée donne une ou des valeur(s) en sortie

4 IPA – Catherine Faron Zucker 4 Exemple Exemple de problème à résoudre Comment trier une liste d'élèves par ordre alpha? Input: liste non triée Output: liste triée Algo: ???

5 IPA – Catherine Faron Zucker 5 Types de problèmes Tris d'éléments d'une liste Recherche d'un élément Calcul sur des chaînes (caractères, nombres, bits,...) Problèmes de graphes Problèmes combinatoires Problèmes géométriques Problèmes numériques Algorithmes exacts / d'approximation

6 IPA – Catherine Faron Zucker 6 Algorithme et Programme Un algorithme est implémenté dans un langage de programmation Un même algorithme peut être implémenté dans différents langages (Java, C, Python, Caml,...) Pseudo-code

7 IPA – Catherine Faron Zucker 7 Validité d'un algorithme Précondition doit être vérifiée avant un traitement donné, garantit que la possibilité de déroulement du traitement. Postcondition doit être vérifiée après le déroulement du traitement, garantit que le traitement a bien permis de réaliser ce pourquoi il a été réalisé. Invariant condition qui est toujours vraie, caractérise l'état interne de tout ou partie d'un algo.

8 IPA – Catherine Faron Zucker 8 Analyse d'un algorithme Complexité: mesure de son efficacité Taille mémoire nécessaire à son exécution Temps d'exécution nécessaire dans le meilleur des cas dans le pire des cas en moyenne Exemple: recherche d'un élément dans une liste? Exemple: recherche du plus grand élément d'une liste?

9 IPA – Catherine Faron Zucker 9 Efficacité d'un algorithme Temps d'exécution fonction de la taille des données en entrée choix du bon paramètre taille d'une liste, degré d'un polynôme taille d'une matrice? nombre de noeuds, profondeur, largeur d'un graphe? nombre de mots d'un fichier ou nombre de caractères? fonction du nombre de fois où une opération de base est répétée dans l'algorithme

10 IPA – Catherine Faron Zucker 10 Efficacité d'un algorithme Temps d'exécution: T(n) C(n) t C(n) nombre de fois où l'opération de base de l'algorithme est exécutée t temps d'exécution de cette opération de base C(n) = ½ n (n-1) = ½ n 2 - ½ n Ordre de grandeur: C(n) n 2

11 IPA – Catherine Faron Zucker 11 Efficacité d'un algorithme Classes de complexité 1 log n n n log n n 2 n 3 2 n n! Notations asymptotiques: O(g(n)) Ω(g(n)) θ(g(n))

12 IPA – Catherine Faron Zucker 12 Structure de Données Moyen de stocker et organiser les données d'un algorithme accès aux données modification, mise à jour des données Tableaux, listes chaînées Piles, files Sets et Maps Graphes, arbres, arbres binaires de recherche

13 IPA – Catherine Faron Zucker 13 Conception d'un algorithme Stratégie de résolution d'un problème Approche itérative répéter jusqu'à obtention du résultat souhaité Approche récursive diviser pour régner

14 IPA – Catherine Faron Zucker 14 Structures de contrôle Structures de contrôle conditionnelle Si cond Alors instr FinSi Si cond Alors instr sinon instr FinSi (imbrications possibles) Structures de contrôle itératives TantQue cond Faire instr FinTantQue variantes (imbrications possibles)

15 IPA – Catherine Faron Zucker 15 Itérations int i = 0; while(i<10){ System.out.println(Coucou); i +=1; }

16 IPA – Catherine Faron Zucker 16 Itérations int i = 0; do{ System.out.println(Coucou); i +=1; }while(i<10); for (i=0; i<10; i++) System.out.println(Coucou);

17 IPA – Catherine Faron Zucker 17 Calcul du pgcd PGCD(a,b) n <- a; m <- b; TantQue m != 0 Faire r <- n mod m n <- m m <- r FinTantQue retourner n

18 IPA – Catherine Faron Zucker 18 Validité d'une boucle Invariant de boucle Initialisation Montrer que I est vrai avant d'entrer dans la boucle Conservation Montrer que si C et I sont vrais, alors après la liste d'instructions, I est encore vrai. Terminaison On en déduit que (I et non C) est vrai à la sortie de la boucle (si la boucle termine).

19 IPA – Catherine Faron Zucker 19 PGCD(a, b) n <- a; m <- b; { Invariant : pgcd(a,b)=pgcd(n,m) et n>=0 et m>=0 } TantQue m != 0 Faire r <- n mod m n <- m m <- r { pgcd(a,b)=pgcd(m,n) et m>=0 et n>0 } FinTantQue // pgcd(a,b)=pgcd(n,m) et n>=0 et m=0 // Donc n=pgcd(a,b)

20 IPA – Catherine Faron Zucker 20 Fact(n) i 1; fact 1 { Invariant: fact = i ! et i n } TantQue i < n Faire i i + 1 fact fact * i { Invariant: fact = i ! et i n } FinTantQue (fact = i ! et i n ) et non(i

21 IPA – Catherine Faron Zucker 21 Structures de Données Moyen de stocker et organiser les données d'un algorithme accès aux données modification, mise à jour des données Tableaux, listes chaînées Piles, files Sets et Maps Graphes, arbres, arbres binaires de recherche

22 IPA – Catherine Faron Zucker 22 Tableaux suite ordonnée d'éléments de taille fixe int [] tableau = new int[10]; premier élément : tableau[0] dernier élément : tableau[tableau.length -1] i ième élément : tableau[i-1] init./modif. d'un élément: tableau[i] = 3;

23 IPA – Catherine Faron Zucker 23 Tableaux valeur tableau[i] / indice i recherche du (des) élément(s) vérifiant une certaine propriété vérification de la présence ou l'absence d'une certaine valeur dans le tableau recherche de l'indice dans le tableau d'une valeur donné tri du tableau selon un certain critère

24 IPA – Catherine Faron Zucker 24 Matrices Tableau de tableaux : int [][] matrice = new int[10][15]; élément en ligne i et colonne j : matrice[i][j] Matrice carrée : int [][] matriceCarree = new int[7][7];

25 IPA – Catherine Faron Zucker 25 Listes suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir que des objets premier élément : liste.get(0) dernier élément : liste.get(liste.size()-1) i ième élément : liste.get(i-1)

26 IPA – Catherine Faron Zucker 26 Listes ajout d'un élt: liste.add(new Integer(3)); modif d'un élt: liste.set(i,new Integer(4)); suppression d'un élt: liste.remove(i); mêmes algos que sur les tableaux

27 IPA – Catherine Faron Zucker 27 Piles et Files Ordonnancements particuliers des éléments d'un tableau ou d'une liste Pile : empiler/dépiler des éléments statique ou dynamique selon qu'on utilise un tableau ou une liste File : enfiler /défiler des éléments implémentation par liste plus simple

28 IPA – Catherine Faron Zucker 28 Piles public class Pile{ private Object[] table; private int hauteur; public void empiler(Object o) {table[hauteur]=o; hauteur++;} public Object depiler() {hauteur--; return table[hauteur];} public Object sommet(){} public boolean vide(){} public boolean pleine(){} }

29 IPA – Catherine Faron Zucker 29 Files public class Pile{ private ArrayList liste; private int longueur; public void enfiler(Object o) {liste.add(o); longueur++;} public Object defiler() {longueur--; return liste.remove(0);} public Object tete(){} public Object queue(){} public boolean vide(){} }

30 IPA – Catherine Faron Zucker 30 Maps collection de paires d'objets, de taille variable HashMap surnoms; surnoms = new HashMap (); paires clé/valeur, clés uniques ajout d'un couple clé/valeur : surnoms.put(tartampion, dupont); suppression d'un couple clé/valeur : surnoms.remove(tartampion);

31 IPA – Catherine Faron Zucker 31 Maps plus de premier, dernier, i ième élément, récupération d'une valeur associée à une clé : String nom = surnoms.get(tartampion); récupération directe de la valeur associée à une clé : get de l'information de présence/absence d'une valeur: surnom.containsKey(dupont); d'une clé : surnom.containsValue(tartampion);

32 IPA – Catherine Faron Zucker 32 Sets ensemble non ordonné d'objets, de taille variable HashSet surnoms; surnoms = new HashSet (); ajout d'un élément : surnoms.put(tartampion); suppression : surnoms.remove(tartampion); test direct de la présence d'un élément : surnoms.contains(tartampion);

33 IPA – Catherine Faron Zucker 33 Maps et Sets Les structures de Maps et de Sets ne supportent que les opérations de dictionnaire: insérer, rechercher, supprimer HashMap et HashSet sont des implémentations à base de tables de hachage qui permettent de réduire le coût de ces opérations. à suivre...

34 IPA – Catherine Faron Zucker 34 Structures de données listes chaînées : cf. td simplement, doublement arbres arbres binaires arbres binaires de recherche graphes à suivre...

35 IPA – Catherine Faron Zucker 35 Conception d'un algorithme Stratégie de résolution d'un problème Approche incrémentale itérer jusqu'à obtention du résultat souhaité Approche récursive diviser pour régner: diviser en sous-problèmes régner sur les sous-problèmes combiner les solutions des sous-problèmes

36 IPA – Catherine Faron Zucker 36 PGCD(a, b) itératif n <- a; m <- b; TantQue m != 0 Faire r <- n mod m n <- m m <- r FinTantQue retourner n

37 IPA – Catherine Faron Zucker 37 PGCD(a, b) récursif diviser: pgcd(a,b) = pgcd(b, a mod b) semblable au problème initial de taille moindre régner: pgcd(a,0) = a combiner: pgcd(a,b)= pgcd(b,a mod b)=...

38 IPA – Catherine Faron Zucker 38 PGCD(a, b) récursif Si b=0 Alors retourner a //terminaison Sinon retourner pgcd(a, a mod b) finSi

39 IPA – Catherine Faron Zucker 39 Fac(n) Relation de récurence fac(n) = n * fac(n-1), n>0 fac(0) = 1 Algorithme Si n = 0 Alors retourner 1 Sinon retourner n * fac(n-1) FinSi

40 IPA – Catherine Faron Zucker 40 Fac(n) Complexité opération élémentaire : * nbre de fois où elle est effectuée fonction de n: M(n) relation de récurence: M(n) = 1 + M(n-1) pour n>0 et M(0) = 0 en développant, on a M(n) = M(n-i) – i pour tout i pour i=n, on obtient M(n) = M(O) + n = n cf. module Maths discrètes

41 IPA – Catherine Faron Zucker 41 Tours de Hanoï n disques de tailles décroissantes sur une tige Problème: comment faire passer les n disques sur une autre tige, en utilisant une tige intermédiaire afin qu'un disque ne soit jamais empilé sur un plus petit? Algorithme (récursif): faire passer n-1 disques sur la tige 2 faire passer le plus grand disque sur la tige 3 reste à faire passer les n-1 disques de t2 à t3

42 IPA – Catherine Faron Zucker 42 Tours de Hanoï Algorithme: faire passer n-1 disques sur la tige 2 faire passer le plus grand disque sur la tige 3 reste à faire passer les n-1 disques de t2 à t3 Complexité on compte le nbre de déplacements il est fonction du nombre de disques M(n) = M(n-1) M(n-1) pour n>1 et M(1)=1 M(n) = 2*M(n-1)+1 =... = 2 n -1 (algo exponentiel)

43 IPA – Catherine Faron Zucker 43 Recherche dichotomique Version itérative vue en TD Version récursive ?

44 IPA – Catherine Faron Zucker 44 Algorithmes de tri Structures de données ordonnées Nombreux algorithmes tri par sélection tri par insertion tri à bulles tri fusion tri rapide (quicksort)

45 IPA – Catherine Faron Zucker 45 Tri par sélection Principe recherche du plus petit élt du tableau et échange avec le premier élt recherche du plus petit élt du tableau entre les positions 2 et n-1 et échange avec le second élt... recherche du plus petit élt entre les positions n-2 et n-1 et échange avec l'élt en position n-2

46 IPA – Catherine Faron Zucker 46 Tri par sélection Algorithme itératif Pour i de 0 à n-2 Faire min <- i Pour j de i+1 à n-1 Faire Si tab[ j ] < tab[min] Alors min <- j FinSi FinPour Echanger tab[ i ] et tab[min] FinPour

47 IPA – Catherine Faron Zucker 47 Tri par insertion Principe le tableau étant trié jusqu'à l'élt i-1, insérer l'élt i à sa place parmi les i premiers élts récursion ou itération

48 IPA – Catherine Faron Zucker 48 Tri par insertion Algorithme itératif Pour i de 1 à n-1 Faire val <- tab[ i ] j <- i-1 TantQue j >= 0 et tab[ j ] > val Faire tab [ j+1] <- tab [ j ] j <- j - 1 FinTantQue tab [ j+1 ] <- val

49 IPA – Catherine Faron Zucker 49 Tri à bulles Principe comparaison 2 à 2 des éléments adjacents et échange s'ils ne sont pas ordonnés comme les bulles, les plus grands élts remonten en fin de liste

50 IPA – Catherine Faron Zucker 50 Tri à bulles Algorithme itératif Pour i de 0 à n-2 Faire Pour j de 0 à n-2-i Faire Si tab[ j+1 ] < tab[ j ] Alors échanger tab[ j+1 ] < tab[ j ] FinSi FinPour

51 IPA – Catherine Faron Zucker 51 Tri Fusion Principe divide and conquer division du tableau en 2 sous-tableaux tri récursif des 2 sous-tableaux fusion des 2 sous-tableaux Le coeur de l'algorithme est la fusion des 2 sous-tableaux triés

52 IPA – Catherine Faron Zucker 52 Tri fusion Algorithme TriFusion(tab[0.. n-1]) Si n > 1 Alors copie de tab[ 0.. n/2 -1] dans tab1 copie de tab[ n/2 n-1] dans tab2 TriFusion (tab1) TriFusion (tab2) Fusion (tab1, tab2, tab)

53 IPA – Catherine Faron Zucker 53 Quick Sort Principe divide and conquer partition du tableau en 2 sous-tableaux tel que l'élt à l'indice de partitionnement est bien placé tri récursif des 2 sous-tableaux Le coeur de l'algorithme est la partition en 2 sous-tableaux

54 IPA – Catherine Faron Zucker 54 Quick Sort Algorithme QuickSort(tab[ g.. d ) Si g < d Alors s <- Partition(tab) QuickSort(tab[g.. s-1]) QuickSort(tab[s+1.. d])


Télécharger ppt "IPA – Catherine Faron Zucker Introduction à lAlgorithmique."

Présentations similaires


Annonces Google