Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files...
Transcript of Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files...
![Page 1: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/1.jpg)
Définition Applications Implémentations Files Notation postfixée
Structure de piles
Émeric Tourniaire
15 novembre 2016
![Page 2: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/2.jpg)
Définition Applications Implémentations Files Notation postfixée
Table of contents
Définition
Applications
Implémentations
Files
Notation postfixée
![Page 3: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/3.jpg)
Définition Applications Implémentations Files Notation postfixée
Type abstrait
• Données à stocker• Lien logique• Définition mathématique• Opérations possibles
![Page 4: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/4.jpg)
Définition Applications Implémentations Files Notation postfixée
Type abstrait
• Données à stocker• Lien logique• Définition mathématique• Opérations possibles
Exemple 1 :• Annuaire téléphonique• Ensemble de triplets (nom, adresses, numéros)• Recherche par nom ? Par adresse ? Par numéro ?• Changer un numéro ? Une adresse ?
![Page 5: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/5.jpg)
Définition Applications Implémentations Files Notation postfixée
Type abstrait
• Données à stocker• Lien logique• Définition mathématique• Opérations possibles
Exemple 2 :• Ensemble de nombres entiers• A ⊂ Z• Créer {n} pour n ∈ Z• A ∪ B, A ∩ B, A− B, x ∈ A, . . .
![Page 6: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/6.jpg)
Définition Applications Implémentations Files Notation postfixée
Type abstrait
• Données à stocker• Lien logique• Définition mathématique• Opérations possibles
Exemple 3 :• Système de fichiers• Structure d’arbre• Créer un répertoire, déplacer des fichiers• Renommer un fichier, gérer des permissions, . . .
![Page 7: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/7.jpg)
Définition Applications Implémentations Files Notation postfixée
Structure de donnée
• Implémentation d’un type abstrait• Cahier des charges• Complexité des opérations• Confusion entre la structure et son type abstrait
![Page 8: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/8.jpg)
Définition Applications Implémentations Files Notation postfixée
PileType abstrait
• Last In First Out• Créer une pile vide• Ajouter un élément• Retirer l’élément en tête
• Tester si la pile est vide14426
64214
![Page 9: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/9.jpg)
Définition Applications Implémentations Files Notation postfixée
PileType abstrait
• Last In First Out• Créer une pile vide• Ajouter un élément• Retirer l’élément en tête
• Tester si la pile est vide
14
426
64214
![Page 10: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/10.jpg)
Définition Applications Implémentations Files Notation postfixée
PileType abstrait
• Last In First Out• Créer une pile vide• Ajouter un élément• Retirer l’élément en tête
• Tester si la pile est vide
1442
6
64214
![Page 11: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/11.jpg)
Définition Applications Implémentations Files Notation postfixée
PileType abstrait
• Last In First Out• Créer une pile vide• Ajouter un élément• Retirer l’élément en tête
• Tester si la pile est vide
14426
64214
![Page 12: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/12.jpg)
Définition Applications Implémentations Files Notation postfixée
PileType abstrait
• Last In First Out• Créer une pile vide• Ajouter un élément• Retirer l’élément en tête
• Tester si la pile est vide
1442
6
6
4214
![Page 13: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/13.jpg)
Définition Applications Implémentations Files Notation postfixée
PileType abstrait
• Last In First Out• Créer une pile vide• Ajouter un élément• Retirer l’élément en tête
• Tester si la pile est vide
14
426
6
42
14
![Page 14: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/14.jpg)
Définition Applications Implémentations Files Notation postfixée
PileType abstrait
• Last In First Out• Créer une pile vide• Ajouter un élément• Retirer l’élément en tête
• Tester si la pile est vide14426
642
14
![Page 15: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/15.jpg)
Définition Applications Implémentations Files Notation postfixée
PileType abstrait
• Last In First Out• Créer une pile vide• Ajouter un élément• Retirer l’élément en tête
• Tester si la pile est vide14426
64214
![Page 16: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/16.jpg)
Définition Applications Implémentations Files Notation postfixée
PileType abstrait
• Créer une pile vide : new_stack()• Ajouter un élément : pile.push(a)• Retirer l’élément en tête : a = pile.pop()• Tester si la pile est vide : is_empty(pile)
![Page 17: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/17.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
14426
res = 0res = 1res = 2res = 3return(res)
14426
![Page 18: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/18.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
14426
res = 0
res = 1res = 2res = 3return(res)
14426
![Page 19: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/19.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
14426
res = 0
res = 1res = 2res = 3return(res)
14426
![Page 20: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/20.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
1442
6
res = 0
res = 1
res = 2res = 3return(res)
1442
6
![Page 21: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/21.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
14
426
res = 0res = 1
res = 2
res = 3return(res)
14
426
![Page 22: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/22.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
14426
res = 0res = 1res = 2
res = 3
return(res)
14426
![Page 23: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/23.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
14
426
res = 0res = 1res = 2
res = 3
return(res)
14
426
![Page 24: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/24.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
1442
6
res = 0res = 1res = 2
res = 3
return(res)
1442
6
![Page 25: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/25.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
14426
res = 0res = 1res = 2
res = 3
return(res)
14426
![Page 26: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/26.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
14426
res = 0res = 1res = 2res = 3
return(res)
14426
![Page 27: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/27.jpg)
Définition Applications Implémentations Files Notation postfixée
Compter les éléments d’une pile(sans la modifier)
def nbr_elements(pile):temp = new_stack()res = 0while not is_empty(pile):
res = res+1temp.push(pile.pop())
while not is_empty(temp):pile.push(temp.pop())
return res
![Page 28: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/28.jpg)
Définition Applications Implémentations Files Notation postfixée
Historique de navigation
• Empiler quand on clique sur un lien
• Dépiler quand on appuie sur• Pourquoi la pile n’est pas recopiée quand on ouvre un nouvelonglet ?
![Page 29: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/29.jpg)
Définition Applications Implémentations Files Notation postfixée
Bouton undo sur un éditeur
• Pile des modifications d’un document• ˆZ permet d’annuler les dernières modifications
• Une annulation n’est pas une modification• Cette pile est-elle enregistrée dans le fichier ?
![Page 30: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/30.jpg)
Définition Applications Implémentations Files Notation postfixée
Bouton undo sur un éditeur
• Pile des modifications d’un document• ˆZ permet d’annuler les dernières modifications• Une annulation n’est pas une modification
• Cette pile est-elle enregistrée dans le fichier ?
![Page 31: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/31.jpg)
Définition Applications Implémentations Files Notation postfixée
Bouton undo sur un éditeur
• Pile des modifications d’un document• ˆZ permet d’annuler les dernières modifications• Une annulation n’est pas une modification• Cette pile est-elle enregistrée dans le fichier ?
![Page 32: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/32.jpg)
Définition Applications Implémentations Files Notation postfixée
Aparté : gestionnaire de version
• diff évalue la différence entre deux fichiers, en trouvant leslignes identiques.
• rsync synchronise deux répertoires.• Systèmes de version (svn, git)• Problème si les fichiers diffèrent trop (PDF, wordlike, etc.)
![Page 33: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/33.jpg)
Définition Applications Implémentations Files Notation postfixée
Aparté : gestionnaire de version
![Page 34: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/34.jpg)
Définition Applications Implémentations Files Notation postfixée
Aparté : gestionnaire de version
• diff évalue la différence entre deux fichiers, en trouvant leslignes identiques.
• rsync synchronise deux répertoires.• Systèmes de version (svn, git)• Problème si les fichiers diffèrent trop (PDF, wordlike, etc.)
![Page 35: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/35.jpg)
Définition Applications Implémentations Files Notation postfixée
Aparté : gestionnaire de version
• diff évalue la différence entre deux fichiers, en trouvant leslignes identiques.
• rsync synchronise deux répertoires.• Systèmes de version (svn, git)• Problème si les fichiers diffèrent trop (PDF, wordlike, etc.)
![Page 36: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/36.jpg)
Définition Applications Implémentations Files Notation postfixée
Aparté : gestionnaire de version• diff évalue la différence entre deux fichiers, en trouvant leslignes identiques.
• rsync synchronise deux répertoires.• Systèmes de version (svn, git)• Problème si les fichiers diffèrent trop (PDF, wordlike, etc.)
![Page 37: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/37.jpg)
Définition Applications Implémentations Files Notation postfixée
Problème de piles : tour de Hanoï
• n cylindres empilés.• Objectif : les changer de pile• Règles :
• On ne peut déplacerqu’un cylindre à la fois.
• On ne peut pas déplacerun cylindre sur un cylindreplus petit.
![Page 38: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/38.jpg)
Définition Applications Implémentations Files Notation postfixée
Autres applications(spoiler alert)
• Récursivité• Notation postfixe• Files
![Page 39: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/39.jpg)
Définition Applications Implémentations Files Notation postfixée
Liste simplement chainée
• Rien (None ou [])• Liste de 2 choses• Un élément (la tête)• Une liste simplement chainée
![Page 40: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/40.jpg)
Définition Applications Implémentations Files Notation postfixée
En Python
def newpile():return([])
def push(elem,pile):return([elem,pile])
def pop(pile):if len(pile)==0:raise(IndexError)
else:return(pile[0],pile[1])
pile = newpile()pile = push(14,pile)pile = push(42,pile)a,pile = pop(pile)a
![Page 41: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/41.jpg)
Définition Applications Implémentations Files Notation postfixée
Tableau dynamique
• Listes par défaut en python• Ajouter un élément ou l’enlever• Comment ça marche ?
• Fonctionnalités en plus : len(pile) ou pile[k]
![Page 42: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/42.jpg)
Définition Applications Implémentations Files Notation postfixée
Tableau dynamique
• Listes par défaut en python• Ajouter un élément ou l’enlever• Comment ça marche ?• Fonctionnalités en plus : len(pile) ou pile[k]
![Page 43: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/43.jpg)
Définition Applications Implémentations Files Notation postfixée
En Python
• Nouvelle pile :pile = []
• Ajouter un élément :pile.append(14)
• Tester si la pile est vide :pile == []len(pile) == 0
• Sortir la tête de la pile :a = pile.pop()
• Taille de la pile :len(pile)
• Indexation (peu utile) :pile[k]
ComplexitéToutes ces opérations sont en O(1) (éventuellement amorti)
![Page 44: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/44.jpg)
Définition Applications Implémentations Files Notation postfixée
Exercices
• Écrire une fonction palindrome(chaine) qui détecte sichaine est un palindrome, en utilisant une pile.
• Écrire une fonction bien_parenthesee(chaine) qui doitrenvoyer True si et seulement si chaine est une suite de (, ),{, ou } bien parenthésée.
![Page 45: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/45.jpg)
Définition Applications Implémentations Files Notation postfixée
Exercices
def palindrome(chaine):pile = []n = len(chaine)for i in range(n):
#print(pile)if i < n//2:
pile.append(chaine[i])if i > (n-1)//2:
if chaine[i] != pile.pop():return False
return True
![Page 46: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/46.jpg)
Définition Applications Implémentations Files Notation postfixée
Les files
• First In First out• File d’attente (magasin, routeur, multitâches)• Sortir d’un labyrinthe
![Page 47: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/47.jpg)
Définition Applications Implémentations Files Notation postfixée
Primitives
• Créer une file vide : new_queue()• Ajouter un élément : enqueue(file,a)• Retirer l’élément en tête : a = dequeue(file)Rappel : il s’agit de l’élément qui est depuis le plus longtempsdans la file.
• Tester si la file est vide : is_empty(file)
![Page 48: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/48.jpg)
Définition Applications Implémentations Files Notation postfixée
Implémentation
• On utilise deux piles
• def new_queue():return([],[])
• enqueue(file,a)• dequeue(file)• is_empty(file)
![Page 49: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/49.jpg)
Définition Applications Implémentations Files Notation postfixée
Implémentation
• On utilise deux piles
• def new_queue():return([],[])
• enqueue(file,a)• dequeue(file)• is_empty(file)
def is_empty(file):p0 = file[0]p1 = file[1]return len(p1)+len(p2) == 0
![Page 50: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/50.jpg)
Définition Applications Implémentations Files Notation postfixée
Implémentation
• On utilise deux piles
• def new_queue():return([],[])
• enqueue(file,a)• dequeue(file)• is_empty(file)
def enqueue(a,file):p1 = file[1]p1.append(a)
![Page 51: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/51.jpg)
Définition Applications Implémentations Files Notation postfixée
Implémentation
• On utilise deux piles
• def new_queue():return([],[])
• enqueue(file,a)• dequeue(file)• is_empty(file)
def flip(p1,p0):while len(p1)>0:
p0.append(p1.pop())
def dequeue(file):p0 = file[0]p1 = file[1]if len(p0) > 0:
return(p0.pop())else:
flip(p1,p0)return(p0.pop())
![Page 52: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/52.jpg)
Définition Applications Implémentations Files Notation postfixée
Exercice
On dispose d’un labyrinthe de n cases décrit par le tableau laby àdeux dimensions : laby[i] est la liste des cases auxquelles onpeut aller depuis la i-ème. On commence toujours à la case 0, ongagne si on arrive à accéder à la case n-1
• Écrire un programme solvable(laby) qui détermine si labya une solution ou non.
• Améliorer le programme précédent pour qu’il détermine encombien de coups on peut gagner.
![Page 53: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/53.jpg)
Définition Applications Implémentations Files Notation postfixée
def resoudre(laby):file = new_queue()n = len(laby)distance = [-1 for i in range(n)]distance[0] = 0predecesseur = [-1 for i in range(n)]enqueue(0,file)while not is_empty(file) > 0 and distance[-1] == -1:
case= dequeue(file)d = distance[case]for i in laby[case]:
if distance[i] == -1:distance[i]=d+1predecesseur[i]=caseenqueue(i,file)
return(distance,predecesseur)
resoudre([[1,2],[2],[3],[]])resoudre([[1],[2],[3],[]])
![Page 54: Structuredepiles · 12/2/2016 · Définition Applications Implémentations Files Notationpostfixée Typeabstrait Donnéesàstocker Lienlogique Définitionmathématique Opérationspossibles](https://reader036.fdocuments.us/reader036/viewer/2022071111/5fe781a249f4b003a201a7d4/html5/thumbnails/54.jpg)
Définition Applications Implémentations Files Notation postfixée
Notation Polonaise Inverse
Si on a le temps...