LINF1251: Enregistrements et Arbres - PowerPoint PPT Presentation

About This Presentation
Title:

LINF1251: Enregistrements et Arbres

Description:

Un arbre est une feuille (' leaf ') ou une s quence de z ro ou plusieurs arbres ... Arbre de recherche: Un arbre qui est utilis pour rechercher des informations, ... – PowerPoint PPT presentation

Number of Views:54
Avg rating:3.0/5.0
Slides: 47
Provided by: seifha
Category:

less

Transcript and Presenter's Notes

Title: LINF1251: Enregistrements et Arbres


1
LINF1251Enregistrements et Arbres
  • Peter Van Roy
  • Département dIngénierie Informatique, UCL
  • pvr_at_info.ucl.ac.be

2
Test le 9 mars 2005!
  • Le test aura une durée dune heure
  • Pendant la première moitié du cours, dans
    lauditoire du cours
  • La matière est toute la matière des cinq
    premières semaines
  • Test à livre fermé, il suffit davoir un stylo ou
    un crayon
  • Il y aura une question pratique (écrire un petit
    programme) et une question théorique (définir
    quelques concepts)
  • Le test comptera pour 25 des points
  • Dispensatoire tu peux garder les points ou
    refaire la matière pendant lexamen à la fin
  • Un bon feedback pour le cours!

3
Ce quon va voir aujourdhui
  • Résumé du dernier cours
  • Les tuples et les enregistrements
  • Une liste est un tuple
  • Un tuple est un enregistrement
  • Les arbres
  • Les arbres binaires ordonnés
  • Arbres de recherche
  • Introduction à la sémantique

4
Résumédu dernier cours
5
Techniques de programmation
  • Techniques de base
  • Utiliser les variables non-liées pour permettre
    les appels récursifs en dernier (exemple
    dAppend)
  • Utiliser un accumulateur pour augmenter
    lefficacité dun algorithme (exemple de Reverse)
  • Utiliser un type pour définir une fonction
    récursive (exemple de Flatten)
  • Diviser pour régner
  • Algorithme de Mergesort
  • Programmer avec des accumulateurs
  • Un accumulateur est un état qui est
    successivement transformé

6
Les tuples
7
Tuples
X
Xstate(1 a 2)
  • Un tuple permet de combiner plusieurs valeurs
  • Par exemple 1, a, 2
  • La position est significative première,
    deuxième, troisième!
  • Un tuple a une étiquette (label)
  • Par exemple state

8
Opérationssur les tuples
X
Xstate(1 a 2)
  • Label X renvoie létiquette du tuple X
  • Par exemple state
  • Cest un atome
  • Width X renvoie la largeur (nombre de champs)
  • Par exemple 3
  • Cest toujours un entier positif ou zéro

9
Accès aux champs(opération .)
X
Xstate(1 a 2)
  • Les champs sont numérotés de 1 jusquà Width X
  • X.N renvoie le nième champ du tuple
  • Par exemple, X.1 renvoie 1
  • Par exemple, X.3 renvoie 2
  • Dans lexpression X.N, N sappelle le nom du
    champ (feature)

10
Construire un arbre
X
m
Z
Y
  • Un arbre peut être construit avec des
    tuples declare
  • Yl(1 2) Zr(3 4)
  • Xm(Y Z)

11
Opération dégalité ()
  • Tester légalité avec un nombre ou un atome
  • Cest simple le nombre ou latome doit être le
    même
  • Souvent le pattern matching est plus court
  • Testing légalité des arbres
  • Cest simple aussi les deux arbres doivent avoir
    les même sous-arbres et les mêmes feuilles
  • Attention aux arbres avec des cycles!
  • Conseil pour linstant, éviter ce genre darbres

12
Résumé des tuples
  • Tuple
  • Étiquette (label)
  • Largeur (width)
  • Champ (field)
  • Nom de champ (feature)
  • On peut construire des arbres
  • On peut les utiliser dans le pattern matching
  • On peut les comparer avec

13
Une liste est un tuple
  • Une liste HT est un tuple (H T)
  • Ceci permet la simplicité au lieu davoir deux
    concepts (tuples et listes), il ny a quun
    concept (tuple)
  • A cause de sa grande utilité, une liste est
    soutenue par un sucre syntaxique
  • Cest uniquement pour le confort du programmeur,
    dans le langage noyau il ny a que des tuples

