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

Sensibilisation à lAlgorithmique et structure de données.

Présentations similaires


Présentation au sujet: "Sensibilisation à lAlgorithmique et structure de données."— Transcription de la présentation:

1 Sensibilisation à lAlgorithmique et structure de données

2 2 Algorithme Permet de résoudre un problème donné ex: Trouver le salaire minimal et le salaire maximal dun ensemble de salariés Trier les salariés par ordre darrivée dans lentreprise…. 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

3 3 Pour résoudre un problème Identifier les données à manipuler: Il faut donc stocker les salariés dans une structure de données permettant leur manipulation Il faut donc décrire un salarié avec les informations nécessaires et suffisantes : salaire, date, nom, prénom, service Définir létat initial du problème Une liste de salariés Définir létat final : selon le sous problème

4 4 Exemple Exemple de problème à résoudre Trouver les salariés touchant le salaire minimal Input: liste non triée de salariés Output: liste des salariés correspondant au salaire minimal Algo: 1. trouver le salaire minimal Parcourir la liste salarié par salarié et si le salaire est inférieur au salaire précédent alors cest provisoirement le salaire minimal 2. construire la liste résultat Parcourir la liste salarié par salarié et si le salaire est égal au salaire minimal alors ajouter le salarie à la liste résultat

5 5 Types de problèmes Tris d'éléments d'une liste (trier les salariés) Recherches d'un élément (trouver le salarié à partir de son nom) Calculs (calculer la moyenne des salaires par service, ….) Algorithmes exacts / d'approximation

6 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 7 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 Packages : java.lang et java.util Tableaux nombre max de données est connu (le tableau peut être incomplet) Listes la liste contient toujours le nombre de données courant, on ne connait pas forcément le nombre max

8 8 Structures de Données Sets : notion densemble Les données nont pas besoin dêtre retrouvées selon un ordre Maps : un index unique Les données peuvent être retrouvées directement à partir dun index unique (nom – prénom du salarié) Piles, files : gestion des accès aux données Graphes, arbres, arbres binaires de recherche

9 9 Structures de contrôle Structures de contrôle conditionnelles 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)

10 10 Itérations int i = 0; while(i<10){ System.out.println(Coucou); i +=1; }

11 11 Itérations int i = 0; do{ System.out.println(Coucou); i +=1; }while(i<10); for (int i=0; i<10; i++) System.out.println(Coucou);

12 12 Tableaux Déclaration et allocation mémoire dun tableau de 10 entiers int [] hauteurs = new int[10]; Accès au premier élément : hauteurs[0] Accès au dernier élément : hauteurs[hauteurs.length -1] i ième élément : hauteurs[i-1] init./modif. d'un élément: hauteurs[i] = 3;

13 13 Exemples dalgo sur lesTableaux Calcul de la moyenne des valeurs stockées dans le tableau 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

14 14 Exemple dItération int i = 0; int somme=0; while(i

15 15 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];

16 16 La classe ArrayList : Liste Déclaration et allocation mémoire ArrayList hauteurs; hauteurs = new ArrayList (); ArrayList lesSalaries; lesSalaries = new ArrayList (); Ne peuvent contenir que des objets Accès au premier élément : lesSalaries.get(0) Dernier élément : lesSalaries.get(liste.size()-1) i ième élément : lesSalaries.get(i-1)

17 17 La classe ArrayList : Listes ajout d'un élt: lesSalaries.add( new Salarie (Dery, AM, RAINBOW,2000); modif d'un élt: hauteurs.set(i,new Integer(4)); suppression d'un élt: lesSalaries.remove(i); mêmes algos que sur les tableaux

18 18 Exemple dItération int i = 0; int somme=0; while(i

19 19 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.

20 20 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?

21 21 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

22 22 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 Ordre de grandeur: C(n) n 2 Complexité : 1 log n n n log n n 2 n 3 2 n n!

23 23 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).

24 24 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

25 25 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

26 26 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)


Télécharger ppt "Sensibilisation à lAlgorithmique et structure de données."

Présentations similaires


Annonces Google