Académique Documents
Professionnel Documents
Culture Documents
C1 AlgoSdd PDF
C1 AlgoSdd PDF
Carine Fdle
Wikipedia
p
Sances 1
S 1, 2,
2 3,
3 4 introduction
i t d ti + tableaux
t bl + structures
t t de
d
donnes bases sur les tableaux (tas, matrice)
tri par insertion, par tas, comptage
multiplication de matrice
intro au type abstrait par exemple ensemble (implment par
tableaux)
Sance 5 : interrogation 1 d'1h30
S
Sances 6 : file/pile
fil / il
Sances 7 : listes
S
Sances 8 : arbres
b
Sance 9 : interrogation 2 d'1h30
interrogation 1 (40%)
interrogation
g 2 (40%)
( )
projet en TP (20%)
T. Cormen,
C C Leiserson, R. Rivest : Introduction
C. d
lalgorithmique, Dunod
D Knuth
D. K h : The
Th Art
A off Computer
C Programming
P i
R. Tarjan : Data Structures and Network Algorithms
R. Ahuja, T. Magnanti et J. Orlin : Network Flows, Prentice
Hall
C Berge : G
C. Graphes et hypergraphes, Dunod
M. Gondran et M. Minoux : Graphes et Algorithmes
Autres livres selon votre got: ne pas hsiter en consulter
plusieurs
Algorithmes
Al ith
Complexit
P
Preuve
Structures de donnes
Pseudo Langage
Tableaux
Tri par insertion
Calcul de xn
Logarithme
Recherche dichotomique
Chemin
Ch i d
dans un grapheh : votre
t GPS
GPS, votre
t tl
tlphone
h IP
IP, ttoutt ce quii estt
acheminement (la Poste)
Flots : affectations, emploi du temps, bagages (aroport), portes
d b
dembarquement
Scheduling (ordonnancement) fabrication de matriel dans les usines,
construction automobiles
Coupes : coupes dacier, poterie (assiette du Mont St Michel)
Compression/Dcompression : MP3, xvid, divx, h264 codecs audio et
vido tar
vido, tar, zip.
zip
Cryptage : RSA (achat lectronique)
Internet : Routage des informations, moteurs de recherche
Simulation : Prvision mto, Explosion nuclaire
Traitement dimages (mdecine) , effets spciaux (cinma)
Remonte
R t lAntiquit
lA ti it (Euclide
(E lid : calcul
l l du
d pgcd
d de
d ddeux
nombres, Archimde : calcul dune approximation de )
Lalgorithmique
g q reste la base dure de lInformatique.
q Elle
intervient dans
Le software (logiciel)
Le
L hardware
h d : un processeur estt un cblage
bl d l ith
dalgorithmes
frquemment utiliss (multiplication )
Un algorithme
U l ith prend d en entre
t des
d d donnes
ett ffournitit un rsultat
lt t
permettant de donner la rponse un problme
Pourquoii faire
P f i d des algorithmes
l ith efficaces
ffi ? LLes ordinateurs
di t vontt super vite
it !
Je peux faire un algorithme en n2 avec n=10000
Je voudrais faire avec n=100000. Tous les 2 ans,, la p puissance des
ordinateurs est multiplie par 2 (optimiste). Quand est-ce que je pourrais
faire avec n=100000 ?
Rponse:
p=100000 q=10000; p=10*q; donc p2 =100*q2. Donc besoin de 100 fois
plus de puissance
26 =64, 27 =128 donc obtenue dans 7*2 ans=14 ans !!!
Je trouve un algo en n log(n) pour p, je ferai 17*100000= 1 700 000
oprations donc 100/1.7
00/ fois
f moins de temps !!!
B t
But:
avoir une ide de la difficult des problmes
donner une ide du temps de calcul ou de lespace
l espace ncessaire pour
rsoudre un problme
Cela va permettre de comparer les algorithmes
E i en ffonction
Exprime i d du nombre
b d de donnes
d et de d leur
l taille.
ill
A dfaut de pouvoir faire mieux :
On considre que les oprations sont toutes quivalentes
Seul lordre de grandeur nous intresse.
On considre uniquement le pire des cas
Pour n donnes on aura : O(n) linaire, O(n2) quadratique
O(n log(n)),
OUI et NON:
Certains problmes sont rsolus
Pour dautres, on simplifie moins et donc la taille des
donnes traiter augmente ! Ralit virtuelle : de mieux en
mieux dfinie
D que llon rsout
Ds t quelque
l chose
h : on complexifie!
l ifi !
Cest ancien
Cest fondamental en informatique
q
Ca se prouve
O estime
On ti lel ttemps d
de rponse
ett la
l mmoire
i prise
i
Algorithmes
Al ith
Complexit
P
Preuve
Structures de donnes
Pseudo Langage
Tableaux
Tri par insertion
Calcul de xn
Logarithme
Recherche dichotomique
En cuisine
Les chefs font les recettes
Ils
Il ne font
f t pas lla cuisine.
i i EEventuellement
t ll tddes prototypes
t t ett ilils
surveillent. Ou font des choses trs prcises.
En
E iinformatique
f ti cest
t pareilil
Problme: il faut se comprendre!
JC Rgin - ASD - L2I - 2010
Se comprendre
1.24
En Informatique
Langages: variables,
variables boucle,
boucle incrmentation etc.
etc . .
Regroupement : structures de donnes et types abstraits
Un type de
U d donnes,
d ou simplement
l type, df
dfinit lle genre d
de
contenu d'une donne et les oprations pouvant tre effectues
sur la variable correspondante.
Par exemple:
int reprsente
p un entier,, on peut
p faire des additions,, des multiplications.
p
La division est entire et on peut faire des dcalages de bits
Date reprsente une date, laddition aura un certain sens, on pourra
crire la date sous certaines formes (jj/mm/aaaa ou 10 Septembre
2009 )
Les types
yp les plus
p communs sont :
int, float, double, char, boolean et le type pointeur
Entier, rel, chane, caractre, boolen, pointeur
Une structure de
d donnes
d est une manire particulire
de stocker et dorganiser des donnes dans un
ordinateur
di t de
d faon
f pouvoiri tre
t utilises
tili
efficacement.
Un type
U t abstrait
b t it ou une structure
t t d
de donnes
d abstraite
b t it estt une
spcification mathmatique d'un ensemble de donnes et de
l'ensemble des oprations qu'elles peuvent effectuer. On qualifie
d'abstrait
' ce type de donnes car il correspond un cahier des
charges quune structure de donnes doit ensuite implmenter.
Par exemple : le type abstrait de pile sera dfini par 2
oprations :
Push qui insre un lment dans la structure
Pop qui extrait les lments de la structure, avec la contrainte que pop
retourne llment qui a t empil le plus rcemment et qui na pas
encore t dpil
Les types abstraits sont des entits purement thoriques utiliss
principalement pour simplifier la description des algorithmes
Dans ce cours,
cours on considrera que les structures de
donnes sont indpendantes du type des donnes et
quelles
qu elles sont dfinies par lensemble
l ensemble des oprations
quelles effectuent sur ces donnes
LLes structures
t t de
d donnes
d permettent
tt t dorganiser
d i lel code
d
Une Sdd correspond une classe contenant un ensemble dobjets
2 parties:
Une visible correspondant aux oprations que la structure de donnes
peut effectue. Dans les langages objets cest la partie publique de
l classe
la l
Une cache qui contient les mthodes internes permettant de raliser
les oprations de la Sdd. Dans les langages objets cest la partie
prive
i de
d lla classe
l
Algorithmes
Al ith
Complexit
P
Preuve
Structures de donnes
Pseudo Langage
Tableaux
Tri par insertion
Calcul de xn
Logarithme
Recherche dichotomique
On a besoin
O b i dun
d langage
l formel
f l minimum
i i pour dcrire
d i un
algorithme
Structures
S de
d donnes
d simples
l ou labores
l b (tableaux,
( bl listes,
l
dictionnaires, etc.)
LLes tableaux
t bl sontt utiliss.
tili Si A estt un tableau,
t bl A[i] estt lle ime
lment du tableau
si (condition) {
instruction1;
} sinon {
i
instruction2;
i 2
}
rpter
p {{}} jusqu
j q (condition)
( )
pour i de min max { }
U fonction
Une f ti a une liste
li t dde paramtres
t typs
t ett un type
t de
d retour
t (son
( prototype)
t t )
Devant chaque paramtre, la manire dont le paramtre est pass est mentionn.
Passage de paramtre : un paramtre est soit
En Entre : la donne est fournie du code appelant au code appel, autrement dit on
passe la valeur la fonction. On prcde le paramtre par e ou i (entre ou input)
En Sortie : la donne est fournie par le code appel au code appelant, autrement dit
la fonction passe cette valeur au code appelant. On prcde le paramtre par s ou o
(sortie ou output)
En Entre/Sortie : la donne est fournie
fo rnie par le code appel la fonction (on passe la
valeur la fonction) qui ensuite fournit son tour la valeur au code appelant (la
fonction passe nouveau la valeur). On prcde le paramtre par es ou io
(entre/sortie ou input/output)
maFonction(e
F ti ( int i t i,i s int
i t j,j es int
i t k);
k)
En Entre : la fonction lit la valeur du paramtre, ici i. Les modifications
quelle fera avec i ne seront pas transmises au programme appelant
En Sortie : la fonction ne lit pas la valeur du paramtre, ici j. Elle crit
dans j et le programme appelant rcupre cette valeur, donc j peut
tre modifi ppar la fonction
En Entre/Sortie : la fonction lit la valeur du paramtre, ici k. et elle
passe au programme appelant les modifications faites pour k
C d appelant
Code l t:
i3
j5
k8
( j )
maFonction(i,j,k);
Afficher(i,j,k)
maFonction(e int i, s int j, es int k) {
ii+1
j6
kk+2
}
Rsultat de Afficher(i,j,k) : 3 6 10
JC Rgin - ASD - L2I - 2010
Pseudo-langage
Pseudo langage : les fonctions
1.45
Algorithmes
Al ith
Complexit
P
Preuve
Structures de donnes
Pseudo Langage
Tableaux
Tri par insertion
Calcul de xn
Logarithme
Recherche dichotomique
un tableau
bl (
(array en anglais)
l ) est une Sdd de
d base
b qui est un
ensemble dlments, auquel on accde travers un numro
d indice.
dindice
Le temps d'accs un lment par son indice est constant,
quel que soit l'lment
l lment dsir
Les lments d'un tableau sont contigus dans l'espace
mmoire. Avec ll'indice,
indice, on sait donc combien de cases
mmoire se trouve l'lment en partant du dbut du tableau.
On dsigne habituellement les tableaux par des lettres
majuscules. SI T est un tableau alors T[i] reprsente llment
lindice i.
JC Rgin - ASD - L2I - 2010
Tableaux
1.48
0 0 1 2 3 4 T[i][j]=L[i *5 +j]
5 6 7 8 9 T[1][3]=L[1*5+3]=L[8]
1
2 10 11 12 13 14
T[i][j]=[i * #col + j]
15 16 17 18 19
3
T[1] 0 1 2 3
T[2] 0 1 2 3 4 5
T[3] 0 1 2
Algorithmes
Al ith
Complexit
P
Preuve
Structures de donnes
Pseudo Langage
Tableaux
Tri par insertion
Calcul de xn
Logarithme
Recherche dichotomique
DFAGBHEC
On fait 2 paquets : 1 non tri - 1 tri
U paquett dun
Un d lment
l t estt tri
t i
On prend un lment non tri et on le range sa place dans
le paquet tri
On prend D : D - F A G B H E C
On prend F : D F - A G B H E C
On prend A : A D F - G B H E C
On prend G : A D F G - B H E C
On prend B : A B D F G - H E C
O pourrait dire
On d :
On fait 2 tas : un tri, puis un non tri.
Au dbut le tas tri est vide,
vide celui non tri contient tous les lments
On prend un lment non tri et on le range sa place dans le tas tri
Cet algorithme est exact,
exact mais
sa formulation est ambigu, par exemple prendre veut dire le
supprimer du tas non tri aussi.
Il nest pas assez prcis : comment range-t-on un lment, quest-ce que
sa place ?
Pour avoir la prcision et supprimer llambigut
ambigut on utilise un
pseudo langage
triInsertion(entier[] t) {
pour (i de 2 n) { // n taille de t
entier c t[i];
[ ];
entier k i-1;
// c doit tre insr dans le tableau ordonn t[1..i-1]
// on cherche
h h dde ddroite
it gauche h l la premire
i valeur
l t[k]
// plus petite que c
tant que (k1 et t[k]>c) {
t[k+1] t[k]; // on dcale
k k-1;
}
// on a trouv la bonne place
t[k+1] c;
}
} JC Rgin - ASD - L2I - 2010
Tri par insertion
58
Francis Avnaim
A a fait
f lltude
d suivante d
de la
l complexit
l
exprimentale de cet algorithme, implment en
Processing
On trie des
O d tableaux
bl de
d taille
ll croissante de
d 500
00 10000
0000
par pas de 10
Alatoires
Tris en ordre
d inverse
Dj tris
Tableaux ordonns
Conclusions de lexprimentation
Tableaux alatoires et en ordre inverse : fonction carr ?
Tableaux ordonns : fonction linaire ?
Parties bleues
P bl : 7 op. el.l n-1
1 fois
f
soit 7(n-1)
Partie jaune : 6 op
op. el
el.
Combien de fois ?
Partie mauve : 3 op. el.
Combien de fois ?
Nombre de fois ou les parties
p
mauves et jaunes sont appeles ?
Complexit mauve + jaune:
Complexit totale infrieure ?
Parties bleues
P bl : 7 op. el.l n-1
1 fois
f
soit 7(n-1)
Partie jaune : 6 op
op. el
el.
Combien de fois ? au pire i fois
(k de i-1 1), donc 6i chaque
fois
Partie mauve : 3 op. el.
C b de
Combien d fois
f ? au pire i i ffois,
i
donc 3i chaque fois
Nombre de fois ou les parties
mauves et jaunes sont appeles ?
Complexit mauve + jaune:
JC Rgin - ASD - L2I - 2010
Tri par insertion : complexit
1.65
Parties
P ti bleues
bl : 7 op. el.l n-1
1 fois
f i soitit
7(n-1)
Partie jaune : 6 op. el.
C b de
Combien d fois
f ? au pire i fois,
f donc
d
6i chaque fois
Partie mauve : 3 op. el.
Combien de fois ? au pire i fois, donc
3i chaque fois
Nombre de fois ou les p parties mauves
et jaunes sont appeles ? (n-1) fois
Complexit mauve + jaune:
9 + 9x2 ++ 9x(n-1)=9n(n-1)/2
9x(n 1) 9n(n 1)/2
Complexit totale infrieure ?
PParties
ti blbleus : 7 op. el.l n-1
1 ffois
i soitit 7(n-1)
7( 1)
Partie jaune : 6 op. el.
Combien de fois ? au pire i fois, donc 6i
chaque fois
Partie mauve : 3 op. el.
Combien de fois ? au pire i fois, donc 3i
chaque fois
Nombre de fois ou les parties mauves et
jaunes sont appeles ? (n-1) fois
Complexit mauve + jaune:
jaune
9 + 9x2 ++ 9x(n-1)=9n(n-1)/2
Complexit totale infrieure
9n(n-1)/2 + 7(n-1)
De lordre de n2
Si ttableau
bl ordonn,
d la l boucle
b l tant
t t
que (zone jaune) nest jamais
excute. La complexit est alors
exactement 10(n-1)
10(n 1)
Algorithmes
Al ith
Complexit
P
Preuve
Structures de donnes
Pseudo Langage
Tableaux
Tri par insertion
Calcul de xn
Logarithme
Recherche dichotomique
Commentt calculez-vous
C l l xn partir
ti dde x ?
Par itrations:
y 1
de 1 n : y y * x
pour i d
Complexit ?
x8 ?
Combien doprations ?
x16 ?
x12 ?
Gnralisation:
si n est pair
si n est impair
Commentt calculez-vous
C l l xn partir
ti dde x ?
Par itrations:
y 1
de 1 n : y y * x
pour i d
Complexit ? Linaire O(n)
x8 ?
Combien doprations ?
x16 ?
x12 ?
Gnralisation:
si n est pair
si n est impair
Commentt calculez-vous
C l l xn partir
ti dde x ?
Par itrations:
y 1
de 1 n : y y * x
pour i d
Complexit ? Linaire O(n)
x8 ? x4 * x4 et x4 = x2*x2 et x2=x*x
Combien doprations ? 3
x16 ? x8 * x8, donc 4 oprations
x12 ?
Gnralisation:
si n est pair
si n est impair
Commentt calculez-vous
C l l xn partir
ti dde x ?
Par itrations:
y 1
de 1 n : y y * x
pour i d
Complexit ? Linaire O(n)
x8 ? x4 * x4 et x4 = x2*x2 et x2=x*x
Combien doprations ? 3
x16 ? x8 * x8, donc 4 oprations
x12 ? x6 * x6 et x6 = x3 * x3 et x3 =x*x*x, donc 4 oprations
Gnralisation:
si n est pair xn =
si n est impair xn =
Commentt calculez-vous
C l l xn partir
ti de
d x?
Par itrations:
y 1
pour i de 1 n : y y * x
pou
Complexit ? Linaire O(n)
x8 ? x4 * x4 et x4 = x2*x2 et x2=x*x
Combien doprations ? 3
x16 ? x8 * x8, donc 4 oprations
x12 ? x6 * x6 et x6 = x3 * x3 et x3 =x*x*x
x x x, donc 4 oprations
Gnralisation:
si n est pair xn = xn/2 * xn/2
si n est impair xn = x(n/2)
/ * x(n/2)
/ * x
LLa fonction
f ti llogarithme
ith estt simplement
i l t l'i
l'inverse d
de lla ffonction
ti
exponentielle. Il y quivalence entre bx=y et x=logb(y).
Gnralisation:
si n est pair xn = xn/2 * xn/2
si n est impair xn = x(n/2) * x(n/2) * x
Algorithmes
Al ith
Complexit
P
Preuve
Structures de donnes
Pseudo Langage
Tableaux
Tri par insertion
Calcul de xn
Logarithme
Recherche dichotomique
C id
Considrons un ttableau
bl ad
de nombres
b entiers,
ti de
d taille
t ill n
O d
On dsire
i savoir
i sii un nombre
b d donn
x estt d
dans lle tableau
t bl
Pour le savoir,
savoir on parcourt le tableau en comparant les
lments de a x (recherche squentielle)
Peut-on faire
f mieux ?
Oui, si le tableau est pralablement tri. Cest la recherche
di h
dichotomique
i
Appelons
A l C(n)
C( ) le
l nombre
b ddoprations
i l
lmentaires
i excutes
pour effectuer la recherche dichotomique dans un tableau de
taille n
On a donc r log2(n)