Chapitre 1 : piles et queues

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

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

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

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

Structure fonctionnelle d un SGBD

CHAPITRE 4 LA VALORISATION DES STOCKS COURS DE COMPTABILITE ANALYTIQUE SEMESTRE 2 DUT TC

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

Initiation à la Programmation en Logique avec SISCtus Prolog

Tp 1 correction. Structures de données (IF2)

STAGE IREM 0- Premiers pas en Python

CMS Modules Dynamiques - Manuel Utilisateur

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

Algorithmique, Structures de données et langage C

Calculs de probabilités avec la loi normale

1 Recherche en table par balayage

Édu-groupe - Version 4.3

Licence Sciences et Technologies Examen janvier 2010

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

IRL : Simulation distribuée pour les systèmes embarqués

LE COURTAGE PRÊT AVEC OCLC 08 octobre Schéma de fonctionnement du prêt sans courtage. 4

Comment intégrer des images dans un texte

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

(Mis à jour : 7 déc. 12)

Représentation d un entier en base b

CESSION DE CREANCE 1. MONTAGE DU DOSSIER

TP1 : Initiation à Java et Eclipse

Evaluation et mise en place d un serveur de messages pour Chamilo 2.0

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

la fiscalité des valeurs mobilières en 2015

Assistant d e tablissement de Tableaux

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

OCL - Object Constraint Language

Architecture des ordinateurs

Le modèle de données

FlashWizard v4.5b PRO

Outil de contrôle du calcul des intérêts Maj le 15 juil. 11 (12:23) Page 1/7 Association Bande Populaire du Sud Ouest

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

TD3: tableaux avancées, première classe et chaînes

TP 1. Prise en main du langage Python

Animer son cours depuis la tablette

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

exigences des standards ISO 9001: 2008 OHSAS 18001:2007 et sa mise en place dans une entreprise de la catégorie des petites et moyennes entreprises.

GUIDE D'UTILISATION DU SYSTEME TELEPHONIQUE POLYCOM

Editer un script de configuration automatique du proxy

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Bases Java - Eclipse / Netbeans

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Initiation à LabView : Les exemples d applications :

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Comment faire son pré-enregistrement en ligne avec Holland America Line

Vos outils CNED COPIES EN LIGNE GUIDE DE PRISE EN MAIN DU CORRECTEUR. 8 CODA GA WB 01 13

14. Introduction aux files d attente

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

Initiation à la programmation en Python

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

QUESTION 1 QUESTION 2 QUESTION 3 QUESTION 4. Que signifie "shortage"? Que signifie "handling"? Que signifie "raw material" Que signifie "tool"?

Comptabilité Générale - Résumé blocus Chapitres 1,2,3 : Bilan, Compte de résultats,

IN SYSTEM. Préconisations techniques pour Sage 100 Windows, MAC/OS, et pour Sage 100 pour SQL Server V16. Objectif :

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

Retour table des matières

Approche Contract First

MIS 102 Initiation à l Informatique

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Taxnet Pro. Fiche de consultation rapide

Fais ton site internet toi-même

Groupe symétrique. Chapitre II. 1 Définitions et généralités

COMPTABILITE. Fait par Christophe Lemaigre. Principes de base

Vous revisiterez tous les nombres rencontrés au collège, en commençant par les nombres entiers pour finir par les nombres réels.

Cours de Systèmes d Exploitation

Algorithmique et Programmation, IMA

Guide de prise en main de la solution NetExplorer

UTILISER LA MESSAGERIE

Guide d utilisation du ipad

Faire de la publicité sur GOOGLE AD-WORDS

Exercices INF5171 : série #3 (Automne 2012)

DM 1 : Montre Autoquartz ETA

Algorithmes de recherche

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

GESTION DE STOCKS AVEC CIEL GESTION COMMERCIALE

Création d articles sur le site web du GSP

erma (Instructions d utilisateur )

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

Systèmes de récupération de chaleur des eaux de drainage

Quelques algorithmes simples dont l analyse n est pas si simple

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

Comptabilité Générale

Manuel d'installation de GESLAB Client Lourd

Compter à Babylone. L écriture des nombres

SEO On-page. Avez-vous mis toutes les chances de votre côté pour le référencement de votre site?

AWS avancé. Surveiller votre utilisation d EC2

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle

Gestion du parc informatique des collèges du département du Cher. Manuel d utilisation de la solution de gestion de Parc

Configuration du matériel Cisco. Florian Duraffourg

Optimisation, traitement d image et éclipse de Soleil

Carte encadrement glitter

Tutoriel Création d une source Cydia et compilation des packages sous Linux

V- Manipulations de nombres en binaire

Transcription:

Chapitre 1 : piles et queues Daniel Massart 20 août 2014

Definition Une pile est une structure de données à laquelle on n accède que par le dernier élément entré (de manière conventionnelle, on dira "par le haut"), contrairement aux listes, dans lesquelles vous avez un accès direct à n importe quel élément, par la commande L[i].

Definition Une pile est une structure de données à laquelle on n accède que par le dernier élément entré (de manière conventionnelle, on dira "par le haut"), contrairement aux listes, dans lesquelles vous avez un accès direct à n importe quel élément, par la commande L[i]. Exemple une pile d assiettes (d où le nom) : vous n allez pas vous amuser à prendre une assiette au milieu de la pile! Vu comme ça, une liste peut être représentée par des assiettes en position verticale dans le lave-vaisselle : on peut prendre n importe quelle assiette.