14
Les enregistrements(records)
15
Enregistrements (records)
  • Un enregistrement est une généralisation dun
    tuple
  • Les noms des champs peuvent être des atomes
  • Les noms des champs peuvent être nimporte quel
    entier
  • Pas besoin de commencer avec 1
  • Pas besoin dêtre consécutif
  • Un enregistrement a aussi une étiquette et un
    largeur

16
Enregistrements
X
Xstate(a1 2a b2)
a
b
2
  • La position nest plus significative
  • Il y a le nom du champ qui est significatif à la
    place
  • Laccès aux champs est comme avec les tuples
  • X.a1

17
Opérationssur les enregistrements
  • Il y a les opérations détiquette et de largeur
  • Label Xstate
  • Width X3
  • Il y a le test dégalité
  • Xstate(a1 b2 2a)
  • Il y a une nouvelle opération larité
  • La liste des noms de champs
  • Arity X2 a b (en ordre lexicographique)
  • Larité marche aussi pour les tuples et les
    listes (!)

18
Un tuple est un enregistrement
  • Lenregistrement
  • X state(1a 2b 3c)
  • est équivalent à
  • X state(a b c)
  • Dans un tuple, tous les champs sont numérotés
    consécutivement à partir de 1
  • Quest-ce qui se passe si on fait
  • X state(a 2b 3c)
  • ou
  • X state(2b 3c a)
  • Dans un enregistrement, tous les champs sans nom
    sont numérotés consécutivement à partir de 1

19
Il ny a que des enregistrements
  • Dans le langage noyau il ny a que des
    enregistrements
  • Un atome est un enregistrement dont le largeur
    est 0
  • Un tuple est un enregistrement dont les noms des
    champs sont des entiers successifs à partir de 1
  • Si on ne satisfait pas à cette condition, cest
    un enregistrement
  • Une liste est construit avec les tuples nil et
    (X Y)
  • Cest la simplicité

20
Quelques exemples
  • Pour les enregistrements suivants sagit-il dun
    tuple ou une liste?
  • Aa(1a 2b 3c)
  • Ba(1a 2b 4c)
  • Ca(0a 1b 2c)
  • Da(1a 2b 3c d)
  • Ea(a 2b 3c 4d)
  • Fa(2b 3c 4d a)
  • Ga(1a 2b 3c food)
  • H(1a 2(1b 2nil))
  • I(1a 2(1b 3nil))

21
Les arbres
22
Les arbres
  • Apart les listes, les arbres sont les structures
    de données inductives les plus importantes
  • Un arbre est une feuille ( leaf ) ou une
    séquence de zéro ou plusieurs arbres
  • Une liste a une structure linéaire, mais un arbre
    a une structure bifurcante
  • Il y a énormément de différentes sortes darbres.
    Nous allons regarder une seule sorte darbre,
    les arbres binaires ordonnés.

23
Arbres binaires ordonnés
  • ltbtree Tgt tree(keyT valueltvaluegt ltbtree Tgt
    ltbtree Tgt) leaf
  • Binaire chaque noeud qui nest pas une feuille a
    deux sous-arbres
  • Ordonné les clés du sous-arbre gauche lt clé du
    noeud lt clés du sous-arbre droite

key3 valuex
key1 valuey
key5 valuez
leaf
leaf
leaf
leaf
24
Arbres de recherche
  • Arbre de recherche Un arbre qui est utilisé pour
    rechercher des informations, insérer des
    informations, ou enlever des informations
  • Définissons trois opérations
  • Lookup X T renvoie la valeur qui correspond à
    la clé X
  • Insert X V T renvoie un nouvel arbre qui
    contient (X,V)
  • Delete X T renvoie un nouvel arbre qui ne
    contient pas X

25
Rechercher des informations
  • Il y a quatre cas de figure
  • X nest pas trouvé
  • X est trouvé
  • X peut être dans le sous-arbre gauche
  • X peut être dans le sous-arbre droite

