Title: Licence MIA 0708Madeleine Bonnet Algorithmique L2
1UE Algorithmique 3semestre 3
- Dominante informatique UE obligatoire
- Dominante mathématiques UE obligatoire à choix
- Crédits et coefficients 5
2Contrôle des connaissances
- Contrôle continu CC
- 1 épreuve écrite sur 18 points
- participation aux TD sur 2 points
- Examen E épreuve écrite de 1h30
- Note session 1 max ( E (E CC)/2)
- Note session 2 si CC gt10 alors max ( E (E
CC)/2) sinon E - E étant à chaque fois la note de lexamen de la
session concernée
3Bibliographie non exhaustive
- Initiation à lalgorithmique et aux structures de
données J. Courtin, I. Kowarski DUNOD - Introduction à lalgorithmiqueTh. Cormen, CH.
Leiserson, R. Rivest DUNOD - Méthodes mathématiques pour linformatiqueJ.
Vélu DUNO - Algorithmique Conception et analyse
- G. Brassard, P. Bratley MASSON
- Mathématiques pour linformatiqueA. Arnold, I.
Guessarian MASSON - Types de données et algorithmesC. Froidevaux,
M-C. Gaudel, M. Soria Mc GRAW-HIL - Construire les algorithmesPair, Schott,
Mohr DUNOD - Structures de données et algorithmesA. Aho, J.
Hopcroft, J. Ullman INTEREDITIONS - Jeux et casse-tête à programmerJ.
Arsac DUNOD
4Pourquoi létude des algorithmes ?
- Létude des algorithmes et des structures de
données est fondamentale en informatique.
Lanalyse rigoureuse a posteriori des algorithmes
proposés permet de les valider, dévaluer leur
complexité et parfois de justifier de leur
optimalité - Nous verrons comment aborder, analyser, résoudre
un problème de façon à acquérir de bons réflexes
grâce à une spécification précise et une analyse
a posteriori
5Pourquoi un peu de mathématiques ?
- Linformatique, comme toute discipline
scientifique, fait appel aux mathématiques pour
formaliser des concepts, modéliser des
situations, abstraire des objets afin de pouvoir
raisonner et étudier a priori les propriétés des
objets manipulés (machines, programmes, systèmes,
réseaux) - Il faut être capable
- de sassurer quun programme se termine toujours
- destimer sont temps dexécution pour des valeurs
données - de déterminer les conditions dutilisation, de
saturation - Dans ce cours, les mathématiques nécessaires pour
aborder les notions algorithmiques seront
étudiées au fur et à mesure des besoins
6Début du programme de lUE Algorithmique 3
- Algorithme, écriture
- Notions de base de la théorie des ensembles
- Fonctions, cardinaux, opérations, relations
- Ensembles ordonnés,
- Méthode de construction dune boucle
- Applications Recherche séquentielle puis
dichotomique dans un vecteur - Complexité
- Algorithmes de tri
- Récursivité applications
- Ensembles bien fondés
- Raisonnement par récurrence
- Définitions inductives
- Types abstraits
7Algorithme
- sert à résoudre un problème défini sur un
ensemble fini de données (éventuellement vide) - ensemble d'opérations élémentaires
- organisé selon des règles précises
- pour chaque donnée du problème, l'algorithme
retourne une réponse après un nombre fini
d'étapes - les règles doivent être précises, non ambiguës
- opérations élémentaires arithmétiques,
logiques, transfert de données, comparaisons - les algorithmes sont déterministes même
résultat si même donnée
8Écriture des algorithmes
- Aucun langage particulier nétant choisi dans ce
cours, nous utiliserons le pseudo langage défini
par les instructions fondamentales suivantes - Instruction conditionnelle avec alternative
- SI test - SI
testALORS suite dinstructions ALORS suite
dinstructions SINON suite dinstructions - Le test est une expression booléenne cest-à-dire
qui prend ses valeurs dans lensemble vrai,
faux - Instructions de répétition
- TANTQUE testFAIRE suite dinstructions
- REPETER suite dinstructionsJUSQUA test
- POUR nombre-de-passagesFAIRE suite dinstructions
9Notions de base de la théorie des ensembles
- Nous avons rappelé, ou donné, en cours quelques
définitions de base de la théorie des ensembles
qui seront utiles dans dautres cours. Voici les
notions dont il faut connaître les définitions - Ensembles
- Ensemble, élément appartenant à un ensemble,
lensemble qui na aucun élément est appelé
lensemble vide et est noté ? - Partie ou sous-ensemble dun ensemble, inclusion
A ? B - Soit E un ensemble, on note P(E) lensemble des
parties de E. Les éléments de P(E) sont des
ensembles. Exemple E 0,1, P(E)
0,1,E, ?. P(E) contient toujours E et ? - Produit cartésien de deux ensembles A et B, noté
A?B est lensemble des couples (x,y) tels que x
?A et y ?B. Le produit cartésien se généralise à
une famille finie densembles
10- Opérations sur les ensembles Soit E un ensemble
et A et B deux parties de E - Union, intersection, différence A\B x ? E \ x
?A et y ? B, complémentaire, lois de Morgan - ensembles disjoints
- Partition dun ensemble (3 propriétés à
satisfaire) - Applications et fonctionsf E ?F à un élément
de E on associe un seul élément de F - Lorsque tout élément de E a une image dans F, on
parle en général dapplication, sinon, on définit
le domaine de E sur lequel f est définie - On peut aussi définir une application comme un
triplet f (E, F, G) où G, partie de E ? F est
le graphe de lapplication - Dom(f) x ? E / ? y ? F, (x, y) ? G
- Im(f) y ? F / ? x ? E , (x, y) ? G
- Lensemble des applications de E dans F est noté
FE - application injective, surjective, bijective
11- Cardinal dun ensemble
- Un ensemble E est fini si et seulement si il
existe un entier n et une bijection de E vers
n 1, ,n. Ce nombre est unique et est
appelé le cardinal de E - Un ensemble est dénombrable sil peut être mis en
bijection avec N, lensemble des entiers
naturels. Cest ainsi que lon a montré que le
produit cartésien N ? N était dénombrable en
exhibant une bijection qui à chaque couple
dentiers fait correspondre un seul entier - Opérations, relations
- Une opération binaire sur un ensemble E est une
application de E ? E ? E on dit aussi loi de
composition interne - Lopération peut être associative, commutative,
posséder un élément neutre - Un ensemble muni dune loi de composition interne
associative et possédant un élément neutre est
appelé un monoïde - Un exemple très utile en informatique le
monoïde libre S , engendré par un alphabet S.
Cest lensemble des suites finies formées
déléments de S. On a lhabitude dappeler mots
ces suites. - Sn est lensemble des mots de longueur n et
12- Une relation binaire R sur E est une partie de E
? E ou une application de E ? E ? vrai, faux - Propriétés des relations binaires
- réflexive si ? x ? E on a x R x
- irréflexive si ? x, x ? E, x R x ? x ?
x - symétrique si ? x, x ? E, x R x ? x R x
- antisymétrique si ? x, x ? E, x R x et x R
x? x x - transitive si ? x, x, x ? E x R x et
x R x ? x R x - Une relation déquivalence est réflexive,
symétrique et transitive - Une relation dordre large est réflexive,
antisymétrique et transitive - Une relation dordre strict est irréflexive,
antisymétrique et transitive - Lordre est total lorsque deux éléments
quelconques de lensemble sont comparables par la
relation, sinon, on dit que lordre est partiel - Lordre habituel sur les réels est total
- Lordre de divisibilité sur les entiers est
partiel a R div b si et seulement si ? c tel
que b a c - Plusieurs ordres peuvent être définis sur un même
ensemble
13Recherche dun élément dans un vecteur
14Recherches dans un vecteur
- Soit un ensemble E muni dun ordre total, un
vecteur de dimension n est une application V
1 .. n ? E (si n 0, lintervalle est
vide) - Le vecteur est trié si ?i ? 1 .. n-1, V(i) ?
Vi1(si n 0 ou n 1, le vecteur est trié)
V
15Recherche séquentielle
- Soit V 1 .. n ? E et x ? Eon cherche
sil existe un indice i ? 1.. n tel que Vi
x - 1er cas, vecteur trié
- il faut chercher un indice i est tel que V1..
i-1 lt x ? Vi .. n - puis il faut vérifier si x Vi1 i
n V
1..i - 1 lt x x ? Vi..n
16- Hypothèses ou situation générale
- les i-1 premiers éléments sont traités (1 ? i ?
n1) - x gt V1.. i - 1
- deux cas possibles
- i n1, cest fini, x gt V1.. n, x ? V
- i lt n1, deux cas possibles
- x ? Vi, cest fini on a trouvé i tel que
V1.. i-1 lt x ? Vi .. n, il reste à
vérifier si x Vi - x gtVi, en faisant i ? i1 on retrouve
lassertion de lhypothèse x gt V1 .. i-1
situation générale
progression vers la situation générale
17Recherche dans un vecteur trié
SI x gt VnALORS x nappartient pas à V
SINON i ? 1 TANTQUE (Vi lt x) FAIRE i
? i1 on est sorti de la boucle
SI Vi x ALORS x apparaît au rang
i SINON x nappartient pas à V
Remarque on omet systématiquement les drapeaux
de fin dinstruction (FINSI, FINTANTQUE) car
lécriture de nos algorithmes est correctement
indentée donc ne présente pas dambiguïté
Cette méthode séquentielle est évidemment
maladroite
18- 2ème cas, vecteur non triéhypothèses les i-1
premiers éléments sont traités (1 ? i ? n1)
x ? V1.. i-1deux cas possibles i n1,
cest fini, x ? V1.. n V i lt n1, deux cas
possibles . Vi x, cest fini , x ? V .
Vi ? x, en faisant i ? i1, on retrouve
lassertion x ? V1 .. i-1
situation générale
progression vers la situation générale
- condition initiale i 1 satisfait les
hypothèses de la situation générale
19Recherche dans un vecteur non trié
i ? 1 TANTQUE ((i lt n) ET (Vi ? x))
FAIRE i ? i1 SI Vi x ALORS x
apparaît au rang i SINON x nappartient pas à
V On transforme facilement ce programme pour
que le résultat soit un entier 0 si x ? V,
lindice i du vecteur si x Vi
20Comment évaluer la complexité ?
21Mesure du coût
- Déterminer une mesure rendant compte de la
complexité des algorithmes - en temps dexécution, en place mémoire
- indépendamment de limplémentation (langage
choisi, machine utilisée) - On ne veut pas lalgorithme A, implémenté par
le programme P sur lordinateur O et exécuté sur
la donnée D utilise k secondes de calcul et j
bits de mémoire - Mais on veut sur tout ordinateur, quel que soit
le langage utilisé, lalgorithme A1 est meilleur
que lalgorithme A2 pour des données de grande
taille
22Complexité
- Il sagit de caractériser le comportement dun
algorithme sur lensemble Dn des données de
taille n - En général, la complexité dépend de la taille n
des données - Pour chaque exemple, nous chercherons si cette
complexité dépend aussi de la donnée d elle-même,
d ? Dn - La vitesse de croissance est un indicateur de la
complexité du problème
23Définitions, notations des mesures de complexité
- coûtA (d) complexité de lalgorithme A sur la
donnée d d ? Dn - Complexité au meilleur des cas coût minA (n)
min coûtA (d), d ? Dn - Complexité au pire des cas coût maxA (n) max
coûtA (d), d ? Dn - Complexité moyenne coût moyA (n) ? coûtA (d)
proba(d) - d ? Dn
24Comparaison des complexités
- Si deux algorithmes différents effectuent le même
travail, il est nécessaire de pouvoir comparer
leur complexité - Il faut alors connaître la rapidité de croissance
des fonctions qui mesurent la complexité lorsque
la taille des données croît (pour une petite
taille, lalgorithme est peu important) - On rechercher lordre de grandeur asymptotique
(limite lorsque n devient infini)1 ? log2n ? n
? n log2n ? n2 ? n3 ? 2n.
25Conclusion
- Plus la taille des données est grande, plus les
écarts en temps se creusent - Les algorithmes utilisables pour les données de
grande taille sont ceux qui sexécutent en un
temps - constant
- logarithmique (recherche dichotomique)
- linéaire (recherche séquentielle)
- n log n (bons algorithmes de tri)
- Les algorithmes qui prennent untemps polynomial
ne sont utilisable que pour des données de très
petite taille - Les progrès technologiques ne permettront jamais
quune telle complexité soit acceptable - Une étude plus complète de la complexité est au
programme des prochains semestres
26Application
- Définissons la complexité des algorithmes
précédents de recherche dun élément dans un
vecteur - 1er cas vecteur trié
- 2ème cas vecteur non trié
27Évaluation de la complexité1er cas vecteur trié
- Lopération significative est ici la comparaison
de lélément x à un élément de V - Le nombre de comparaisons dépend de n mais aussi
de la donnée elle-même - meilleur des cas si x gt Vn, on ne fait
quune seule comparaison - pire des cas si x Vn ou si Vn-1ltxlt
Vnon fait alors ?? comparaisons (? au début,
? dans la boucle et ? en sortie de boucle) - Il faut alors calculer la complexité moyenne
28Complexité moyenne de la recherche séquentielle
dans un vecteur trié
- Hypothèses
- Soit q Prx ? V, V est de longueur n
- Si x ? V, Prx Vi indépendante de i ?
Prx Vi1/n - Si x ? V, la probabilité pour que x soit dans un
intervalle donné ne dépend pas de lintervalle,
cette probabilité vaut donc (1/(n1)) - Notations
- Soit Dn,0 lensemble des V où x napparaît pas
- Soit Dn,i lensemble des V où x apparaît au rang
i -
29- Pr(Dn,0) 1- q
- pour i gt 0, Pr(Dn,i) q/n
- coût moy(n)
- Si x ? V il y a 3 tests si x V1, 4 tests si
x V2, (n2) tests si x Vn - Si x ? V il y 1 test si xgtVn, 3 tests si
xltV1 ., n2 tests si Vn-1lt x lt
Vn - Si x ? V, coût moy(n) (1/n)
- Si x ? V, coût moy(n)
30- Daprès les hypothèses et la formule des
probabilités conditionnellescoût moy(n) q
(n5)/2 (1-q)(n2)/2 - Application
- Si q ½, le coût moyen est (2n7)/4, on dit que
la complexité est de lordre de n/2
31Évaluation de la complexité2ème cas vecteur
non trié
- 2ème cas V non trié
- meilleur des cas ? comparaisons si lélément
cherché est le premier du vecteur - pire des cas ? comparaisons si x ? V
- en moyenne ? ? comparaisons si x ? V, en
supposant les places équiprobables
32Présentation dun algorithme
- Proposer une situation générale
- une partie du travail est déjà réalisée
- quelles propriétés sont supposées satisfaites ?
- spécifier avec précision les paramètres
- Sous la situation générale, quand a-t-on fini ?
- Progresser vers la solution
- Conditions initiales satisfaisant la situation
générale
33Recherche dichotomique
- Si le vecteur est trié, la recherche séquentielle
se fait n/2 comparaisons en moyenne On peut
considérablement diminuer cette complexité - Méthode dichotomique
- comparer lélément x à une valeur située au
milieu du vecteur - si cette valeur diffère de x, continuer la
recherche sur le demi-vecteur susceptible de
contenir x - Nous verrons une écriture récursive plus tard
34Explication de lalgorithme
Partages successifs sur un vecteur trié -
situation générale 1 inf
med sup
n
V1..inf-1 lt x à explorer x lt
Vsup1..n 1 ? inf ? sup ? n
- 2 cas possibles
- inf sup, cest fini, résultat donné par Vinf
x - inf lt sup, on pose med (supinf)/2, 2 cas
- x ? Vmed, on pose sup ? med
- x gt Vmed, on pose inf ? med1
- conditions initiales
elles doivent satisfaire la situation générale
inf 1 et sup n
35Écriture itérative
- Nous allons écrire une fonction dichoiter
dichoiter (x, V, n) - où x ? E - - V est un vecteur déléments de E
- - n est la dimension de V
- - qui rend 0 si x nappartient pas au vecteur
- - qui rend lindice du vecteur où se
trouve, sinon -
36 Fonction dichoiter ( x, V, n) inf ? 1 sup
? n res ? 0
TANTQUE inf ? sup FAIRE med ? (inf sup) DIV 2
SI x Vmed on a fini, il faut sortir de la
boucle ALORS res ? med sup ? inf - 1
SINON SI x lt Vmed ALORS sup ? med - 1
SINON inf ? med 1
resultat ? res
Remarquer comment lon force la sortie de boucle
si lon trouve lélément x
37Évaluation de la complexité
- Il y a une comparaison de x à Vmed pour chaque
sous-vecteur examiné - 1ère comparaison pour un vecteur de taille n
- 2ème ... ... ... ... n/2
- ième ... ... ... ... ? et on sarrête
quand - n/2k-1 2, soit k ?
- complexité remarquable au plus log2 n
comparaisons au lieu de n - exemple n 9000 donne k ?
38Algorithmes de tri dun vecteur
39Tri par sélection algorithme
- On donne lalgorithme
- situation générale
- V1 .. i contient les i plus petits éléments
triés de V - ces éléments ont été remplacés dans V par max(V)
- cest fini si i n
- sinon, on cherche min(V) que lon place en
Vi1 dans V on remplace min(V) par
max(V) i ? i1 on retrouve la situation
générale - initialisation i 0
- exemple V 12 16 -3 6 9 10
40- Déclarations, environnement les mêmes que pour
le tri dichotomiqueLalgorithme va utiliser 2
fonctions - place de lélément minimum indmin(V, n) rend
lindice du minimumngt0, on obtient indmin
m, m appartenant à 1 .. n, Vm ? Vi,
pour tout i dans 1 .. n - valeur du plus grand élément de V maximum (V, n)
rend un élément de Engt0, on obtient maximum
M, M dans V1 .. n, M ? Vi pour tout i
dans 1 .. n
41PROCEDURE triselc(V, V, n) max ? maximum(V, n)
i ? 1 TANTQUE i lt n FAIRE debut pmin ?
indmin(V,n) Vprimi ? Vpmin Vpmin
? max i ? i 1 fin fintantque Vprim
n ? max
42fonction indmin(V, n) rend un indice m ? 1 i ?
2 TANTQUE i ? n FAIRE SI Vm gt Vi
ALORS debut m ? i i ? i 1 fin indmin ? m
43fonction maximum(V, n) rend un élément de E maxi
? V1 i ? 2 TANTQUE i ? n FAIRE SI maxi
lt Vi ALORS debut maxi ? Vi fin i ?
i 1 finfaire maximum ? maxi
44Complexité du tri par sélection
- maximum
- comparaisons à une variable indicée ?
- affectations à une variable indicée
- cas favorable ? cas défavorable ?
- indmin
- comparaisons à une variable indicée ?
- triselec ? comparaisons
- maximum appelée 1 fois ? affectation (favorable)
- indmin appelée (n-1) fois ? affectations
(défavorable)
affectations du corps de triselec
45Tri par bulles (bubble sort)
- Algorithme
- on parcourt le vecteur à partir de la gauche
- chaque fois que lon rencontre 2 éléments
consécutifs non ordonnés, on les permute - en fin de parcours, le plus grand élément se
trouve donc à droite - situation générale initiale
n
i
Vi1 .. n trié
V1 .. i non traité, V1 .. i ? Vi1
46Tri par bulles (suite)
- On soccupe maintenant du sous-vecteur gauche de
1 à i - situation locale initiale
- 2 cas
- si j i, cest finilaction i ? i-1 redonne la
situation générale initiale - si j lt i, 2 cas
- Vj ? Vj1 j ? j1
- Vj gt Vj1, on permute on retrouve la
situation locale
1 j i
V1..j traité, V1..j ? Vj
Vj1..i non traité
47PROCEDURE tri_bulle(V n) i ? n TANTQUE i gt 1
FAIRE j ? 1 TANTQUE j lt i
FAIRE SI Vj gt Vj1 ALORS
permuter (V, j, j1) j ? j1
i ? i - 1 on peut optimiser cet
algorithme, faisons le tourner sur V (1 2 3
6 5 4)
On voit que si lon ne permute pas dans la boucle
jlti alors cest fini et il est inutile de
décrémenter i
48PROCEDURE tri_bullopt(V, n) on va utiliser une
variable booléenne i ? n atonpermute ? true
TANTQUE atonpermute FAIRE debut j ? 1
atonpermute ? faux TANTQUE j lt
i FAIRE SI Vj gt Vj1
ALORS atonpermute ? vrai permut(V, j,
j1) j ? j1
i ? i - 1 fin
49Complexité tri_bulle
- Choisissons la comparaison pour mesurer la
complexité - On passe n-1 fois dans la boucle sur i
- On passe i - 1 fois dans la boucle sur j, qui
dépend de i - Il y a une comparaison dans cette dernière boucle
donc
?
50Complexité
- Tri bulles
- comparaisons ?
- affectations cas favorable ? cas
défavorable ? - Tri bulles optimum
- cas défavorable même complexité que tri bulles
- cas favorable lorsque le vecteur est déjà trié,
un seul parcours de V donc ?
comparaisons ? affectation
51Tri par comptage
- Principe déterminer pour chaque élément de V,
le nombre déléments qui lui sont inférieurs ou
égaux - Pour trouver indi (1 ? i ?n-1 )donnant la place
de Vi dans le vecteur trié, on compare Vi à
tous les éléments de Vi1 .. n - Soit Vk tel que k ?i 1 .. n, 2 cas
possibles - Vk ? Vi incrémenter ind i de 1
- Vk gt Vi incrémenter ind k de 1
52Exemple
53tri_comptage (V, n, Vtrie) POUR i allant de 1
A n FAIRE indi ? 1 initialisation POUR i
allant de 1 A n-1 FAIRE POUR k allant de i1 A
n FAIRE SI Vk lt Vi ALORS indi ?
indi1 SINON indk ? indk1 POUR i
allant de 1 A n FAIRE ? ? Vi On pourrait
très bien ne pas construire Vtrie puisquon
lobtient à partir de V et du tableau ind
54Complexité du tri par comptage
- ? affectations pour la première boucle sur i
- ? passages dans la deuxième boucle sur i
- dans la boucle sur i, k prend ? valeurs
- une comparaison dans chaque passage dans la
boucle sur k donc ? comparaisons - Cherchons le nombre daffectations
-
55Algorithme du drapeau
1 b i r n
bleu blanc Vi .. r non traité
rouge V1 .. b-1 Vb .. i - 1
Vr1 .. n
1 ? b ? i ? r1 r ? n
Deux cas possibles
- i r1 doù Vr1..r non traité (vecteur vide),
cest fini
- i ? r, 3 cas possibles pour Vi
- -Vi blanc
- Vi bleu
- Vi rouge
i ? i1
permut(V, b, i) i ? i1 b ? b1
permut(V, r, i) r ? r-1
56PROCEDURE drapeau (V, n) i ? 1 b ? 1 r ? n
TANTQUE i ? r FAIRE SI blanc(Vi) ALORS i ?
i 1 SINON SI bleu(Vi) ALORS permut(V,
b, i) i ? i 1 b ? b
1 SINON permut(V, r, i) r ?
r - 1
Le nombre de permutations nest pas optimal, on
peut améliorer lalgorithme
57PROCEDURE drapeau (V, n) i ? 1 b ? 1 r ? n
TANTQUE i ? r FAIRE SI blanc(Vi) ALORS i ?
i 1 SINON SI bleu(Vi) ALORS permut(V,
b, i) i ? i 1 b ? b 1 SINON
Vi est rouge TANTQUE (rouge(Vi) ET
rgti) FAIRE r ? r 1 permut(V, r, i)
r ? r 1
58Récursivité
59Récursivité
- Une définition récursive dun mot contient ce
mot. Exemple ascendantUn ascendant dune
personne est - soit son père - soit sa
mère - soit un ascendant de son père ou de sa
mère - la mère de mon père est un ascendant de mon père,
cest donc mon ascendant... - Petit Larousse ascendant parent dont on
descend !
60Récursivité
- Objet défini récursivement lorsqu'il y a
référence à l'objet lui même dans sa définition - Pour décrire l'algorithme sur une donnée d, on
utilise l'algorithme lui même sur un
sous-ensemble de d ou sur une donnée plus petite - Règles
- ne pas ré-appliquer l'algorithme sur des
données plus longues - existence d'un test de
terminaison
61Exemple factorielle n !
- fact (n) n (n - 1) (n - 2) 3 2 1
- cas général fact (n) n fact (n - 1)
- cas particulier fact (1) 1 ou fact (0) 1
- Cette définition ne nous donne pas une méthode de
calcul elle nous dit qu'on peut le faire - Les langages de programmation autorisent en
général la récursivité les actions nécessaires
au calcul seront effectuées automatiquement par
le système
62Version récursive de n !
- Fonction factrec (n) SI n ? 1 ALORS factrec
? 1 SINON factrec ? n factrec (n-1) - Comment se déroule le calcul de y ? factrec (4) ?
63Factrec(4)
- activation 1 factrec(4)
- activation 2 4 factrec(3)
- activation 3 3 factrec(2)
- activation 4 2 factrec(1) 1
- La gestion de la mémoire se fait par pile
64Version itérative de n !
- Cest plus compliqué
- Fonction factiter (n) f ? 1 POUR i ? 2 A n
FAIRE f ? f i factiter ? f - On vérifie que ça marche pour n 0 et n 1
65Solution itérative ou récursive ?
- cela dépend de l'application,
- du coût en temps d'exécution et en place mémoire
- exemple 1 factorielle, équivalence des
solutions itérative et récursive - exemple 2 nombres de Fibonacci,fibo N ? N
fibo (0) 1, fibo (1) 1 fibo (n)
fibo(n - 1) fibo(n - 2)
66nombres de Fibonacci version récursive
- Fonction fibrec (n) SI (n 0) OU (n
1) ALORS fibrec ? 1 SINON fibrec ? fibrec(n -
1) fibrec(n - 2) - Cette méthode nécessite 2 appels récursifs
(fonction dyadique) - Le résultat est assez rapide pour n 5 mais
beaucoup plus long pour n 30 - Regardons ce que fait le programme pour n 5
67Complexité de la fonction fibrec
- Construisons larbre binaire des appels
- Le bloc F(3), qui représente presque la moitié
des calculs, est appelé deux fois - Les appels sont gérés dans une pile
- Cherchons combien dappels F(1) ou F(0) sont
effectués. - Le nombre F(n) croît exponentiellement avec n
Cest lentier le plus proche de où
68nombres de Fibonacci version itérative
- Cette fonction a une complexité faible comparée à
celle de la fonction récursive mais son écriture
nest pas immédiate, elle demande réflexion - Fonction fiboiter (n) a ? 1
- b ? 1 POUR k ? 1 A n - 1 FAIRE b ? a b
a ? b - a fiboiter ? b
69Exemples dalgorithmes récursifs
- Recherche par dichotomie dun élément x dans un
vecteur trié V de dimension n - Nous avons déjà vu une version itérative et nous
avons calculé la complexité qui est nettement
meilleure que celle de la recherche séquentielle
dans un vecteur trié
70- La fonction va rendre une valeur booléenne
- Fonction rech (x, inf, sup, V) SI sup - inf gt
1 ALORS med ?(supinf) DIV 2 SI x gt
tabmed ALORS rech ? rech(x, med1,
sup) SINON rech ? rech(x, inf, med)
SINON rech ?((x ? tabinf) OU (x ? tabsup))
71Tri rapide
- Basé sur le principe diviser pour régner cest
un exemple de tri par dichotomie, effectué sur
place - le vecteur Vinf .. sup est à trier (inf lt sup)
- on segmente le vecteur en deux sous-vecteurs tels
que tous les éléments du premier soient
inférieurs à tous ceux du second - segmentation se fait à partir dune valeur pivot,
ici celle du premier élément
place du pivot
inf
sup
gt
??
Vinf .. place?1 ? Vplace lt
Vplace 1 .. sup
72- La frontière entre les 2 sous-vecteurs donne la
place définitive du pivot - On recommence sur les 2 sous-vecteurs obtenus en
prenant toujours le 1er élément comme pivot - La segmentation et le placement du pivot ne
nécessitent quun seul parcours du vecteur, ces
opérations sont réalisées grâce à la
73- PROCEDURE placer (V, inf, sup, place) rend
lindice place où a été placé le pivot
Vinfinf lt sup ? - place ? j
- Vinf .. j?1 ? Vj lt Vj1 .. sup
74Algorithme
- Deux marqueurs gauche et droit partent des
extrémités du vecteur et vont lun vers lautre - gauche part de inf et sarrête lorsquil atteint
un élément dont la valeur est gt à celle du
pivot - droit part de sup et sarrête lorsquil atteint
un élément dont la valeur est ? à celle du pivot - on échange alors ces deux éléments
- on continue à faire progresser les marqueurs, à
faire les échanges jusquà ce que les marqueurs
se croisent - quand les marqueurs se croisent, on échange les
valeurs du pivot et de droit
75Exemple
non
10 21 2 12 4 7 19
on ajoute une sentinelle en Vsup 1 dont la
valeur est supérieure à toutes celles du vecteur
à traiter
76- tri_rapide (V, inf, sup) Vinf .. sup
quelconque, rend Vinf .. sup triéSI
infltsupALORS placer (V, inf, sup,
place) tri_rapide (V, inf, place-1) tri_rapide
(V, place1, sup) - on voit la nécessité dintroduire une sentinelle
à la position n1 (pour un vecteur de longueur n)
- écrire la procédure placer qui rend lindice
place où a été placé le pivot
77- placer(V, inf, sup, place)g ? inf1d ?
supTANTQUE g ? d TANTQUE Vg?Vinf g ? g1
TANTQUE VdgtVinf d ? d-1 SI
gltd ALORS permuter(Vg, Vd) g ? g1 d ?
d-1permuter(Vinf, Vd)place ? d
78Evaluation de la complexité
- procédure placer
- pour n éléments dans la liste, la procédure
compare le pivot aux n?1 autres éléments.
Certaines comparaisons sont faites 2 fois lorsque
les marqueurs g et d se croisent, on a alors n1
comparaisons au lieu de n?1 - le nombre déchanges dans le cas défavorable est
?n/2? (cest-à-dire 3 ?n/2? affectations).
Ceci se produit lorsque le pivot vient au milieu
et que tous les éléments qui lui sont supérieurs
se trouvent en début de vecteur - procédure tri_rapide
- on donne larbre binaire des appels de la
procédure pour lexemple précédent
79tr(1,7)
tr(5,7)
non
tr(1,3)
tr(6,7)
tr(3,3)
tr(1,1)
tr(5,4)
tr(8,7)
tr(6,6)
Chaque appel de trirapide provoque celui de
placer sur des vecteurs de taille ? n ? 2
sous-vecteurs ont en tout au maximum n ? 1
éléments ? 4 n ? 3 ... ?
p n ? (p ? 1) ... Par
sous-vecteur, on fait au plus 1 comparaison de
plus que le nombre déléments - arbre
équilibré ? n log2(n) comparaisons - arbre
dégénéré ? ? n2 comparaisons
80Application récursivité Tours de Hanoï
- Soient n plateaux de taille croissante (1 à n) et
3 tiges A (arrivée) D (départ) X (auxilliaire) - Au départ les plateaux sont empilés sur D par
taille croissante, le plus grand en bas - On veut placer ces plateaux, dans le même ordre,
sur la tige A - On ne déplace quun plateau à la fois
- On ne peut poser un plateau que sur un plateau de
taille supérieure
81- Soit Han (p, D, A) la procédure consistant à
déplacer les p premiers plateaux de la tige D à
la tige A - On raisonne par récurrence si lon sait faire
Han(p-1, D, A) alors on a gagné. En effet, il
suffit deffectuer - Han(p-1, D, X)
- Por(p, D, A) qui porte le plateau p de la tige D
à la tige A - Han(p-1, X, A)
- cas facile 1 seul plateau
82- Programme tours_hanoi
- les tiges sont numérotées 0, 1 et 2
- Procédure porte (p, dep, arr)déplace le plateau
p de la tige dep à la tige arr il y a un seul
mouvement - Procédure han(p, dep, arr) cette procédure
déplace p plateaux de la tige dep à la tige arr
SI p 1 ALORS porte (1, dep, arr) SINON han
(p - 1, dep, 3 - arr - dep) porte (p,
dep, arr) han (p - 1, 3 - arr - dep,
arr) - Par exemple, ce programme appliqué sur 15
plateaux de la tige 0 (départ) à la tige 1
(arrivée) serait appelé par han(15, 0, 1)
83Complexité de la procédure de Hanoï
- La procédure récursive nous dit combien de
déplacements seront nécessaires pour un jeu de p
plateaux, soit fp ce nombre - si p 1 alors fp 1
- sinon il faut fp-1 déplacements pour chaque
procédure han 1 déplacement
.... ... ... porte - donc fp 2 fp-1 1 avec f1 1
- fp 1 ?
84Complexité Hanoï suite...
- Pour déplacer p plateaux il faut donc ?
mouvements - Temps de calcul double quand on ajoute une pièce
- Inutile dessayer han(50,0,1), il faudrait 1015
coups. - à raison d1 coup/seconde, il faudrait 317 000
siècles - à raison de 1 coup/ms il faudrait 317 siècles
- Exemple de récursivité non terminale (2 appels
récursifs différents)
85- Calculer le polynôme P(x) an an-1 x
an-2 x2 .. a0 xn - données
- degré du polynôme
- valeur du réel x
- ensemble de coefficients réels ai
- signature R ? R n1 ? R (x, (a0 , a1 , ...
an )) ? P(x) - algorithme calcul de xi que lon multiplie par
ai
86Algorithme de Horner
P(x) an an-1 x an-2 x2 an-3 x3 . a0
xn an x (an-1 an-2 x an-3 x2 . a0
xn-1) an x (an-1 x (an-2 an-3 x .
a0 xn-2)) ... an x (an-1
x (an-2 x (an-3 . x (a1 a0
x))) Algorithme calculs successifs de
polynômes du premier degré q0 a0 q1 q0 x
a1 q2 q1 x a2 qn P(x) .
n?1
87Version itérative
Fonction horner_it(n, x, a) a est un
tableau de réels de longueur n (entier), x est un
réel, le résultat est réel p ? a0 POUR i
allant de 1 à n FAIRE p ? p ? x ai
FINFAIRE horner_it ? p
88Version récursive
Fonction horner_rec(n,x, a) a est un tableau
de réels de longueur n (entier), x est un réel,
le résultat est réel SI n 0 ALORS horner_rec
? an SINON horner_rec ? ?
89Jeu du baguenaudier
- Une plaque contient N cases numérotées de 1 à N
- Chaque case contient initialement un pion
- On veut enlever les pions en respectant les
règles - il y a au plus un pion par case
- sur la case 1 on peut à tout moment
- poser un pion (sil ny en a pas)
- enlever un pion (sil y en a)
- sur la case j, 1 lt j ? N on peut
- poser ou enlever un pion sil y a un pion sur la
case j?1 et aucun sur les cases précédentes
90Jeu du baguenaudier suite ...
- Écrire 2 procédures récursives
- VIDER (n) qui vide les n premières cases
lorsquelles sont pleines - REMPLIR (n) qui remplit les n premières cases
lorsquelles sont vides
91TYPES ABSTRAITS
92Types abstraits
- Pour définir un algorithme compliqué, la
conception se fait par raffinements successifs - La 1ère version est souvent indépendante du
langage donc indépendante d'une implantation
particulière En particulier, la représentation
des données n'est pas fixée (on ne sait pas s'il
faut représenter les données par un tableau, un
fichier, un pointeur...) - Les données sont considérées de manière
abstraite, on raisonne sur des propriétés
formalisées, c'est ce que l'on appelle les types
abstraits de données
93Notations
- Comment décrire les données, les opérations que
l'on peut leur appliquer ainsi que leurs
propriétés ? - Pour définir un type abstrait il faut donner
- la signature du type
- nom du domaine
- autres types abstraits nécessaires
- définition de certaines opérations
- les propriétés du type qui s'expriment au moyen
de fonctions de base - Nous cherchons alors les structures de données
les mieux adaptées. Elles dépendent du langage
94Un exemple simple les booléens
- nom du domaine B
- valeurs du domaine vrai, faux
- le type est fini
- fonctions de base (ici, opérateurs logique)
- non B ? B
- et B ? B ? B
- ou B ? B ? B les propriétés de ces
fonctions de base sont données par les tables de
vérité
95Un autre exemple les entiers naturels
- nom du domaine N
- valeurs du domaine en quantité infiniment
dénombrable (il existe un processus
dénumération) - fonctions de base
- la (fonction) constante zéro (ou 0)
- suc N ? N suc(suc(suc(zéro))) ?
- autres fonctions de base
- préd N - zéro ? N
- égal_zéro N ? B
- add N ? N ? N
96Propriétés données par récurrence
- ?x? N, ? y? N
- pred(suc(x)) ?
- egal_zero(0) ?
- egal_zero(suc(x)) ?
- add(x, 0) ?
- add(x, suc(y)) succ(add(x, y))
- add(x, y) ? SI egal_zero(y) ALORS x SINON
suc(add(x, pred(y)))
97Structures séquentielles
- Correspondent à des types qui existent dans
presque tous les langages de programmation - les listes linéaires sont la forme la plus
commune dorganisation des données (traitement
séquentiel) - la liste est généralement dynamique on peut
ajouter ou supprimer des éléments - piles et files
- listes
98Piles et Files
Domaine F FIFO (first in first out)
Domaine P LIFO (last in first out)
constante pilevide ? P empiler E ? P ?
P dépiler P pilevide ? P sommet P
pilevide ? est_vide P ? vrai, faux
constante filevide ? F enfiler E ? F ?
F défiler F filevide ? F premier F
filevide ? E est_vide F ? vrai, faux
99Propriétés caractéristiques des piles
- ? e?E, ? p? P
- dépiler (empiler (e, p)) ?
- sommet (empiler (e, p)) ?
- est_vide (pilevide) ?
- est_vide (empiler (e, p)) ?(ces propriétés
sont nécessaires et suffisantes)
100Propriétés caractéristiques des files
- ?e?E, ? f? F
- est_vide (f) gt premier (enfiler (e, f)) ?
- est_vide (f) gt défiler (enfiler (e, f)) ?
- non est_vide (f) gt premier (enfiler (e, f)) ?
- non est_vide (f) gt défiler(enfiler (e, f)) ?
- est_vide (filevide) ?est_vide (enfiler (e,
f)) ?(ces propriétés sont nécessaires et
suffisantes)
101Les listes ou les suites
- Il sagit cette fois dune suite déléments
(éventuellement vide) où les éléments sont
repérés par leur rang - Lordre dans la liste est fondamental (ce nest
pas un ordre sur les éléments eux-mêmes) - Exemples HORTENSIA est une suite de caractères,
elle doit être distinguée de HATERIONS qui est
une suite contenant les mêmes caractères dans un
autre ordre, de même que THONAIRES, ANTIHEROS,
AEHINORST...
102Suites
- E nom du domaine du type des éléments
considérés - Lensemble des suites finies est notée E
- Il est muni
- dune opération interne associative et non
commutative la concaténation qui permet de
construire de nouvelles suites finies par
juxtaposition(concaténation à droite,
concaténation à gauche) - dun élément neutre à droite et à gauche pour
cette opération qui est la suite vide - Selon les types abstraits que lon veut définir
on utilise différents jeux de fonctions de base - Les autres types utilisés sont celui des éléments
de E ainsi que le type booléen
103Quelques fonctions de base sur les suites
premier saufpremier
saufdernier dernier
saufpremierdernier
début médian fin
104Fonctions de base communes
premier saufpremier
vide ? E ? vrai, faux
105Premier jeu de fonctions
- premier E - e ? E
- saufpremier E- e ? E
- concg E E ? E
- Propriétés ?x? E, ?l? E
- vide ?
- vide ?(e)
- vide ?(concg(x, l))
- premier(concg(x, l))
- saufpremier(concg(x, l))
106Deuxième jeu de fonctions
- dernier E - e ? E
- saufdernier E- e ? E
- concd E E ? E
- Propriétés ?x? E, ?l? E
- vide ?(e)
- vide ?(concd(l, x))
- dernier(concg(l, x))
- saufdernier(concg(l, x))
107Troisième jeu de fonctions
- premier, saufprem et concd
- Propriétés ?x? E, ?l? E
- vide ?(l) ? premier(concd(l, x))
- non vide ?(l) ? premier(concd(l, x))
- vide ?(l) ? saufprem(concg(l, x))
- non vide ?(l) ? saufprem(concg(l, x))
108Quatrième jeu de fonctions
- Dernier, saufdern, concg
- Propriétés ?x? E, ?l? E
- vide ?(l) ? dernier(concd(x, l))
- non vide ?(l) ? dernier(concd(x, l))
- vide ?(l) ? saufdern(concg(x, l))
- non vide ?(l) ? saufdern(concg(x, l))
109Quelques analogies
- Analogie entre les fonctions et propriétés
- du type PILE et celles des jeux 1 et 2
- du type FILE et celles des jeux 3 et 4
- Exemple de mise en correspondance
P E
pilevide ? P e ? E
empiler E?P ? P cong E ?E ? E
dépiler P pvide ? P saufprem E e
? E
sommet P pvide ? E premier E e ? E
110Exercice
- Trouver le plus long facteur gauche commun à deux
suites peut être définbi par la fonction
plfg E?E ? E - Donnons une définition algorithmique par
récurrence
111Solution algorithmique récursive
- plfg(s1, s2) ? SI vide?(s1) ou vide?(s2) ALORS
e - SINON SI premier(s1) premier(s2) ALORS
cong(premier(s1), plfg(sfprem(s1),
sfprem(s2))) SINON e
112Quelques définitions liées à une relation dordre
113- Nous avons déjà défini les relations dordre
strict, large, partiel et total - Soit E une partie dun ensemble ordonné (E, ?)
- x ? E est un majorant de E si ?y ? E, y ? x
- Un élément y ? E qui na aucun majorant est dit
élément maximal - Maj(E) est lensemble des majorants de E
- On déduit que Maj(E) ? E a au plus un élément
- Si Maj(E) ? E nest pas vide, son unique
élément est appelé maximum - On définit de manière similaire un minorant, un
élément minimal, le minimum et Min(E)
114Quelque définitions
- On appelle borne supérieure x dune partie E le
plus petit des majorants (?y ? E, y ?
x) et (?z ? E, ((?y ? E, y ? z) ? x ? z
)) - On appelle borne inférieure x dune partie E le
plus grand des minorants
115Exemples
- N a un élément minimum mais na pas de maximum
- Soit N ordonné par la relation de divisibilité.
Pour deux entiers quelconques, - la borne inférieure existe toujours, cest le
PGCD - La borne supérieure existe toujours, cest le
PPCM - Les bornes sup et inf nexistent pas toujours
- c d a, b na ni borne inf
ni borne sup a b
116Diagramme de Hasse
- Soit une relation R , on construit son diagramme
de Hasse en reliant par une flèche les éléments a
et b si aR b et sil nexiste pas c tel que aR c
et cR b - Dans un ensemble ordonné, un élément x minore un
élément y si lon peut passer de x à y en suivant
les flèches du diagramme de Hasse - Un élément x dun ensemble ordonné est maximal
sil na pas de majorant autre que lui même
117Exemples de diagrammes de Hasse
- 1 2 3 4 5 6Le diagramme de Hasse dun ensemble
totalement ordonné est une chaîne - 4 5 On lit 1 lt 2, 1 lt 5, 1 lt 4, 6 lt 3 2
6 lt 2, 3 lt 5 etc. 1 3 Mais 1 et 3 ne sont
pas 6 comparables, 6 et 1 non
plus. Ces six éléments nont pas de maximum
mais 4 et 5 sont des éléments maximaux
118Ensembles bien fondés
- Constituent le cadre dans lequel on peut
appliquer un raisonnement par récurrence - Définitions
- une relation dordre sur un ensemble E est bien
fondée sil ny a pas de suite infinie
strictement décroissante déléments de E - un bon ordre est un ordre total bien fondé
- Lordre naturel est un bon ordre sur N, pas sur Z
- Proposition Un ensemble ordonné (E,?) est bien
fondé si et seulement si toute partie non vide de
E admet au moins un élément minimal
119Principe dinduction sur les ordres bien fondés
- Théorème Soit ? un ordre bien fondé sur E et P
une proposition dépendant dun élément x ? E. Si
la propriété suivante (I) est vérifiée (I) ?
x ? E, ((? y ? x, P(y)) ? P(x))Alors ? x ? E,
P(x) - Démonstration Soit X x ? E/ P(x) fausse.
Si X nest pas vide, il admet un élément minimal
a (ordre bien fondé). Donc ? y lt a, y ? X donc
P(y) est vraie. En utilisant (I) on en déduit que
P(a) est vraie contradiction avec a ? X. Donc
X est vide càd que ? x ? E, P(x) est vraie
120Récursion et induction
- Les définitions inductives et celles par
récurrence consistent à construire des objets
finis à partir dautres selon des règles - Les définitions récursives interviennent en
informatique dans les structures de données, dans
les programmes récursifs, les langages
fonctionnels, les preuves de programmes - Les démonstrations par récurrence permettent de
raisonner sur les objets construits de cette façon
121Premier principe dinduction sur N
- Théorème Soit P(n) un prédicat dépendant de
lentier n. Si les deux conditions suivantes
sont satisfaites (B) P(0) est vrai (I) ?n?
N, P(n) ? P(n1)Alors ? n? N, P(n) est vrai - (B) sappelle la base de la récurrence
- (I) sappelle lhypothèse dinduction
122Démonstration
- Soit X k ? N / P(k) est faux Si X non vide,
il admet un plus petit élément n - Daprès (B), la base, n ? 0. Donc n-1 est un
entier et P(n-1) est vrai. - Par (I), hypothèse dinduction, on obtient que
que P(n) est vrai ce qui est contradictoire. Donc
X est vide.
123Une autre forme de ce premier principe
- Soit n0 un entier positif ou nul, Si (Bn0)
P(n0) est vrai et (In0) ?n? n0, ( P(n) ?
P(n1)Alors ?n? n0, P(n) est vrai - Exemple calcul de la somme des n premiers
entiers
124Deuxième principe dinduction
- Théorème Soit P(n) un prédicat dépendant de
lentier n. Si la propriété suivante est
satisfaite (I) ?n? N, ((?k lt n, P(k)) ?
P(n)Alors ? n? N, P(n) est vrai - Démonstration déjà vue pour le principe
dinduction sur les ordres bien fondés - Létape de base est cachée dans (I)
- Sur N? les deux principes sont équivalents
125Un exemple de raisonnement par induction
- Tout entier n ? 2 est décomposable en un produit
de nombres premiers - Soit P(n) la propriété n est décomposable en un
produit de facteurs premiers - On vérifie (I) à partir de n ? 2. Supposons que
? k? 2, , n-1, P(k) est vrai. Deux cas sont
possibles - n est premier, donc P(n)
- n nest pas premier. On écrit n ab où a et b
sont deux entiers compris entre 2 et n-1. P(a) et
P(b) sont vraies par hypothèse dinduction donc
n est décomposable en P(a)P(b)
126Définitions inductives
- Très fréquentes en informatique pour définir les
structures de données - La définition dun ensemble X peut être de la
forme - (B) certains éléments de X sont donnés
explicitement - (I) les autres éléments sont définis à partir
déléments appartenant déjà à lensemble X - Exemple la partie X de N définie par
- (B) lélément ?0 X
- (I) n ? X ? n1 ? X nest autre que N tout
entier
127Autres exemples de définition inductive
- Monoïde libre A, engendré par un alphabet fini A
(voir TD) - Soit A ( , ). Lensemble D? A des mots bien
parenthèsés défini par(B) ? ? D(I) si x et y
sont dans D alors (x) et xy sont aussi
dans D est appelé langage de Dyck - voir comment se construit ce langage
128Exemple important les arbres
- Lensemble AB des arbres binaires étiquetés sur
lalphabet S est la partie de (S ? ?, (, ), ,
) définie inductivement par (B) ? ? AB
(cest larbre vide)(I) G,D ? AB ?? r ? S , lt
r, G, Dgt ? AB(cest larbre de racine r, de
fils gauche G et de fils droit D)
129Représentation graphique darbres binaires
- lta,?,?gt a
- lta,ltb,?,?gt,ltc,?,?gtgt
a b cPour simplifier, on peut aussi
convenir de représenter larbre lta,?,?gt par a.
Larbre précédent sécrit alors lta,b,cgt - lta, ?,ltb, c, ?gtgt
- lta, lta, b, cgt,d gt
130Ne pas confondre le sommet et son étiquette
- Il se peut quun arbre ne soit pas étiqueté
- On peut le représenter linéairement en écrivant
r pour la racine - Ainsi, larbre étiqueté du dernier exemple lta,
lta, b, cgt,d gt a pour structure ltr, ltr, r,
rgt,r gt ou encoreltr,ltr,ltr,?,?gt,ltr,?,?gtgt,ltr,?,? gtgt
131Arbres
- Un arbre est un ensemble de nuds organisé de
façon hiérarchique à partir dun nud distingué
la racine - Cest une structure fondamentale en informatique
répertoires des fichiers, compilation,
expressions arithmétiques et logiques - Une propriété intrinsèque est la récursivité dans
les définitions, la structure et les algorithmes
qui traitent les arbres
132Arbres binaires
- Une racine
- Chaque nud peut avoir 0, 1 ou 2 branchesarbre
de racine A
133Arbres binaires (exemples)
- arbre généalogique ascendant
- tournoiLuc Marc Paul Jules Simon Louis
Arthur Jean Luc Jules
Louis Arthur Luc
Arthur
Luc
134Les arbres généraux
- Une racine
- De chaque nud part un nombre quelconque de
branches - exemple arbre généalogique descendant
A
H
B
C
L
I
D
G
J
K
F
M
N
O
P
E
135Vocabulaire
- on utilise père fils frère A est
le père de BC est le frère de BG est le fils de
C - Remarque dans un arbre, un nud na quun seul
père - Un nud sans fils est une feuille ou un
sommet pendant - Une branche est le chemin qui joint un nud à la
racineex la branche ACG
136- Un arbre binaire est soit vide ?, soit défini par
sa racine r, son sous-arbre gauche G et son
sous-arbre droit D, (G et D sont eux-mêmes des
arbres binaires disjoints) - notation A lt r, G , D gt
- Le type arbre binaire est noté AB
- On peut écrire cette définition récursive sous la
forme AB ? lt r, AB, AB gtun arbre binaire
est soit vide, soit composé dune racine et de
deux sous-arbres binaires
137Quelques fonctions définies sur les arbres
binaires
- le type abstrait arbre binaire est défini
avec AB lensemble des arbres binaires et S
lensemble des nuds auxquels on peut associer
des éléments E (arbre étiqueté) - arbrevide (constante) ? AB
- racine AB - arbrevide ?? S
- G, D AB - arbrevide ?? AB
- contenu S ?? E
- (létiquette est ici le contenu du sommet)
- ltr, ltr, ?, ?gt, ? gt diffère de ltr, ?, ltr, ?, ? gtgt
138Définitions
- Arbre filiformeformé de nuds qui n'ont qu'un
seul fils, soit droit, soit gauche - Arbre completchaque niveau est complètement
rempli, le nombre de nuds est donc - Arbre parfaitarbre binaire dont tous les niveaux
sont complètement remplis sauf peut-être le
dernier mais alors, les feuilles du dernier
niveau sont regroupées à gauche - Arbre localement completArbre binaire non vide
tel que tous les nuds qui ne sont pas des
feuilles ont 2 fils - Peigne gauchearbre binaire localement complet
tel que tout fils droit est une feuille
139Mesures sur les arbres
- Ces mesures sont utiles pour évaluer la
complexité des algorithmes sur les arbres - taille AB ? N est le nombre de
sommets taille(Ø) 0 taille(lto, G, Dgt)
1taille(G)taille(D) - hauteur S ? N est le nom