Title: Licence informatique 20062007' Introduction lalgorithmique' G' Hains
1Piles, files et listes notions théoriques
- Propriétés des structures linéaires
- Applications de chaque structure de données
- Spécifications algébriques
Licence informatique 2006-2007. Introduction à
lalgorithmique. G. Hains
2Propriétés des structures linéaires
Les structures de données dites linéaires sont
les listes, les piles et les files. Listes
structures linéaires générales. Ce qui les
caractérise est le parcours linéaire on naccède
à une valeur quà travers les précédentes ou les
suivantes. Insertion et effacement en un nombre
constant dopérations, mais laccès prend
plusieurs opérations. Pour un tableau ce serait
le contraire. Piles structures linéaires quon
naccède que par une de ses extrémités.
Insertion, effacement uniquement par cette
extrémité. On appelle parfois les piles les
structures LIFO ou Last-in First-out cest-à-dire
dernier arrivé premier sorti, ce qui décrit le
protocole dinsertion/effacement. File
structures linéaires quon accède par les deux
extrémités mais une sert à linsertion alors que
lautre sert à leffacement uniquement. On
appelle parfois les files les structures FIFO ou
First-in First-out cest-à-dire premier arrivé
premier sorti, ce qui décrit le protocole
dinsertion/effacement.
Licence informatique 2006-2007. Introduction
à lalgorithmique. G. Hains
3Applications des structures de données linéaires
Listes Elles servent comme les tableaux à gérer
dynamiquement des ensembles de valeurs. On les
préfère aux tableaux quand on doit
insérer-effacer souvent des valeurs et quun
ordre existe entre les éléments. Les langages de
programmation déclarative (de très haut niveau)
sen servent comme structure principale Lisp,
Scheme, Caml, ML, Haskell, Python, Prolog etc.
Piles On utilise une pile partout où il faut
mémoriser son chemin et parfois rebrousser
chemin parcours dun graphe (le fil dAriane est
une pile), parcours dun arbre, exécution des
blocs dun programme et des appels de fonctions,
compilation dun arbre syntaxique en langage
cible etc. Files On utilise une file quand il
faut simuler une file dattente et/ou conserver à
la sortie lordre des éléments insérés à
lentrée canal de communication,
lecture/écriture dun fichier, simulation de
circuit intégré, simulation de systèmes à
événements discrets (réseaux de transport,
réseaux de télécom etc).
Licence informatique 2006-2007. Introduction à
lalgorithmique. G. Hains
4Spécifications algébriques
Les spécifications algébriques sont des
ensembles de déclarations, comme les
spécifications des paquetages Ada, auxquelles on
ajoute des axiomes. Ces derniers représentent les
propriétés dynamiques des structures de données
et constituent un cahier des charges pour toute
implantation correcte. Nous allons montrer
des spécifications pour les piles, les files puis
une pour les opérations les plus simples sur les
listes et enfin une spécification plus complète
pour des opérations sur les listes.
Licence informatique 2006-2007. Introduction à
lalgorithmique. G. Hains
5spec PILE0 Piles generiques de taille
non-bornee etend BOOL0, NAT0 sorte S, Pile
S sorte des objets de base en pratique on
utilise PILE0SMa_sorte_preferee
operations pilenouv -gt Pile
constructeur pile vide empiler Pile S
-gt Pile constructeur depiler Pile -gt
Pile remplacer Pile S -gt Pile remplacer
le sommet sommet Pile -gt S vide
Pile -gt Bool vacuite hauteur
Pile -gt Nat preconditions pPile xS pre(
sommet(p)) (vide(p)) pre( depiler(p))
(vide(p)) pre(remplacer(p,x))
(vide(p))
Licence informatique 2006-2007. Introduction à
lalgorithmique. G. Hains
6- axiomes pPile xS
- (p1) vide(pilenouv) vrai
- (p2) hauteur(pilenouv) 0
- (p3) vide(empiler(p,x)) faux
- (p4) hauteur(empiler(p,x)) hauteur(p) 1
- (p5) sommet(empiler(p,x)) x
- (p6) depiler(empiler(p,x)) p
- (p7) remplacer(p,x) empiler(depiler(p),x)
- fspec
Licence informatique 2006-2007. Introduction à
lalgorithmique. G. Hains
7spec FILE0 Files generiques de taille
non-bornee etend BOOL0, NAT0 sorte S , File
S sorte des objets de base operations
filenouv -gt File constructeur file vide
adjq File S -gt File constructeur adjoindre
a la queue. supt File -gt File
supprimer la tete tete File -gt S
element de tete vide File -gt Bool
vacuite lgr File -gt Nat
longueur preconditions pre(tete(f))
vide(f) pre(supt(f)) vide(f) axiomes
pPile xS (f1) vide(filenouv) vrai (f2)
lgr(filenouv) 0 (f3) vide(adjq(f,x))
faux (f4) lgr(adjq(f,x)) lgr(f) 1 (f5)
tete(adjq(f,x)) si vide(f) alors x sinon
tete(f) fsi (f6) supt(adjq(f,x)) si vide(f)
alors filenouv
sinon adjq(supt(f),x) fsi fspec
Licence informatique 2006-2007. Introduction à
lalgorithmique. G. Hains
8spec LISTE0 Listes generiques de taille
non-bornee etend BOOL0, NAT0 sorte S , Liste S
sorte des objets de base operations
listenouv -gt Liste constructeur liste vide
adjt Liste S -gt Liste constructeur
adjoindre a la tete supt Liste -gt Liste
supprimer la tete tete Liste -gt S
element de tete vide Liste -gt Bool
vacuite lgr Liste -gt Nat longueur
preconditions lListe pre(tete(l))
vide(l) pre(supt(l)) vide(l) axiomes
lListe xS (l1) vide(listenouv) vrai (l2)
lgr(listenouv) 0 (l3) vide(adjt(l,x))
faux (l4) lgr(adjt(l,x)) lgr(l) 1 (l5)
tete(adjt(l,x)) x (l6) supt(adjt(l,x)) l fspec
Licence informatique 2006-2007. Introduction à
lalgorithmique. G. Hains
9spec LISTE1 Extension de LISTE0 avec de
nouvelles operations etend LISTE0 On suppose
une operations d'egalite sur S operations
app Liste S -gt Bool appartenance
__ Liste Nat -gt S li i-eme element
de l queue Liste -gt S element de
queue adjq Liste S -gt Liste
adjoindre a la queue conc Liste Liste -gt
Liste concatenation supq Liste
-gt Liste supprimer la queue
preconditions lListe xS iNat pre(li)
0 lt i /\ i lt lgr(l) pre(queue(l))
vide(l) pre(supq(l)) vide(l) axiomes (l7)
app(listenouv,x) faux (l8) app(adjt(l,y),x)
xy \/ app(l,x) (l9) l1 tete(l) (l10)
adjt(l,x)succ(i) li (l11) queue(l)
llgr(l) (l12) adjq(listenouv,x)
adjt(listenouv,x) (l13) adjq(adjt(l,y),x)
adjt(adjq(l,x),y) ... a completer
definition de concaténation ... fspec
Licence informatique 2006-2007. Introduction à
lalgorithmique. G. Hains