une gare à une seule entrée (toutes les gares parisiennes par ex.) : le premier train qui sort est le dernier entré (en anglais "last in, first out", en abrégé LIFO) l historique de votre navigation sur internet (vous n avez que la touche "retour à la page précédente", vous ne pouvez pas demander au navigateur "dis-moi Génie, quelle est la première page que j ai visitée aujourd hui?")

En pratique nous modéliserons les piles par des listes, en ne nous autorisant que les opérations suivantes (que nous appellerons fonctions de bases sur les piles) : créer une pile vide, en Python : def creer-pile() : return [] rajouter un élément sur la pile def empiler(p,e) : p.insert(0,e) regarder l élément qu on vient de rajouter (le sommet de la pile) : def sommet(p) : return p[0] prendre l assiette sur le haut de la pile : def depiler(p) : del p[0 :1]

Enfin deux autres fonctions utiles : pour tester si une pile est vide (afin de ne pas dépiler une pile déjà vide-on aurait aussi pu rajouter un test dans la fonction dépiler) : def est-vide() : return len(p)==0 pour afficher le contenu de la pile (le chef de gare est soigneux, il a pris soin de noter les trains entrant) :

Vous allez me dire "mais c est complètement débile : on a une structure de données puissante (les listes), et on fait exprès de ne pas utiliser toutes ses possibilités!". Oui, mais une structure puissante coûte cher (en place mémoire, temps de calcul, salaire de l ingénieur informaticien...). Si vous représentez la compagnie des chemins de fer dans un pays idéal, vous voulez utiliser au mieux l argent public, et vous faites appel à un informaticien pour gérer les flux dans une gare LIFO : vous allez lui demander de n implémenter que les fonctions que vous utiliserez effectivement, de la façon la plus économique en place mémoire et temps de calcul.

Vous allez me dire "mais c est complètement débile : on a une structure de données puissante (les listes), et on fait exprès de ne pas utiliser toutes ses possibilités!". Oui, mais une structure puissante coûte cher (en place mémoire, temps de calcul, salaire de l ingénieur informaticien...). Si vous représentez la compagnie des chemins de fer dans un pays idéal, vous voulez utiliser au mieux l argent public, et vous faites appel à un informaticien pour gérer les flux dans une gare LIFO : vous allez lui demander de n implémenter que les fonctions que vous utiliserez effectivement, de la façon la plus économique en place mémoire et temps de calcul. Et maintenant, au travail.

Exercice Rappel de la règle du jeu : on n utilise que les fonctions de base! 1. Construire une fonction inverser-pile(p) qui prend en argument une pile p et retourne une autre pile dont les éléments sont ceux de p dans l ordre inverse, p n étant pas modifiée. Evaluer le coût en mémoire et le nombre d opérations de votre procédure. 2. Ecrire une fonction copier-pile(p) qui prend en argument une pile p et retourne une copie de p, sans modifier p. Evaluer le coût en mémoire et le nombre d opérations de votre procédure.

Exercice Construire les fonctions suivantes à l aide des fonctions de base : 1. une fonction "prendre des chemises pour toute la semaine", ou depilerk(p,k) qui enlève k éléments si la pile en contient au moins k, et qui vide la pile, sinon. 2. une fonction depilerjusque(p,e) (ou encore "où est ma chemise grise?") qui enlève des éléments jusqu à ce qu on rencontre l élément e, ou que la pile soit vide. 3. une fonction "non pas celle là", ou permutation 2 (p), qui permute le sommet et le terme suivant de p. 4. (plus difficile) une fonction "pas celle-là non plus" ou permutation circulaire(p, k) qui réalise une permutation circulaire sur les k premiers éléments de la pile. Préciser son coût en mémoire et en nombre d opérations.

Exercice Ecrire un programme qui prend en argument parenthésée, la parcourt de gauche à droite, et renvoie True si le parenthésage est correct, False sinon.

Exercice Ecrire un programme qui prend en argument parenthésée, la parcourt de gauche à droite, et renvoie True si le parenthésage est correct, False sinon. Quel est le rapport avec les piles? l idée est de créer une pile vide, ensuite en parcourant l expression, à chaque fois qu on rencontre une parenthèse ouvrante, on l empile, à chaque fois qu on rencontre une parenthèse fermante, on dépile la dernière ouvrante rencontrée. Le parenthésage est correct si à la fin on se retrouve avec une pile vide.

Definition Une file d attente, ou queue, est une structure de données à laquelle on ne peut que rajouter un élément à la fin, et enlever un élément au début.

Definition Une file d attente, ou queue, est une structure de données à laquelle on ne peut que rajouter un élément à la fin, et enlever un élément au début. Exemple une file d attente n importe où une (hypothétique) gare à deux entrées mais où les trains circulent dans un seul sens : le premier train qui sort est le premier entré (en anglais "first in, first out", en abrégé FIFO).

Exercice Ecrire les fonctions élémentaire de la structure file : 1. une fonction qui crée une file vide 2. une fonction qui teste la vacuité d une file 3. une fonction qui rajoute un élément en dernière position 4. une fonction qui retourne le premier élément et l enlève de la file 5. une fonction qui donne la longueur de la file.

Exercice Ecrire une fonction permutationcirculaire(q,n) qui modifie la file q de telle sorte que l élément en position i se retrouve en position i + n (c est à dire que le premier se retrouve en position n + 1, si n est plus petit que la longueur de q, le deuxième en position n + 2,... et le dernier en position n).