fun Lookup X T case T of leaf then
notfound tree(keyY valueV T1 T2) andthen
XY then found(V) tree(keyY valueV T1
T2) andthen XltY then Lookup X T1
tree(keyY valueV T1 T2) andthen XgtY
then Lookup X T2 end end
26
Insérer des informations
  • Il y a quatre cas de figure
  • (X,V) est inséré tout de suite
  • (X,V) remplace un nœud existant avec la même clé
  • (X,V) est inséré dans le sous-arbre gauche
  • (X,V) est inséré dans le sous-arbre droite

fun Insert X V T case T of leaf then
tree(keyX valueV leaf leaf) tree(keyY
valueW T1 T2) andthen XY then tree(keyX
valueV T1 T2) tree(keyY valueW T1 T2)
andthen XltY then tree(keyY valueW Insert X V
T1 T2) tree(keyY valueW T1 T2) andthen
XgtY then tree(keyY valueW T1 Insert X V T2)
end end
27
Enlever des informations (1)
  • Il y a quatre cas de figure
  • (X,V) nest pas dans larbre
  • (X,V) est enlevé tout de suite
  • (X,V) est enlevé du sous-arbre gauche
  • (X,V) est enlevé du sous-arbre droite
  • Vrai? FAUX!

fun Delete X T case T of leaf then
leaf tree(keyY valueW T1 T2) andthen
XY then leaf tree(keyY valueW T1 T2)
andthen XltY then tree(keyY valueW Delete X
T1 T2) tree(keyY valueW T1 T2) andthen
XgtY then tree(keyY valueW T1 Delete X T2)
end end
28
Enlever un élémentdun arbre binaire
X
X
Enlever X dun arbre binaire. Le cas simple est
quand un des sous-arbres est vide. Ce nest pas
toujours le cas!
29
Enlever un élémentdun arbre binaire
A
A
X
?
Enlever X dun arbre binaire. Le problème est de
réparer larbre après la disparition de X.
30
Enlèvement dun arbre binaire
enlever X
déplacer Y
X
Y
Y
Remplir le trou après lenlèvement de X
31
Enlever des informations (2)
  • Le problème avec lautre programme est quil
    nenlève pas correctement un nœud non-feuille
  • Pour le faire correctement, larbre doit être
    reorganisé
  • Un nouvel élément doit remplacer lélément enlevé
  • Lélément peut être le plus petit du sous-arbre
    droite ou le plus grand du sous-arbre gauche

fun Delete X T case T of leaf then
leaf tree(keyY valueW T1 T2) andthen
XY then case RemoveSmallest T2 of none then
T1 YpWpTp then tree(keyYp
valueWp T1 Tp) end end end
32
Enlever des informations (3)
  • Pour enlever une racine Y, il y a deux
    possibilités
  • Un sous-arbre est une feuille. On prend lautre.
  • Aucun sous-arbre nest une feuille. On enlève un
    élément dun des sous-arbres.

Y
T1
T1
leaf
Y
Yp
T1
T2
T1
Tp
33
Enlever des informations (4)
  • La fonction RemoveSmallest T enlève le plus
    petit élément de T et renvoie le triplet
    XpVpTp, où (Xp,Vp) est le plus petit élément et
    Tp est larbre restant

fun RemoveSmallest T case T of leaf
then none tree(keyX valueV T1 T2) then
case RemoveSmallest T2 of none
then XVT2 XpVpTp then
XpVptree(keyX valueV T1 Tp) end
end end
34
Enlever des informations (5)
  • Pourquoi lopération denlèvement est-elle
    compliquée?
  • Cest parce que larbre satisfait une condition
    globale, dêtre ordonné
  • Lopération denlèvement doit travailler pour
    maintenir cette condition
  • Beaucoup dalgorithmes sur des arbres dépendent
    des conditions globales et doivent travailler dur
    pour les maintenir
  • Le bon côté de la condition globale est quelle
    donne à larbre une étincelle de magie larbre
    se comporte un peu comme un être vivant
    ( comportement orienté vers des buts )
  • Les êtres vivants sont très orientés vers des buts

35
Introduction à la sémantique
36
Votre programme est-il correct?
  • Un programme est correct quand il fait ce quon
    veut quil fasse
  • Comment se rassurer de cela?
  • Il y a deux points de départ
  • La spécification du programme une définition du
    résultat du programme en termes de lentrée
    (typiquement une fonction ou relation
    mathématique)
  • La sémantique du langage un modèle précis des
    opérations du langage de programmation
  • On doit prouver que la spécification est
    satisfaite par le programme, quand il exécute
    selon la sémantique du langage

