Algorithmique et Structures de données TD 4

publicité
Université Bordeaux 1
Licence Informatique 2006/2007
Algorithmique et Structures de données
TD 4
Exercice 4.1
On suppose d’avoir défini un type abstrait ensemble pour manipuler des ensembles d’entiers.
Soient A, B et C des ensembles et X un entier, les opérations définies sur le type abstrait
ensemble sont :
les prédicats :
– Est-Vide(A)
– Appartient(X,A)
les procédures
– Ajouter(X,A)
– Supprimer(X,A)
– Vider(A)
modifiant l’ensemble passé en paramètre, et les procédures
– Intersection(A,B,C)
– Complémentaire(A,B)
– Union(A,B,C)
– Différence-symétrique(A,B,C)
qui construisent l’ensemble résultat dans leur dernier paramètre.
Ecrire les fonctions ci-dessus dans le cas où les ensembles traités sont des parties de l’ensemble
E des entiers de 1 à N et chaque ensemble est implémenté par un vecteur [1..N] de booléens.
Exercice 4.2
Utilisation de piles
Evaluer à l’aide des axiomes du type abstrait Pile l’expression suivante, où les primitives (
CréerPile, PileVide ?, ValeurPile, Empiler, Dépiler) sont notées en abrégé (CP, PV,
VP, EP, DP respectivement) :
VP(EP(EP(CP,a),VP(EP(DP(EP(CP,a)),b))))
Exercice 4.3
Utilisation de piles
On se donne trois piles P1 , P2 et P3 . la pile P1 contient une suite de nombres entiers positifs.
1. Ecrire un algorithme pour déplacer les entiers de P 1 dans P2 de façon à avoir dans P2
tous les nombres pairs au dessous des nombres impairs.
2. Ecrire un algorithme pour copier dans P 2 les nombres pairs contenus dans P1 . Le contenu
de P1 après exécution de l’algorithme doit être identique à celui avant exécution. Les
nombres pairs doivent être dans P2 dans l’ordre où ils appairaissent dans P 1 .
Exercice 4.4
Implémentation d’une pile
On considère le type Pile d’entiers, où les éléments susceptibles d’être empilés sont des entiers.
On peut implémenter ce type abstrait en utilisant, comme unique structure de données, un
tableau de type entier et en mettant dans la première case du tableau l’indice sommet de pile.
Adapter les cinq primitives des piles à cette structure.
Exercice 4.5
Utilisation de piles
La notation postfixée (appelée aussi notation polonaise inverse) donne un moyen d´écrire
des expressions algébriques sans utiliser des parenthèses ni des règles de priorité des opérateurs.
L’algorithme d’évaluation d’une expression arithmétique postfixée est trivial si l’on utilise une
pile.
Sans perte de généralité, on peut supposer d’avoir une expression arithmétique postfixée
où les opérandes sont des entiers d’un seul chiffre et les opérateurs sont les quatres opérations
arithmétiques binaires de base (+, -, *, /). Une telle expression peut être représentée par un
tableau de caractères (avec marqueur de fin de mot).
Ecrire l’algorithme d’évaluation d’une expression arithmétique postfixée.
Recommandation :
pour connaitre l’origine du nom “notation polonaise inversée” et apprécier une démonstration
avec animation, voir l’URL :
http://www.spsu.edu/cs/faculty/bbrown/web_lectures/postfix/
où on trouvera aussi les principes de l’algorithme de conversion d’une expression arithmétique
usuelle (dite aussi infixe, car les opérateurs binaires se trouvent entre les deux opérandes) en
une expression postfixe.
Téléchargement