Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Files



Documents pareils
Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Les structures de données. Rajae El Ouazzani

Les arbres binaires de recherche

Bases de programmation. Cours 5. Structurer les données

Génie Logiciel avec Ada. 4 février 2013

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Algorithmique, Structures de données et langage C

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

Conventions d écriture et outils de mise au point

Java Licence Professionnelle CISII,

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Arbres binaires de recherche

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Cours d initiation à la programmation en C++ Johann Cuenin

Recherche dans un tableau

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Compression de Données - Algorithme de Huffman Document de Conception

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Informatique III: Programmation en C++

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Cours 6 : Tubes anonymes et nommés

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs


INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Cours Programmation Système

PROJET ALGORITHMIQUE ET PROGRAMMATION II

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Initiation. àl algorithmique et à la programmation. en C

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Cours A7 : Temps Réel

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Algorithmique et Programmation, IMA

Introduction à la programmation concurrente

Architecture des Systèmes d Information Architecture des Systèmes d Information

STAGE IREM 0- Premiers pas en Python

Introduction à MATLAB R

Structures dynamiques Listes chaînées

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Programme Compte bancaire (code)

Programmation avec des objets : Cours 7. Menu du jour

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Traduction des Langages : Le Compilateur Micro Java

Architecture des ordinateurs

Utilisation d objets : String et ArrayList

Algorithmique I. Algorithmique I p.1/??

Programmer en JAVA. par Tama

V- Manipulations de nombres en binaire

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

COMPARAISONDESLANGAGESC, C++, JAVA ET

ARBRES BINAIRES DE RECHERCHE

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

INF601 : Algorithme et Structure de données

Structure fonctionnelle d un SGBD

Chapitre 1 : La gestion dynamique de la mémoire

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Claude Delannoy. 3 e édition C++

SUPPORT DE COURS. Langage C

Définitions. Numéro à préciser. (Durée : )

Cours d Algorithmique et de Langage C v 3.0

Logiciel de base. Première année ENSIMAG

Programmation Orientée Objet Java

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Chap III : Les tableaux

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

OS Réseaux et Programmation Système - C5

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

PROJET 1 : BASE DE DONNÉES REPARTIES

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Un ordonnanceur stupide

Création et Gestion des tables

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

UE Programmation Impérative Licence 2ème Année

Cours de Master Recherche

Partie 7 : Gestion de la mémoire

Les algorithmes de base du graphisme

Programmation Classique en langage C

CHAPITRE V. Recherche et tri

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Corrigé des exercices sur les références

Corrigés des premiers exercices sur les classes

Travaux Dirigés n 1 : chaînes de caractères

Le langage C. Séance n 4

Transcription:

. Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012 Algorithmique et Programmation Les structures de données Les Files Introduction Une File ressemble fortement à une liste Fonctionnement : Le premier entré est le premier sorti La file est dite FIFO (First In First Out). Analogie avec une file d attente "premier arrivé, premier servi» Plan du cours Les structures de données linéaires I. Les structures de données Listes II. Les structures de données Piles III. Les structures de données Files Les structures de données Files 1. Introduction 2. Définition du TDA FILE 3. Représentation contiguë Représentation à l aide d un simple tableau Représentation à l aide d un tableau circulaire: Interface et implémentation du TDA 4. Représentation l aide d un liste chainée 5. File particulière (File d attente avec priorité) 6. Conclusion Il y a file «d attente», chaque fois où l'offre est inférieure à la demande. Théorie des files d'attente : étude des solutions optimales de gestion des files d attente Exemple d application pratique : Ordonnancement du traitement des achats d un magasin. Attente des clients aux guichets. Décollage ou à l atterrissage des avions Gestion des réseaux téléphoniques Spouler (File d attente) d une imprimante. Opérations : Insérer = Enfiler, Supprimer = Défiler ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 1 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 2

Définition du TDA FILE Type File (P) utilise Booléen (B), Elément (E), Entier(N) Opérations Créer : ( ) F Creer(F) : Création d une file vide Enfiler : F x E F Empiler (F,e) : Ajoute un élément à la fin Défiler : F F Défiler (F) : Enlève l élément au début Valeur : F E Valeur (F) renvoie l élément du début Estvide : F B Estvide (F) : test si la file est vide Taille : F N Taille (F) : Nombre d éléments de la file Les opérations Défiler et Valeur ne sont définies que si la file n est pas vide Défiler(F) Estvide(F)=Faux. Valeur(F) Estvide(F)=Faux. Axiomes Soient «e» un élément et «F» une file, «F0» une file vide EstVide(F0)=Vrai EstVide(Enfiler(F,e))=Faux défiler(enfiler(f,e))= enfiler(défiler(f),e) valeur(enfiler(f,e))= valeur(f) valeur(enfiler(f0,e))= e Ces définitions et propriétés sont indépendantes de toute représentation. Représentation contiguë Plusieurs implémentations sont possibles Représentation à l aide d un simple tableau: Une file est [un pointeur sur ]une structure à deux champs : un tableau surdimensionné à taille fixe (NMax), qui contient les éléments de la file. un entier indiquant le nombre d éléments dans la file. Operations L'ajout d'un élément se fera à la suite du dernier élément du tableau. Le retrait d'un élément de la file se fera en enlevant le premier élément du tableau. Il faudra donc décaler les autres éléments vers le début de la file. Complexité des opérations Enfiler : O(1),.Défiler O(n) Représentation à l aide d un tableau circulaire: On utilise un tableau surdimensionné pour sauvegarder les éléments de la file. On utilise deux variables tête et fin o Tête contient l indice du premier élément de la file. o Fin marque la position où ajouter le prochain élément. Le contenu de la file va la case d indice Tête à la case qui précède la case d indice Fin. ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 3 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 4

