IN101 - cours 04 - 8 octobre 2010
8 pages
Français

IN101 - cours 04 - 8 octobre 2010

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
8 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Un probl`eme concretLaquelle de ces deux fonctions est la meilleure?IN 101 - Cours 041 int factoriel(int n) {2 int i, res;3 res = 1;30 septembre 20114 for (i=2; i 0, ∃n ∈N , ∀n ≥ n , 0 ≤ f(n) ≤ c ×g(n).0 04 for (i=1; i 0, ∃n ∈N, ∀n ≥ n , c ×g(n) ≤ f(n) ≤ c ×g(n).6 } 0 07 return sum;8 }Exemples : 2 2 2n +n+1=Θ n =Θ 2000n +1000000Pour une simple boucle for la complexit´e est facile `acalculer:log(n)=O(n)la taille ...

Informations

Publié par
Nombre de lectures 18
Langue Français

Extrait

IN 101 - Cours 04 30 septembre 2011
pre´sente´par Matthieu Finiasz
La notion de complexite´
Unprobl`emeconcret
Laquelle de ces deux fonctions est lameilleure?
1intfactoriel(intn) { 2inti, res; 3res = 1; for (i=2; i<n+1; i++) { 4 5res *= i; 6} 7return res; 8} 9intbinom1(intn,intp) { 10return factoriel(n)/factoriel(p)/factoriel(n-p); } 11
1intbinom2(intn,intp) { 2if ((p==0) || (n==p)) { 3return 1; 4} else { 5return binom2(n-1,p-1) + binom2(n-1,p); } 6 7}
Quest-cequelacomplexite´? La notion centrale en algorithmique
Lacomplexite´dunalgorithmemesuresonequeins`nirttie´ccae: enfonctiondelatailledesdonne´esa`traiter, asymptotiquement, dans le pire cas, ou en moyenne.
Enpratique,pouruneentr´eedetaillen: on compte le nombre d’dsbeitnoe´arpoaseres,ssai´ecen onregardecommentcenombre´evolueasymptotiquement.
Ilsagiteng´en´eraldexelpe´timoclempteelor onsinte´ressesouventaussia`laixelpmocpatit´esale.
Un premier exemple simple
1unsigned intsum_of_squares(unsigned intn) { 2unsigned intsum = 0; inti; 3 4for (i=1; i<n+1; i++) { sum += i*i; 5 6} return sum; 7 } 8
Pour une simple boucleforre:lcul`acacilestfaee´tixelpmocal latailledelentr´eeestn la fonction faitnmultiplications etnadditions molpxetilcatsee´nileriae´leiltalatrenldee´.ene Unpeudere´exionpermetdecalculercelaentempsconstant: n(n+1)(2n+1) sum of squares(n) = 6 2 additions, 3 multiplications, une division.
Notationsdecomplexite´ Comparaison asymptotique
De´nitions: Complexit´epolynomialesilaelbaosrte´vune k k>0,f(n) =O(n). Complexit´eexponentielleelbasilaeeralirr´eng´en´ n b>1,b=O(f(n)).
Complexite´doublement exponentielle n 2 par exemple :f(n.) = 2 Complexite´sous-exponentielle n par exemple :f(n) = 2 .
2 log(n)nnnlog(n)nn 3n n2 n2exp(n)n!n2
Notationsdecomplexite´ Comparaison asymptotique
D´enitions: f(n) =O(g(n))si c>0,n0N,nn0,0f(n)c×g(n). f(n) =Θ(g(n))si c,c>0,n0N,nn0,c×g(n)f(n)c×g(n).
Exemples :     2 2 2 n+n+ 1 =Θn=Θ2000n+ 1000000 log(n) =O(n) n =O(n) log(n)
2 log(n)nnnlog(n)nn 3n n2 n2exp(n)n!n2
Quelques ordres de grandeur
30 Un PC standard fait de l’ordre de2deonecrspaesirnaibsnoitare´po 40 2op´erationssimplesealisablr´omel.ednrapetuot
60 Lesrecordsactuelssontunpeuau-dela`de2nairnsbiesooitare´p re´alisablepardesgensmotive´sNSA, Folding@home...  
80 Encryptographieonconside`reque2erianibsnoitare´tonspso irr´ealisables(aujourdhui) Clefs de 128 bitsse.seuqreuqleruˆuopsasd´ennizsdneai
Premiers exemples :
Unprobl`eme-quatre algorithmes
Fibonacci – Algorithme 1 Versionre´cursivebeˆte
1unsigned intfibo1(unsigned intn) { if (n < 2) { 2 3return n; 4} 5return fibo1(n-1) + fibo1(n-2); } 6
Ici,lacomplexit´eestlenombredappels`afibo1 lere´sultatsede´composeenunesommedeF1etF0: F4=F3+F2 = (F2+F1) + (F1+F0) = (F1+F0) +F1+F1+F0
F1= 1 etF0= 0 donc il y a au moinsFnapplerse´ucsrsif n colatseet´xilempΘ(Fn) =Θ(ϕ).
Leprobl`eme La suite de Fibonacci
Oncherche`acalculerFn, lenobiFedetiusaledebromenemi`-i:nacc F0= 0 etF1= 1 Fn=Fn1+Fn2pourn>1 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,...
On sait faire le calcul direct : suiter´ecurrentedouble`acoecientsconstants 2 onr´esoutx=x+ 1 √ √ 1 1 r1=ϕ+ 5) et= (1 r2= 1ϕ= (15) 2 2 1n n Fn= (ϕ(1ϕ) ). 5
n ϕ r2 −0.62 donc pourn>1,Fnest l’entier le plus proche de . 5
Fibonacci – Algorithme 2 Versionavecm´emoire
OnneveutpasrecalculerplusieursfoislameˆmevaleurFi on utilise un tableau pour stocker tous lesFi.
1unsigned intfibo2(unsigned intn) { 2unsigned int*fib =(int*) malloc((n+1) * sizeof(int)); 3inti; 4fib[0] = 0; fib[1] = 1; 5 for (i=2; i<n+1; i++) { 6 fib[i] = fib[i-1] + fib[i-2]; 7 8} 9intres = fib[n]; 10free(fib); 11return res; 12}
Complexite´deΘ(n) maismplecolaite´tixapsedeΘ(n) aussi.
Fibonacci – Algorithme 3 Versionsansm´emoire
Onconstatequechaquee´l´ementdutableaunestluque2fois: aux´etapesiet+ 1 ide la boucle.+ 2
1unsigned intfibo3(unsigned intn) { 2unsigned intfib0 = 0; 3unsigned intfib1 = 1; 4inti; 5for (i=2; i<n+1; i++) { 6fib1 = fib0 + fib1; 7fib0 = fib1 - fib0; 8} 9return fib1; } 10
Complexit´edeΘ(n) toujours maiscomplexite´spatialedeΘ(1) maintenant.
Comparaison des quatre algorithmes The´orieetpratiquesontdaccord
Temps de calcul pour les quatre algorithmes :
fibo1 fibo2 fibo3 fibo4
n n Θ(ϕ) Θ(n) Θ(n) Θ(log(n))
40 31s 0s 0s 0s
25 2
18s 4s 0s
28 31 2 2 calculirre´alisable Segmentation fault 25s 195s 0s 0s
Fibonacci – Algorithme 4 Version optimale
Onutiliselecalculdirect,maisone´vitelesnombresottants. On a : Fn= 1×Fn1+ 1×Fn2 Fn1= 1×Fn1+ 0×Fn2 Donc :       Fn1 1Fn1 =× Fn11 0Fn2  n1  1 1F1 =× 1 0F0
Simpleprobl`emedexponentiation matricielleDT40)(r´esoluen complexite´Θ(log(n)) complexite´spatialeΘ(1).
Note : les valeurs propres de la matrice sontϕet 1ϕ.
M´ethodesde programmation
Algorithme glouton
Unalgorithmegloutonestunalgorithmeite´ratifqui`achaque´etape essaye des’approcher au maximumde la solution.
Par exemple : lerendudemonnaie:quellesommedebillets/pie`cespermet datteindreunevaleurdonn´ee? Pour rendre 37 euros, on calcule 37 = 20 + 10 + 5 + 2. ets/billcesfpi`eseavldsseelrutesaleuqtnonoitulosoptimale. leproble`meduvoyageurdecommerce:quelestlepluscourt chemin passant parneenv´s?leilonsd Onvatoujoursa`lavillelaplusprochenonencorevisit´ee. donne une bonne solution, mais rarement optimale.
Quelquesautresme´thodes
Forcebrute:nomdonne´a`unalgorithmequitrouvelasolutionen essayant toutes les solutions possibles. recherche de clef en cryptographie.
Diviserpourre´gner:m´ethoder´ecursivequiconsiste`adiviser unproble`meensous-probl`emes,´ruoseerdroblus-pset`emelosse recombiner.tstaul´rselse algorithmes de tri (voir cours 05).
Algorithmesg´en´etiques:algorithmepourtrouverunesolution (quasi-)optimaledunprobl`emedoptimisationenpartantdeso-lutionsapproch´ees,enlesfaisante´volueretenless´electionnant. un des projets d’IN104.
Programmation dynamique
Laprogrammationdynamiqueconsiste`asotkcreelrs´esultatsdes instancesdunprobl`emequelonre´soutpournejamaisavoira` re´soudredeuxfoisunemˆemeinstance. permetparfoisderendreecaceunalgorithmere´cursifsimple.
Par exemple : suitedoublementr´ecursive:enstockantlesvaleursinterm´ediaires defibo1on obtientfibo2. n passe deΘ()`2aΘ(nome´.erinu)elitintsapeunemud coefficients binomiaux avec le triangle de Pascal voir TD 04.
The´oriedelacomplexite´
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents