Algorithmique IN102-01
Michel Mauny
ENSTA
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 1 / 1
1 Pr´eliminaires Organisation
´Evaluation, supports de cours Objectifs
2 Cours 1 – Notions de complexit´e Algorithmes et mesures de complexit´e Suite de Fibonacci
Algorithmes de tri Efficacit´e
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 2 / 1
Groupes
Deux types de groupes : Groupes«A»et«B»
Mˆemes exigences, mˆeme ´evaluation Seuls les TD/PC diff`erent
Les groupes B1,2(resp. B3,4) dans des salles attenantes
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 3 / 1
Programme
02/12 Complexit´e [PC]
09/12 Structures de donn´ees simples 16/12 Recherche en table [PC]
— —
— — 06/01 Arbres 13/01 Graphes
20/01 Analyse syntaxique [PC]
27/01 Contrˆole
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 4 / 1
Evaluation, supports de cours ´
Contrˆole de 3 heures le 27 janvier 2006
petits exercices (fonctions de 10 lignes — voir `a la fin du poly) documents de cours autoris´es
Supports de cours
Poly de Guillaume Poupard Planches
Sujets de PC/TP
Page web `ahttp://www.mauny.net/cours/ensta/algo/
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 5 / 1
Objectifs
Motivation : prendre du recul par rapport `a la programmation identification du probl`eme
recherche d’un algorithme analyse de complexit´e mise en œuvre
D´efinition du terme«algorithme»
Suite d’op´erations ´el´ementaires constituant un sch´ema de calcul ou de r´esolution d’un probl`eme
(Petit Larousse)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 6 / 1
Complexit´ e d’algorithmes
But : mesurer l’efficacit´eintrins`equed’un algorithme en fonction de la taille des donn´ees `a traiter
par d´enombrement d’op´erations ´el´ementaires repr´esentatives mesure asymptotique
complexit´e dans le cas le pire ou en moyenne complexit´e temporelle ou spatiale
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 7 / 1
Exemple classique : le tri
But : trier un tableau denentiers d´enombrement des comparaisons
performance des algorithmes ´el´ementaires :«de l’ordre de»n2 comparaisons
algorithmes plus sophistiqu´es font passer den2`an×log(n)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 8 / 1
Notations de complexit´ e
D´efinitions :
f(n) =O(g(n))ssi0≤f(n)≤c×g(n) f(n) = Θ(g(n))ssic×g(n)≤f(n)≤c0×g(n) Exemples :
n2+ 3n+ 1 = Θ(n2) = Θ(50n2+ 12345) n/ln(n) =O(n)
50n10=O(n10,01) 2n=O(exp(n)) exp(n) =O(n!)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 9 / 1
Hi´ erarchie de fonctions
On peut ´etablir une hi´erarchie entre les fonctions usuelles : log(n)√
nnn2n32nexp(n)n!
log(n) 3,3 6,6 10
p(n) 3,1 10 32
n 10 100 1000
n×log(n) 33 664 104
n2 100 104 106
n3 103 106 109
2n 103 1030 10300
exp(n) 2×104 1043 10434
n! 3,6×106 10158 102568
Note : nombre de particules dans l’univers≈1080.
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 10 / 1
Suite de Fibonacci, version 1
F0=F1= 1
Fn=Fn−1+Fn−2sin >1 1, 1, 2, 3, 5, 8, 13, 21, 34, . . . Code r´ecursif en C
intfibo1(intn){ if (n≤1)
return1;
else
returnfibo1(n−1)+fibo1(n−2);
}
Complexit´e :Θ(((1 +√ 5)/2)n)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 11 / 1
Suite de Fibonacci, version 1
Calcul deF5.....................
........
........
........
........
........
......
K F0
F1
F2
.....................
........
........
........
........
........
......
K
.....................
........
........
........
........
........
......
K
F0
F1
F2
F3
F1
@
@@ I
.....................
........
........
........
........
........
......
K
.....................
........
........
........
........
........
......
K *
H H H H Y F4
F1 F0
F2 F1
F5
F3
Complexit´e :Θ(((1 +√ 5)/2)n)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 12 / 1
Suite de Fibonacci, version 2
Calcul deF8F0 F1 F2 F3 F4 F5 F6 F7 F8
1 1 2 3 5 8 13 21 34
Complexit´eΘ(n) Complexit´e spatialeΘ(n)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 13 / 1
Suite de Fibonacci, version 2
Code it´eratif en C, avec tableau auxiliaire
intfibo2(intn){ int∗t;inti,intres;
t=newint[n+1];
t[0] = 1;t[1] = 1;
for(i=2;i≤n;i++) t[i] =t[i−1]+t[i−2];
res=t[n];free(t);
returnres;
}
Complexit´eΘ(n) Complexit´e spatialeΘ(n)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 14 / 1
Suite de Fibonacci, version 3
Calcul deF8 -
- -
1 1 2
F2 F3 F4
2 3 5
1 2 3 F5 F6 F7 F8
8 13 21 34
3 5
F4
Complexit´eΘ(n)
Complexit´e spatialeΘ(1)(constante)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 15 / 1
Suite de Fibonacci, version 3
Code it´eratif en C, espace constant
intfibo3(intn){ intf1,f2,t,i;
f1=1;f2=1;
for(i=2;i≤n;i++){ t=f2;f2=f1+f2;f1=t;
} returnf2; }
Complexit´eΘ(n)
Complexit´e spatialeΘ(1)(constante)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 16 / 1
Suite de Fibonnacci, version 4
Fn+1 = 1×Fn+ 1×Fn−1 Fn = 1×Fn+ 0×Fn−1
Fn
Fn−1
= 1 1
1 0
× Fn−1
Fn−2
= 1 1
1 0 n−1
× F1
F0
On se ram`ene `a un probl`eme«d’exponentiation matricielle»(voir PC)
Complexit´e :Θ(log(n))
Complexit´e spatiale :Θ(1)(constante)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 17 / 1
Pratique et th´ eorie sont d’accord
Temps de calcul
n 40 5.107 2.108 2.109 fibo1(n) 31 s calcul irr´ealisable fibo2(n) 0 s 18 s erreur d’ex´ecution fibo3(n) 0 s 4 s 19 s 3 min 15 s fibo4(n) 0 s 0 s 0 s 0 s
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 18 / 1
Le tri
But : trier un tableau den´el´ements (entiers, par exemple) D´enombrement de comparaisons
Algorithmes ´el´ementaires enO(n2)
Algorithmes plus sophistiqu´es font passer deO(n2)`aO(n×log(n))
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 19 / 1
Tri par insertion
Tri du tableautabdenentiers
voidtriInsertion(int∗tab,intn){ inti,j,clef;
for(i=1;i<n;i++){ clef=tab[i];j=i−1;
while( (j≥0) && (tab[j]>clef) ){ tab[j+1] =tab[j];j=j−1;} tab[j+1]=clef;}
}
L’´el´ement au rangkest rang´e parmi sesk−1pr´ed´ecesseurs.
Complexit´eΘ(n2)dans le cas le pire : tableau inversement tri´e Complexit´eΘ(n2)en moyenne.
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 20 / 1
Le tri par fusion
Diviser,(diviser, (...), et fusionner), et fusionner
......
R
.. . .. .. . .. . .. . .. .. . .. .
.. . .. .. . .. . .. . .. .. . .. .......
R
@
@@R
.. .. . .. . .. .. . .. . .. .. .
.. .. . .. . .. .. . .. . .. .. ...... .
R
......
R
@
@ R
Tri r´ecursif ... ...
...
...
Fusion r (p+r)/2 p
p r
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 21 / 1
Tri par fusion
Tri du tableautabentre les indicespetr
voidtriFusion(int∗tab,intp,r){ if (p<r){
intq= (p+r)/2;
triFusion(tab,p,q);
triFusion(tab,q+1,r);
fusion(tab,p,q,r);
}
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 22 / 1
Tri rapide (quicksort)
Quicksort : tri r´ecursif bas´e sur un partitionnement.
Tri du tableautabentre les indicespetr
voidtriRapide(int∗tab,intp,r){ if (p<r){
intq=partitionner(tab,p,r);
triRapide(tab,p,q−1);
triRapide(tab,q+1,r);
}
Complexit´e dans le cas le pire :Θ(n2) Complexit´e en moyenne :Θ(n×log(n))
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 23 / 1
Complexit´ e compar´ ee
Algorithme Cas le pire En moyenne Tri par insertion
Tri `a bulle Θ(n2) Θ(n2)
Tri rapide Θ(n2) Θ(n×log(n)) Tri par fusion Θ(n×log(n)) Θ(n×log(n))
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 24 / 1
Th´ eorie et pratique sont d’accord
Temps de calcul :
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 25 / 1
Th´ eorie et pratique sont d’accord
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 26 / 1
Th´ eorie et pratique. . .
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 27 / 1
Th´ eorie et pratique. . .
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 28 / 1
Exemple : produit matriciel
But : multiplier 2 matricesn×n
D´enombrement des additions et multiplications entre ´el´ements de base Algorithmes ´el´ementaires enO(n3)
Algorithmes tr`es sophistiqu´es enO(n2,376)
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 29 / 1
Qu’est-ce qu’un algorithme efficace ?
Complexit´e en moyenne Complexit´e dans le pire des cas Facilit´e de mise en œuvre Efficacit´e en pratique Algorithmes hybrides
Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 30 / 1