37
Les trois piliers
  • La spécificationce quon veut
  • Le programmece quon a
  • La sémantique permet de faire le lien entre les
    deux de prouver que ce quon a marche comme on
    veut!

Spécification (formule mathématique)
Sémantique
Programme (langage de programmation)
38
Induction mathématique
  • Pour les programmes récursifs, la preuve
    utilisera linduction mathématique
  • Un programme récursif est basé sur un ensemble
    ordonné, comme les entiers et les listes
  • On montre dabord lexactitude du programme pour
    les cas de base
  • Ensuite, on montre que si le programme est
    correct pour un cas donné, alors il est correct
    pour le cas suivant
  • Pour les entiers, le cas de base est souvent 0 ou
    1, et pour un entier n le cas suivant est n1
  • Pour les listes, le cas de base est nil ou une
    liste avec un ou plusieurs éléments, et pour une
    liste T le cas suivant est HT

39
Exempleexactitude de la factorielle
  • La spécification de Fact N (purement
    mathématique)
  • 0! 1
  • n! n ((n-1)!) si ngt0
  • Le programme (en langage de programmation)
  • fun Fact N
  • if N0 then 1 else NFact N-1 end
  • end
  • Où est la sémantique du langage?
  • On la verra la semaine prochaine!
  • Aujourdhui le raisonnement sera intuitif

40
Raisonnement pour la factorielle
  • Il faut démontrer que lexécution de Fact N
    donne n! pour tout n
  • Cas de base n0
  • La spécification montre 0!1
  • Lexécution de Fact 0 avec la sémantique montre
    Fact 01
  • Cas inductif (n-1) n
  • Lexécution de Fact N, selon la sémantique,
    montre que Fact N NFact N-1
  • Avec lhypothèse de linduction, on sait que
    Fact N-1(n-1)!
  • Si la multiplication est exacte, on sait donc
    Fact NN((n-1)!)
  • Selon la définition mathématique de la
    factorielle, on peut déduire Fact Nn!
  • Pour finir la preuve, il faut la sémantique du
    langage!

41
Machine abstraite
  • Comment peut-on définir la sémantique dun
    langage de programmation?
  • Une manière simple et puissante est la machine
    abstraite
  • Une construction mathématique qui modélise
    lexécution
  • Nous allons définir une machine abstraite pour
    notre langage
  • Cette machine est assez générale elle peut
    servir pour presque tous les langages de
    programmation
  • Plus tard dans le cours, nous verrons par exemple
    comment définir des objets et des classes
  • Avec la machine abstraite, on peut répondre à
    beaucoup de questions sur lexécution
  • On peut prouver lexactitude des programmes ou
    comprendre lexécution des programmes compliqués
    ou calculer le temps dexécution dun programme

42
Concepts de lamachine abstraite
  • Mémoire à affectation unique s x110,x2,x320
  • Variables et leurs valeurs
  • Environnement E X x, Y y
  • Lien entre identificateurs et variables en
    mémoire
  • Instruction sémantique (ltsgt,E)
  • Une instruction avec son environnement
  • Pile sémantique ST (lts1gt,E1), , (ltsngt,En)
  • Une pile dinstructions sémantiques
  • Exécution (ST1,s1) (ST2,s2) (ST3,s3)
  • Une séquence détats dexécution (pile mémoire)

43
Environnement
  • Environnement E
  • Correspondance entre identificateurs et variables
  • Un ensemble de paires X x
  • Identificateur X, variable en mémoire x
  • Exemple dun environnement
  • EX x, Y y
  • E(X)x
  • E(Y)y

44
Lenvironnementpendant lexécution
  • Prenons une instruction(E0) local X Y in
    (E1) X2 Y3 local X in (E2) XYY Br
    owse X end (E3) end
  • E0Browse bE1X x1, Y y, Browse
    bE2X x2, Y y, Browse bE3E1

45
Résumé
46
Résumé
  • Les structures de données
  • Tuples et enregistrements
  • Il na que les enregistrements dans le langage
    noyau
  • Les arbres
  • Opérations sur les arbres binaires ordonnés
  • Limportance et la difficulté de maintenir les
    conditions globales
  • Introduction à la sémantique
Write a Comment
User Comments (0)
About PowerShow.com