sensibilisation à lalgorithmique et structure de données
TRANSCRIPT
![Page 1: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/1.jpg)
Sensibilisation à l’Algorithmique
et structure de données
![Page 2: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/2.jpg)
2
Algorithme
Permet de résoudre un problème donnéex: Trouver le salaire minimal et le salaire maximal
d’un ensemble de salariésTrier les salariés par ordre d’arrivée dans l’entreprise….
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
![Page 3: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/3.jpg)
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
![Page 4: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/4.jpg)
4
Exemple
Exemple de problème à résoudreTrouver 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 c’est provisoirement le salaire minimal
2. construire la liste résultatParcourir la liste salarié par salarié et si le salaire est égal au salaire minimal alors ajouter le salarie à la liste résultat
![Page 5: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/5.jpg)
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
![Page 6: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/6.jpg)
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
![Page 7: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/7.jpg)
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
![Page 8: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/8.jpg)
8
Structures de Données
Sets : notion d’ensemble Les données n’ont pas besoin d’être retrouvées selon un
ordre
Maps : un index unique Les données peuvent être retrouvées directement à partir
d’un index unique (nom – prénom du salarié)
Piles, files : gestion des accès aux données
Graphes, arbres, arbres binaires de recherche
![Page 9: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/9.jpg)
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)
![Page 10: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/10.jpg)
10
Itérations
int i = 0;
while(i<10){
System.out.println(“Coucou”);
i +=1;
}
![Page 11: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/11.jpg)
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”);
![Page 12: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/12.jpg)
12
Tableaux
Déclaration et allocation mémoire d’un tableau de 10 entiersint [] 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;
![Page 13: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/13.jpg)
13
Exemples d’algo 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
![Page 14: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/14.jpg)
14
Exemple d’Itération
int i = 0; int somme=0;
while(i<hauteurs.length){
somme=somme+hauteurs[i]; i++;
}
int max=hauteurs[0];
for (int i=1; i<hauteurs.length; i++){
if (max < hauteurs[i]) max=hauteurs[i];
}
![Page 15: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/15.jpg)
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];
![Page 16: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/16.jpg)
16
La classe ArrayList : Liste
Déclaration et allocation mémoireArrayList<Integer> hauteurs;hauteurs = new ArrayList<Integer>();ArrayList<Salarie> lesSalaries;lesSalaries = new ArrayList<Salarie>();
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)
![Page 17: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/17.jpg)
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
![Page 18: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/18.jpg)
18
Exemple d’Itération
int i = 0; int somme=0;while(i<hauteurs.size()){ somme=somme+hauteurs.get(i).value(); i++;}
int max=hauteurs.get(0).value();for (int i=1; i<hauteurs.size(); i++){ if (max < hauteurs.get(i).value())
max=hauteurs.get(i).value();}
![Page 19: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/19.jpg)
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.
![Page 20: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/20.jpg)
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?
![Page 21: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/21.jpg)
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
![Page 22: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/22.jpg)
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) n2
Complexité : 1 log n n n log n n2 n3 2n n!
![Page 23: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/23.jpg)
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).
![Page 24: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/24.jpg)
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<n)retourner fact
![Page 25: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/25.jpg)
25
Calcul du pgcd
PGCD(a,b)n <- a; m <- b;TantQue m != 0 Faire r <- n mod m n <- m m <- rFinTantQueretourner n
![Page 26: Sensibilisation à lAlgorithmique et structure de données](https://reader035.vdocuments.site/reader035/viewer/2022070309/551d9d81497959293b8bb2b9/html5/thumbnails/26.jpg)
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)