Vous êtes sur la page 1sur 55

Cours

Algorithmique avance
Structures des donnes
Algorithmique
Hafidi Imad ENSAK
Problme
Conception
Analyse
INFORMATIQUE =
Analyse
Expression=Algorithme
Excution
Utilisation
2
Introduction
Quest-ce quun algorithme ?
Algorithmique
Un algorithme est une procdure de calcul bien dfinie qui
prend en entre une valeur, ou un ensemble de valeurs, et qui donne en
sortie une valeur, ou un ensemble de valeurs. Un algorithme est donc
une squence detapes de calcul qui transforment lentre en sortie.
On peut considrer un algorithme comme un outil permettant de rsoudre un
problme de calcule bien spcifi.
L nonc du problme spcifie, en termes gnraux, la relation dsire entre
lentre et la sortie.
Lalgorithme dcrit une procdure de calcul spcifique permettant dobtenir cette
relation entre/sortie.
une squence detapes de calcul qui transforment lentre en sortie.
3
Exemple dun problme frquent dans la pratique :
Trier une suite de nombre dans lordre croissant
Dfinition formelle du problme de tri :
4
Terminologie
Algorithme correct
Un algorithme est dit correct si, pour chaque instance en entre, il se
termine en produisant la bonne sortie. Un algorithme correct rsout le
problme donn.
Un algorithme incorrect risque de ne pas se terminer pour certaines
instances en entre, voire de se terminer sur une rponse autre que
celle dsire.
problme donn.
5
Terminologie
Algorithme optimal
Un algorithme est dit optimal sil est correct et sil produit la bonne sortie,
pour un problme donn, en utilisant le minimum de ressources
possibles.
Un algorithme optimal doit utiliser le minimum de mmoire machine et
fournir la bonne sortie le plus rapidement possible.
La mesure habituelle utilise pour valuer lefficacit dun algorithme est
la vitesse dexcution.
6
Double problmatique de
lalgorithmique
En algorithmique, pour rsoudre un problme donn, il faut :
Trouver une mthode de rsolution (un algorithme correct) ;
Trouver une mthode efficace (un algorithme optimal).
Savoir rsoudre un problme est une chose et le rsoudre efficacement
en est une autre !
7
Mthodologie gnrale de
programmation
8
Mthodologie gnrale de
programmation
9
Complexit et optimalit
La thorie de la complexit algorithmique sintresse lestimation de
lefficacit des algorithmes.
Elle sattache connatre la difficult dune rponse par algorithme un
problme pos de faon mathmatique.
Question de base
Entre diffrents algorithmes ralisant une mme tche, quel est
La thorie de la complexit vise savoir si la rponse un problme
peut tre donne trs efficacement, efficacement ou au contraire tre
inatteignable en pratique.
Elle se fonde sur une estimation thorique des temps de calcul et des
besoins en mmoire informatique.
Entre diffrents algorithmes ralisant une mme tche, quel est
le plus rapide et dans quelles conditions ?
10
Complexit et optimalit
Dans les annes 1960 et au dbut des annes 1970, on a commenc
dcouvrir des algorithmes fondamentaux . . .
Absence de moyens fiables pour mesurer lefficacit de ces algorithmes . . .
Par exemple, on se contentait de dire :
Cet algorithme se droule en 6 secondes avec un tableau de 50 000 entiers
choisis au hasard en entre, sur un ordinateur IBM 360/91. Le langage de
Une telle dmarche rendait difficile la comparaison des algorithmes entre
eux.
Une telle mesure est dpendante du :
processeur utilis ;
les temps daccs la mmoire vive et de masse ;
le langage de programmation ;
le compilateur utilis ;
etc.
choisis au hasard en entre, sur un ordinateur IBM 360/91. Le langage de
programmation PL/I a t utilis avec les optimisations standards.
11
Complexit dun algorithme
Dfinition
La complexit dun algorithme est la mesure du nombre
doprations fondamentales quil effectue sur un jeu de donnes. La
complexit est exprime comme une fonction de la taille du jeu de
donnes.
La complexit algorithmique est un moyen dvaluation du cot dun
algorithme.
Cette complexit mesure le nombre doprations lmentaires et le cot
mmoire.
Cela permet de connatre le type de croissance en fonction de la taille
des donnes.
12
Formalisation mathmatique
On value la complexit dun algorithme T(n) (le nombre de ces
oprations lmentaires) en fonction de la taille de la donne dentre n.
Si n est la taille de la donne dentre,
on value la complexit de lalgorithme en calculant une fonction T(n).
Notions
Dn lensemble des donnes de taille n ;
T(d) le cot de lalgorithme sur la donnes d.
13
Formalisation mathmatique
14
Formalisation mathmatique
15
Formalisation mathmatique
16
Exemple
17
Exemple
18
Exemple
19
Ordre de grandeur
20
Classes de complexit et
algorithme optimal
21
Rcursivit
22
Exemple
23
Exemple
24
Exemple introductif
25
Algorithmique
26
Modle gnral
27
Modle gnral
28
Principe et dangers de la
rcursivit
29
Problmes rcursifs
30
Transformation
31
32
33
Introduction
34
Diffrences entre pile & file
35
36
37
Manipulation des piles
38
39
40
Manipulation des files
41
42
43
Pointeur
44
Exemple introductif
45
46
47
Dfinition et terminologie
48
49
Tableau VS. Liste Avantages
50
Tableau VS. Liste Inconvnients
51
Manipulation des Listes
52
53
Structure
54
Ecriture algorithmique
55

Vous aimerez peut-être aussi