introduction à l'algorithmique, structures de contrôle et de données
TRANSCRIPT
![Page 1: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/1.jpg)
Introduction a l’algorithmique,
structures de controle et de donnees
Stage IREM – Nov./Dec. 2010
![Page 2: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/2.jpg)
Plan
1 Introduction
2 Structures de controle et de donnees
![Page 3: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/3.jpg)
Plan
1 Introduction
2 Structures de controle et de donnees
![Page 4: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/4.jpg)
Vocabulaire
• un ordinateur = un objet, des ressources materielles (lehardware).
• un algorithme = une recette, une methode pour obtenirun resultat.
• un programme = un algorithme ecrit dans un langage deprogrammation.
• un probleme algorithmique = un probleme a resoudre.
Des exemples !
![Page 5: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/5.jpg)
Vocabulaire
• un ordinateur = un objet, des ressources materielles (lehardware).
• un algorithme = une recette, une methode pour obtenirun resultat.
• un programme = un algorithme ecrit dans un langage deprogrammation.
• un probleme algorithmique = un probleme a resoudre.
Des exemples !
![Page 6: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/6.jpg)
![Page 7: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/7.jpg)
![Page 8: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/8.jpg)
Algorithme
Un algorithme est la description univoque d’une methodeeffective pour resoudre un probleme, exprimee a l’aide d’unesuite d’instructions elementaires.
![Page 9: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/9.jpg)
Problemes algorithmiques
• Donnees : un entier aResultat : la somme 1 + 2 + 3 + . . . + a
• Donnees : une liste de motsResultat : la liste triee dans l’ordre alphabetique
• Donnees : une liste de motsResultat : une liste de pages Web contenant ces mots
• Donnees : une carte, deux villes A et BResultat : un plus court chemin entre A et B
• Donnees : un programme P , une donnee aResultat : reponse a ”est-il vrai que le resultat de Papplique a a vaut 8a+5” ?
• ...
Un algorithme doit resoudre toutes les instances d’unprobleme.
![Page 10: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/10.jpg)
Exemple
La recherche du minimum dans une liste (non vide)d’entiers. . .
![Page 11: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/11.jpg)
Exemple
La recherche du minimum dans une liste (non vide)d’entiers. . .
1 Noter le premier entier de la liste
2 Pour tous les entiers suivants, faire :Si l’entier est inferieur a celui note
Alors remplacer celui-ci par le nouvel entier
3 Renvoyer le nombre note.
![Page 12: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/12.jpg)
Exemple
La recherche du minimum dans une liste (non vide)d’entiers. . .En pseudo-code :
Recherche du minimumDonnees : liste non vide d’entiers LResultat : entier m le plus petit de L
m← L(1)pour chaque i allant de 2 a |L| faire
si L(i) < m alors m← L(i)retourner m
![Page 13: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/13.jpg)
Exemple
La recherche du minimum dans une liste (non vide)d’entiers. . .En pseudo-code :
Recherche du minimumDonnees : liste non vide d’entiers LResultat : entier m le plus petit de L
m← L(1)pour chaque i allant de 2 a |L| faire
si L(i) < m alors m← L(i)retourner m
Des instances :
• [3, 10, 5, 24, 2, 12]
• [10]
![Page 14: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/14.jpg)
Un probleme. . . des algorithmes ?
Pour un probleme donne, il peut y avoir plusieurs algorithmesdifferents. . . ou aucun !
Lorsqu’il existe plusieurs algorithmes, on peut les comparerselon plusieurs criteres :
• les idees sous-jacentes, leur structure (recursif / iteratif,glouton, prog. dynamique, diviser pour regner,. . . ),
• les structures de donnees utilisees,
• la complexite algorithmique (i.e. les ressources – temps,memoire– necessaires a son execution).
![Page 15: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/15.jpg)
Un probleme. . . des algorithmes ?
Pour un probleme donne, il peut y avoir plusieurs algorithmesdifferents. . . ou aucun !
Lorsqu’il existe plusieurs algorithmes, on peut les comparerselon plusieurs criteres :
• les idees sous-jacentes, leur structure (recursif / iteratif,glouton, prog. dynamique, diviser pour regner,. . . ),
• les structures de donnees utilisees,
• la complexite algorithmique (i.e. les ressources – temps,memoire– necessaires a son execution).
![Page 16: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/16.jpg)
Complexite d’un algorithme
Complexite en temps ou en espace memoire.
Objectif : trouver un ordre de grandeur du nombred’operations elementaires necessaires a l’execution del’algorithme.
Pas en minutes ou microsecondes !
On veut une notion robuste : independante d’un ordinateurdonne, d’un compilateur, d’un langage de programmation, etc.et exprimee en fonction de la taille de la donnee a traiter.
operation elementaire : operation qui prend un tempsconstant (ou presque).
(Recherche du minimum : n − 1 comparaisons sont faites.)
![Page 17: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/17.jpg)
Complexite d’un algorithme
Complexite en temps ou en espace memoire.
Objectif : trouver un ordre de grandeur du nombred’operations elementaires necessaires a l’execution del’algorithme.
Pas en minutes ou microsecondes !
On veut une notion robuste : independante d’un ordinateurdonne, d’un compilateur, d’un langage de programmation, etc.et exprimee en fonction de la taille de la donnee a traiter.
operation elementaire : operation qui prend un tempsconstant (ou presque).
(Recherche du minimum : n − 1 comparaisons sont faites.)
![Page 18: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/18.jpg)
Complexite d’un algorithme
Complexite en temps ou en espace memoire.
Objectif : trouver un ordre de grandeur du nombred’operations elementaires necessaires a l’execution del’algorithme.
Pas en minutes ou microsecondes !
On veut une notion robuste : independante d’un ordinateurdonne, d’un compilateur, d’un langage de programmation, etc.et exprimee en fonction de la taille de la donnee a traiter.
operation elementaire : operation qui prend un tempsconstant (ou presque).
(Recherche du minimum : n − 1 comparaisons sont faites.)
![Page 19: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/19.jpg)
Complexite d’un algorithme
Cout de A sur x : l’execution de l’algorithme A sur la donneex requiert CA(x) operations elementaires.
Complexite dans le pire cas :
CA(n)def= max
x .|x |=nCA(x)
Complexite en moyenne
CmoyA (n)
def=
∑x .|x |=n
p(x) · CA(x)
p : distribution de probabilites sur les donnees de taille n.
![Page 20: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/20.jpg)
Complexite d’un algorithme
Cout de A sur x : l’execution de l’algorithme A sur la donneex requiert CA(x) operations elementaires.
Complexite dans le pire cas :
CA(n)def= max
x .|x |=nCA(x)
Complexite en moyenne
CmoyA (n)
def=
∑x .|x |=n
p(x) · CA(x)
p : distribution de probabilites sur les donnees de taille n.
![Page 21: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/21.jpg)
Complexite d’un algorithme
Cout de A sur x : l’execution de l’algorithme A sur la donneex requiert CA(x) operations elementaires.
Complexite dans le pire cas :
CA(n)def= max
x .|x |=nCA(x)
Complexite en moyenne
CmoyA (n)
def=
∑x .|x |=n
p(x) · CA(x)
p : distribution de probabilites sur les donnees de taille n.
![Page 22: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/22.jpg)
Algorithmes efficaces. . . et au dela !
Quelques familles d’algorithmes selon leur complexite :
• les algorithmes sous-lineaires : par exemple, en O(log(n))
• les algorithmes lineaires : O(n)et quasi-linaires : O(n · log(n))
• les algorithmes polynomiaux : O(nk)
• les algorithmes exponentiels : O(2p(n))
• . . . doublement exponentiels : O(22p(n))
• . . .
NB : O(g(n)) contient l’ensemble des fonctions majorees parun c · g(n) avec c > 0 au dela d’un certain n0. . .
![Page 23: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/23.jpg)
Algorithmes efficaces. . . et au dela !
Quelques familles d’algorithmes selon leur complexite :
• les algorithmes sous-lineaires : par exemple, en O(log(n))
• les algorithmes lineaires : O(n)et quasi-linaires : O(n · log(n))
• les algorithmes polynomiaux : O(nk)
• les algorithmes exponentiels : O(2p(n))
• . . . doublement exponentiels : O(22p(n))
• . . .
NB : O(g(n)) contient l’ensemble des fonctions majorees parun c · g(n) avec c > 0 au dela d’un certain n0. . .
![Page 24: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/24.jpg)
Algorithmes efficaces. . . ou pas !
Considerons un algorithme de complexite f (n) qui permette deresoudre en une heure les instances de taille X d’un problemesur un ordinateur aujourd’hui.Alors un ordinateur 1000 fois plus rapide permettrait en uneheure de resoudre les instances de taille. . .
• 1000 · X si f (n) = n,
• 31, 6 · X si f (n) = n2,
• X + 9, 97 si f (n) = 2n.
(voir ”Algorithmics, the spirit of computing”, D. Harel)
![Page 25: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/25.jpg)
Algorithmes efficaces. . . ou pas !
Considerons un algorithme de complexite f (n) qui permette deresoudre en une heure les instances de taille X d’un problemesur un ordinateur aujourd’hui.Alors un ordinateur 1000 fois plus rapide permettrait en uneheure de resoudre les instances de taille. . .
• 1000 · X si f (n) = n,
• 31, 6 · X si f (n) = n2,
• X + 9, 97 si f (n) = 2n.
(voir ”Algorithmics, the spirit of computing”, D. Harel)
![Page 26: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/26.jpg)
Algorithmes efficaces. . . ou pas !
Considerons un algorithme de complexite f (n) qui permette deresoudre en une heure les instances de taille X d’un problemesur un ordinateur aujourd’hui.Alors un ordinateur 1000 fois plus rapide permettrait en uneheure de resoudre les instances de taille. . .
• 1000 · X si f (n) = n,
• 31, 6 · X si f (n) = n2,
• X + 9, 97 si f (n) = 2n.
(voir ”Algorithmics, the spirit of computing”, D. Harel)
![Page 27: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/27.jpg)
A la recherche du bon algorithme
Etant donne un probleme, on cherche donc des algorithmes :
• corrects : qu’ils calculent bien ce que l’on veut,
• efficaces : necessitant des ressources (temps, memoire)raisonnables.
Peu de problemes admettent des algorithmes utilisables enpratique.
Il est important de savoir concevoir, verifier et analyser desalgorithmes.
![Page 28: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/28.jpg)
A la recherche du bon algorithme
Etant donne un probleme, on cherche donc des algorithmes :
• corrects : qu’ils calculent bien ce que l’on veut,
• efficaces : necessitant des ressources (temps, memoire)raisonnables.
Peu de problemes admettent des algorithmes utilisables enpratique.
Il est important de savoir concevoir, verifier et analyser desalgorithmes.
![Page 29: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/29.jpg)
Un exemple d’algorithme tres efficace. . .
![Page 30: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/30.jpg)
Probleme :Rechercher une definition dans un dictionnaire, un numerodans un annuaire,. . .
On commence avec la zone de recherche (1→ fin), puis :
1 si la zone de recherche est vide, alors c’est fini
2 on ouvre le dictionnaire au “milieu” m de la zone derecherche (d → f ). . .
3 si le mot recherche y est, c’est fini !
4 si on recommence (1) sur la zone reduite (d → m− 1) ou(m + 1→ f ).
A chaque fois, on divise la taille de l’espace de recherche par 2 !Pour 1 millions de noms, 20 comparaisons (au max) suffisentpour resoudre le probleme. . .
![Page 31: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/31.jpg)
Probleme :Rechercher une definition dans un dictionnaire, un numerodans un annuaire,. . .
On commence avec la zone de recherche (1→ fin), puis :
1 si la zone de recherche est vide, alors c’est fini
2 on ouvre le dictionnaire au “milieu” m de la zone derecherche (d → f ). . .
3 si le mot recherche y est, c’est fini !
4 si on recommence (1) sur la zone reduite (d → m− 1) ou(m + 1→ f ).
A chaque fois, on divise la taille de l’espace de recherche par 2 !Pour 1 millions de noms, 20 comparaisons (au max) suffisentpour resoudre le probleme. . .
![Page 32: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/32.jpg)
Recherche dichotomique
Rechercher(T , x , bg , bd)
si bg > bd alors retourner nilm := (bg + bd)/2(y , v) := T [m]si x == y alors retourner vsinon
si x < y alorsretourner Rechercher(T , x , bg ,m − 1)
sinonretourner Rechercher(T , x ,m + 1, bd)
T est un tableau de paires (x , v) trie selon les x . . .
![Page 33: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/33.jpg)
Recherche dichotomique
Version iterative. . .
Rechercher(T , x)
bg := 0bd := |T | − 1tant que bg ≤ bd faire
m := (bg + bd)/2(y , v) := T [m]si x == y alors retourner vsinon
si x < y alors bd := m − 1sinon bg := m + 1
retourner nil
![Page 34: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/34.jpg)
Plan
1 Introduction
2 Structures de controle et de donnees
![Page 35: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/35.jpg)
Stocker de l’information
Le “post-it” → une variable : une zone memoire reperee parun identificateur.
instruction d’affectation
• X := exp
• X ← exp
• exp → X
• X = exp
• . . .
X peut etre remplacee par n’importe quel objet qui designeune zone memoire pouvant stocker une telle expression exp :X [4], z .m, (∗p), . . .
exp est une expression. . . construites a partir d’operateurs debase, de constantes, de variables. . .
![Page 36: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/36.jpg)
Stocker de l’information
Le “post-it” → une variable : une zone memoire reperee parun identificateur.
instruction d’affectation
• X := exp
• X ← exp
• exp → X
• X = exp
• . . .
X peut etre remplacee par n’importe quel objet qui designeune zone memoire pouvant stocker une telle expression exp :X [4], z .m, (∗p), . . .
exp est une expression. . . construites a partir d’operateurs debase, de constantes, de variables. . .
![Page 37: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/37.jpg)
Stocker de l’information
Le “post-it” → une variable : une zone memoire reperee parun identificateur.
instruction d’affectation
• X := exp
• X ← exp
• exp → X
• X = exp
• . . .
X peut etre remplacee par n’importe quel objet qui designeune zone memoire pouvant stocker une telle expression exp :X [4], z .m, (∗p), . . .
exp est une expression. . . construites a partir d’operateurs debase, de constantes, de variables. . .
![Page 38: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/38.jpg)
Instruction conditionnelle
instruction conditionnelleSi C Alors . . .
Si C Alors . . . Sinon . . .
C est une condition construite a partir de combinateursBooleens (∧, ∨, ¬) et de conditions atomiques : X == 3,T [i ] < K , mot1 < mot2, . . .
![Page 39: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/39.jpg)
Entrees/sorties
instruction d’entrees/sorties
Afficher exp
Lire(v)
NB : v est une variable designant l’endroit de la memoire oula donnee qui sera lue devra etre stockee.
![Page 40: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/40.jpg)
Boucles
boucles. . .
1 Pour chaque x dans S Faire: . . .
(Pour i = 1 a 100 Faire: . . . )
2 Tant que C Faire: . . .
3 Repeter . . . jusqu’a C
![Page 41: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/41.jpg)
Boucles
Tant que C Faire: . . . Repeter . . . jusqu’a Cboucles.pdf - Page 6
boucle-rep.pdf - Page 7
![Page 42: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/42.jpg)
Les fonctions
On peut isoler un algorithme dans une fonction :
un nom + des parametres (et leurs types) + un type deresultat
Exemple : RechercherMin(T : tableau d’entiers) :entier
![Page 43: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/43.jpg)
Structures de donnees
• Tableaux :
• T [1 . . . 100], M[1 . . . 10][1 . . . 10], . . .
• Taille fixe ou. . . modifiable (mais avec un cout).
• Acces direct au i eme element. tabliste.pdf - Page 2
![Page 44: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/44.jpg)
Structures de donnees
• Listes :
• Ajout en debut ou en fin de liste, decoupage,insertion. . . : faciles.
• L[i ] ou longueur(L) : avec un cout.tabliste.pdf - Page 2
![Page 45: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/45.jpg)
Structure de donnees
La plupart des langages de programmation offrent des types dedonnees tres riches avec de nombreuses fonctions associees.
Exemple : les listes de Python.
Cela depend des langages et attention au cout de sesoperations.
![Page 46: Introduction à l'algorithmique, structures de contrôle et de données](https://reader031.vdocuments.site/reader031/viewer/2022022416/586e33821a28abf0508ba63d/html5/thumbnails/46.jpg)
Autres. . . Les piles et les files
• Les piles : structure de stockage LIFO : “Last in, first out”
• Les files : structure de stockage FIFO : “First in, first out”dessin-stage.pdf - Page 4