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

IFT-10541A : Hiver 2003 Semaine 5 : Piles et files.

Présentations similaires


Présentation au sujet: "IFT-10541A : Hiver 2003 Semaine 5 : Piles et files."— Transcription de la présentation:

1 IFT-10541A : Hiver 2003 Semaine 5 : Piles et files

2 2 Piles Piles : LIFO : last in, first out DAPS : dernier arrivé, premier sorti ex. : assiettes livres factures pile dexécution évaluation dexpressions inout pile

3 3 Files Files : FIFO : first in, first out PAPS : premier arrivé, premier sorti ex. : assiettes factures banque chaîne de montage imprimante tâches à exécuter outin file

4 4 Piles et files structures de données auxiliaires car utilisées par dautres structures (comme les listes ordonnées) utilité : support à des applications support à dautres structures de données modélisation de la réalité en informatique : système dexploitation gestion interne évaluation d expressions etc.

5 5 Piles espace de mémorisation temporaire, avec conventions de manipulation (gestion) : ajouter un nouvel élément sur la pile (empiler) enlever un élément de la pile (dépiler) regarder le premier élément de la pile indiquer si la pile est vide regarder si un élément est sur la pile remplacer un élément sur la pile pile

6 6 manipulations (empiler et dépiler) par le même point daccès in out pile out in Pile = liste + gestion adaptée

7 7 empiler (push) : dépiler (pop) : sommet (top) : pile vide ? élément sur la pile (peep) ? remplacer un élément sur la pile

8 8 Piles : spécifications formelles Une pile est une structure monolithique, c.-à- d. quelle n'est pas construite à l'aide de sous-piles. Les opérations ne vont pas créer de nouvel objet de type pile. La pile passée en paramètre (par référence) sera mise à jour (au besoin).

9 9 Piles : spécifications formelles empiler : p p + x Pile empiler(Pile p, TypeEl x, int *err) dépiler : -p Pile depiler(Pile p, TypeEl *x, int *err); sommet : !p TypeEl sommet(Pile p, int *err);

10 10 Piles : spécifications formelles pile vide : p = ? Bool pileVide(Pile p, int *err); appartenance : x p? Bool appartientP(Pile p, TypeEl x, int *err); remplacement : p p - x/y Pile remplacerPile(Pile p, TypeEl x, TypeEl y, int *err);

11 11 Piles : autres fonctions création et initialisation : Pile p1, p2; int err; p1 = initPile(&err); p2 = initPile(&err); vider une pile : Pile viderPile(Pile p, int *err); ou : while(! (p = ?) ) p -p; typedef struct { } Pile;

12 12 en tableau : (accès : indice 0) 01234...99 pile Piles : modèles dimplantation

13 13 en tableau : (accès par la fin) 01234...99 pile Piles : modèles dimplantation

14 14 pile Piles : implantation en tableau #define MAX_PILE 100 typedef struct {int top; TypeEl tab[MAX_PILE]; } Pile; #define MAX_PILE 100 typedef struct {int taille int top; TypeEl * tab; } Pile;

15 15 création : Pile p1; int erreur; initialisation : pile initPile(int taille, int *err); p1 = initPile(2000,&erreur); Piles : création et initialisation pile

16 16 liste chaînée debut pile Piles : modèles dimplantation

17 17 3 pile Piles : implantation par listes #define MAX_PILE 100 typedef struct {elem * debut; int cpt; } Pile;

18 18 création : Pile p1; int erreur; initialisation : Pile initPile(int *err); p1 = initPile(&erreur); 0 p1 Piles : création et initialisation

19 19 Gestion de piles par listes Gestion simple : empiler dépiler sommet pileVide ? appartenance remplacement

20 20 approches hybrides : implantation par tableau (par nœud) implantation par listes (globalement) 11 443 p1 Ratio : info admin./espace total

21 21 Comment accéder au sommet ? Comment ajouter un élément ? Comment enlever un élément ? p1 pile fin cpt tab suiv nœud... en-tête (header) 11 443 Modèles hybrides

22 22 Applications des piles gestion de lordre dexécution des fonctions où TypeEl = struct { adresse de retour dans la fonction; variables de la fonction; } f1 appelle f2: avant lappel : la struct décrivant f1 est mise sur la pile au retour, on dépile et on continue avec les variables dépilées et à partir de ladresse indiquée

23 23 Applications des piles On peut donc simuler la pile. On peut alors transformer une fonction récursive en fonction itérative avec gestion explicite dune pile. Avantages versus désavantages ???

24 24 Vérification dimbrication {, (, [ doit correspondre à }, ) et ] respectivement i 1 Tantque i < nb de caractères faire Si caractère[i] est '(' ou '{' ou ' [' alors empiler caractère[i] Sinon Si caractère[i] est ') ' ou '}' ou ']' alors Si caractère[i] = symétrique sommet de la pile alors dépiler la pile Sinon ERREUR i i + 1 Fin Tantque

25 25 Vérification dimbrication Exemples : 3*(2-[4 / (2 +x)] * y) 3*(2-[4 / (2 +x]) * y) ((((x + 4 / 3 * (-5)))))

26 26 Notation polonaise inversée AB+ ; CD- ; EF* ; GH/ 3*(2-[4 / (2 +x)] * y) 3 (2-[4 / (2 +x)] * y) * 3 (2 [4 / (2 +x)] * y-) * 3 (2 [4 (2 +x)/] * y-) * 3*(2-[4 / (2 +x)] * y)3 (2 [4 (2 x +)/] * y-) * 3 (2 [4 (2 x +)/] y * -) * 3 2 4 2 x + / y * - *

