Licence MIA 0708Madeleine Bonnet Algorithmique L2 - PowerPoint PPT Presentation

1 / 164
About This Presentation
Title:

Licence MIA 0708Madeleine Bonnet Algorithmique L2

Description:

ALORS suite d'instructions ALORS suite d'instructions. SINON suite d'instructions ... ALORS ' x n'appartient pas V ' Remarque : on omet syst matiquement ... – PowerPoint PPT presentation

Number of Views:217
Avg rating:3.0/5.0
Slides: 165
Provided by: bon777
Category:

less

Transcript and Presenter's Notes

Title: Licence MIA 0708Madeleine Bonnet Algorithmique L2


1
UE Algorithmique 3semestre 3
  • Dominante informatique UE obligatoire
  • Dominante mathématiques UE obligatoire à choix
  • Crédits et coefficients 5

2
Contrô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

3
Bibliographie 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

4
Pourquoi 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

5
Pourquoi 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

6
Dé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

7
Algorithme
  • 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

9
Notions 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

13
Recherche dun élément dans un vecteur
14
Recherches 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
15
Recherche 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
17
Recherche 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

19
Recherche 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
20
Comment évaluer la complexité ?
21
Mesure 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  

22
Complexité
  • 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

23
Dé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

24
Comparaison 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.

25
Conclusion
  • 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

26
Application
  • 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

28
Complexité 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

32
Pré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

33
Recherche 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

34
Explication 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 ?

38
Algorithmes de tri dun vecteur
39
Tri 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

41
PROCEDURE 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
42
fonction 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
43
fonction 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
44
Complexité 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
45
Tri 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
46
Tri 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é
47
PROCEDURE 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
48
PROCEDURE 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
49
Complexité 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

?
50
Complexité
  • 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

51
Tri 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

52
Exemple
53
tri_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
54
Complexité 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

55
Algorithme 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
56
PROCEDURE 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
57
PROCEDURE 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
58
Récursivité
59
Ré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  !

60
Ré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

61
Exemple 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

62
Version 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) ?

63
Factrec(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

64
Version 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

65
Solution 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)

66
nombres 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

67
Complexité 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ù

68
nombres 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

69
Exemples 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))

71
Tri 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

74
Algorithme
  • 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

75
Exemple
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

78
Evaluation 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

79
tr(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
80
Application 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)
      

83
Complexité 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 ?

84
Complexité 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

86
Algorithme 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
87
Version 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
88
Version 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 ? ?
89
Jeu 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

90
Jeu 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

91
TYPES ABSTRAITS
92
Types 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

93
Notations
  • 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

94
Un 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é

95
Un 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

96
Proprié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)))

97
Structures 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

98
Piles 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
99
Proprié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)

100
Proprié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)

101
Les 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...

102
Suites
  • 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

103
Quelques fonctions de base sur les suites
premier saufpremier
saufdernier dernier
saufpremierdernier
début médian fin
104
Fonctions de base communes
premier saufpremier
  • ? E

vide ? E ? vrai, faux
105
Premier 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))

106
Deuxiè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))

107
Troisiè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))

108
Quatriè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))

109
Quelques 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
110
Exercice
  • 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

111
Solution 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

112
Quelques 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)

114
Quelque 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

115
Exemples
  • 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

116
Diagramme 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

117
Exemples 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

118
Ensembles 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

119
Principe 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

120
Ré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

121
Premier 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

122
Dé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.

123
Une 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

124
Deuxiè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

125
Un 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)

126
Dé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

127
Autres 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

128
Exemple 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)

129
Repré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

130
Ne 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

131
Arbres
  • 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

132
Arbres binaires
  • Une racine
  • Chaque nud peut avoir 0, 1 ou 2 branchesarbre
    de racine A

133
Arbres binaires (exemples)
  • arbre généalogique ascendant
  • tournoiLuc Marc Paul Jules Simon Louis
    Arthur Jean Luc Jules
    Louis Arthur Luc
    Arthur
    Luc

134
Les 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
135
Vocabulaire
  • 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

137
Quelques 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

138
Dé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

139
Mesures 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
Write a Comment
User Comments (0)
About PowerShow.com