Remarques : Progressivement, les deux indices sont croissants. : on incrémente Fin après ajout et on incrémente début après suppression. Si la valeur «fin» de la file atteint la capacité max du tableau, on effectue les ajouts à partir du début du tableau. Les indices tête et fin progressent modulo la taille NMax du tableau. Implémentation des opérations du TDA FileTab #define NMax 100 typedef struct int N, Tete, Fin ; TElement Tab[NMax]; FileTab; Le tableau d une file est un tableau circulaire, que l on parcourt en incrémentant un indice modulo NMax, typedef FileTab * TFileTab ; La file est vide si Tête = Fin Difficulté pour distinguer entre file vide et file pleine Solution 1: On sacrifie une case pour distinguer le cas d une file vide de celui d une file pleine. Une file est "pleine" s il reste une seule case non occupée dans le tableau. (Fin + 1) modulo (NMax) = début Solution 2: Une variable supplémentaire, qui contient le nombre d éléments contenus dans la file. ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 5 Interface du TDA TFileTab TFileTab Creer (); void detruire(tfiletab F); bool EstVide(TFileTab F); bool EstPleine(TFileTab F); TElement Valeur(TFileTab F); TFileTab Enfiler (TFileTab F, TElement e); TFileTab Défiler (TFileTab F); int taille(tfiletab File); Primitives de base du TDA FileTab Creer (); TFileTab F ; F=( TFileTab ) malloc(1*sizeof(filetab )); If (F==NULL) printf(" \nproblème mémoire"); exit(-1) ; F-> Tete= 0 ; F-> Fin= 0 ; F-> N= 0 ; // File vide return(f); ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 6

bool estvide (TFileTab F) return ( F->N==0); bool estvide (TFileTab F) return ( F->N==NMax); //bool estvide () return (tete==fin ); //bool estpleine () // return ( ((fin+1) % NMax) == tete ) TFileTab Enfiler (TFileTab F, TElement e); if ( EstPleine(F) printf(" \n File Pleine ");return(f); F->Tab[fin] = e; Fin=(Fin+1) % NMax; Return(F); TFileTab Defiler(TFileTab F); if (EstVide(F) printf(" \n File Vide "); Else Tete = (Tete + 1) % NMax; Return (F); TElement Valeur(TFileTab F) if (EstVide(F) printf(" \n File Vide ");Exit(-1); TElement x = F->Tab[Tete]; Return (e); Représentation chainée d une File Représentation à l aide d un liste : L implémentation est conceptuellement simple. Les éléments de la file sont dans une liste, Pour garantir des opérations en temps constant : On utilise une référence sur la dernière cellule de liste. On supprime au début de la liste, On ajoute à la fin de la liste. Int Taille(TFileTab F) Return ( );?????? void detruire(tfiletab F); Free()?????? ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 7 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 8

File particulière (File d attente avec priorité) Dans une file d attente avec priorité Chaque élément e a une priorité dans la file : p(e). Les éléments sont comparés par leurs priorités : e1 < e2 signifie : p(e1) > p(e2) Operations Le retrait se fait toujours du début. Tout nouvel élément est inséré, dans la file, selon sa priorité. o L insertion ne se fait pas toujours à la fin. o Un élément prioritaire prendra la tête de la file même s il arrive le dernier. Conclusion La file ressemble fortement à une liste + FIFO (Fist In, First Out) : Premier arrivé, premier servi. On peut ajouter un élément "à la fin" de la file, si la file n est pas pleine/(possibilité d allocation mémoire) Le seul élément de la file auquel on peut avoir accès est le plus ancien élément qui y a été placé (donc en tête) Implémentation -Réalisation par tableau ou liste. -Pour garantir des opérations en temps constant, on conserve un pointeur (un indice) sur le début et sur la fin. Applications : La file est une structure de données très fréquente dans les programmes. Exemples : Système d exploitation, Temps-réel etc. o Implémentation L implémentation de ces files d attente peut être par tableaux ou listes. L implémentation la plus efficace et la plus utilisée utilise des arbres particuliers : les TAS*. (*) Un TAS est un arbre binaire tel que le contenu de chaque nœud soit supérieur ou égal à celui de ses fils.. ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 9 ENP /2011/2012/G.I /1 Année / Chap4 : S2D, Les Files 10