27 27 3*(2-[4 / (2+x)] * y) 3 2 4 2 x + / y * - * Évaluation dexpr. arithmétiques

28 28 évaluation dexpressions suffixées voir manuel de cours p.97 (pour opérateurs binaires mais pourrait être étendu pour opérateurs n-aires) production dexpressions suffixées voir manuel de cours p.99 Algorithmes à lire

29 29 Files espace de mémorisation temporaire, avec conventions de manipulation (gestion) : ajouter un nouvel élément sur la file (enfiler) enlever un élément de la pile (défiler) regarder le premier élément de la file regarder le dernier élément de la file indiquer si la file est vide regarder si un élément est sur la file remplacer un élément sur la file outin file

30 30 Files : spécifications formelles enfiler : f f + x File enfiler(File f, TypeEl x, int *err); défiler : -f File defiler(File f, TypeEl *x, int *err); premier : !f TypeEl premier(File f, int *err);

31 31 Files : spécifications formelles dernier : !!f TypeEl dernier(File f, int *err); file vide : f = ? Bool fileVide(File f, int *err); appartenance : x f? Bool appartientFile(File f, TypeEl x, int *err); remplacement : f f - x/y File remplacerFile(File f, TypeEl x, TypeEl y, int *err);

32 32 inout file outin file File = liste + gestion adaptée manipulations (enfiler et défiler) par des points daccès opposés

33 33 File = liste + gestion adaptée enfiler : défiler : premier : dernier : file vide ? élément sur la file ? remplacer un élément sur la file :

34 34 Files : autres fonctions création et initialisation : File f1, f2; f1 = initFile(int *err); f2 = initFile(int *err); vider une file : file viderFile(File f, int *err); ou : while(! (f = ?) ) f -f; typedef struct { } File;

35 35 TêteQueue Insérer 'Robert' TQ Paul René Marc Paul Paul René René Marc Marc Marc Marc Marc Jean Jean Jean Anne Anne T T T T T T T Q Q Q Q Q Q Q Débordement Vide Insérer 'Paul' Insérer 'Jean' Insérer 'René' Extraire 'Paul' Extraire 'René' Insérer 'Anne' Insérer 'Marc' Implantation par tableau

36 36 Implantation : liste circulaire q = (q + 1) modulo MAXELT

37 37 #define MAXELT 100 typedef struct {int tete; int queue; TypeEl * tab; int taille; } File; 0 file 0 0 012...99 Files : implantation en tableau

38 38 création : file f1; int erreur; f1 tete queue tab taille Files : création et initialisation

39 39 création : File f1; int erreur; initialisation : File initFile(int taille, int *err); f1 = initFile(2000,&erreur); file 012...99 f1 tete queue tab 0 0 0 taille Files : création et initialisation

40 40 Gestion de listes circulaires enfiler défiler premier dernier file vide? appartenance remplacer

41 41 Files : implantation par listes tete el suivant el suivant el suivant cpt queue 3 typedef struct {elem *tete; int cpt; elem *queue; } File;

42 42 Files : implantation par listes tete el suivant el suivant el suivant cpt queue 3 enfiler défiler premier dernier file vide? appartient remplacer

43 43 cpt tab suiv 443 tete cpt queue 11 enfiler défiler premier dernier file vide? appartient remplacer Modèles hybrides

44 44 Files prioritaires gestion dune seule file insertion se fait selon la priorité éléments toujours triés selon leur priorité in file 41841 in file 11448

45 45 Files prioritaires gestion de plusieurs files 1 file par niveau de priorité (sous-liste) une liste triée selon le niveau de priorité avec un bloc descripteur pour la sous-liste correspondante

46 46 Applications des files Modélisation du phénomène : banque chaîne de montage etc. En informatique : traitement « batch » (en lots) gestion des listes dimpression

47 47 Traitement « batch » (en lots) Tantque toujours faire si f nest pas vide alors: tâche = defile(f); exécuter tâche; Fin Tantque Si exécution(tâche) alors: f = enfiler(tâche,f); Processus consommateur Processus producteur

48 48 simulation : élément = priorité = temps in file 41841 in file 11448 Application des files prioritaires

49 49 Simulation exemple : banque : 4 guichets automatiques revenus associés à chaque transaction 1 seule file dattente pour tous les guichets taux darrivée des clients (hres de pointe) temps de service moyen temps dattente dun client versus sa position dans la file modèle de simulation

50 50 Simulation bancaire processus : arrivée dun client : enfile (1 processus si 1 seule file) à une certaine fréquence : loi de Poisson heure dentrée dans la file : horloge centrale temps de transaction requis nombre de transactions revenus par client tolérance au temps dattente traitement dun client (par guichet) : défile (4 processus) temps de transaction selon le client mise à jour des statistiques lhorloge (1) : mise à jour de lhorloge et de la file dattente

51 51 Simulation de files dattente on évalue certaines métriques : la longueur moyenne de la file le nombre de clients perdus les revenus obtenus/perdus pendant la simulation le temps dutilisation des guichets on modifie certains paramètres et on recommence ! in file 41841 in file 11448 Guichet n o 1 Guichet n o 2 Guichet n o 3 Guichet n o 4 Création


Télécharger ppt "IFT-10541A : Hiver 2003 Semaine 5 : Piles et files."

Présentations similaires


Annonces Google