cours-complexite2
14 pages
Français

cours-complexite2

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

Description

Cours : complexiteChristophe RitzenthalerNovember 12, 20081 Quelques notions generales1.1 PrincipesLe temps d’execution d’un programme depend de plusieurs donnees :1. du type d’ordinateur utilise;2. du langage utilise (representation des donnees);3. de la complexite abstraite de l’algorithme sous-jacent.Pour le mesurer en MAPLE, on peut utiliser les commandes suivantes (ici pour unprogramme g) :iS := [seq([i;time(g(10 ))];i = 1::: 10)]:En general, on veut s’abstraire des deux premieres donnees. Pour se faire, il faut ^etreen mesure de donner un cadre theorique a l’algorithmique. Pour le premier point cecise fait par la de nition d’un ordinateur ‘universel’ (une machine de Turing) qui bienqu’extr^emement simple peut reproduire le comportement de n’importe quel ordinateurexistant. Pour s’abstraire du second point, on regardera des classes d’equivalence decomplexite (voir plus bas) plut^ ot que la complexite elle-m^eme, ce qui permettra de ne passe preoccuper des constantes qui interviennent dans les changements de representations‘naturelles’ et dans la de nition des operations elementaires.La mesure de la complexite d’un algorithme c’est :1. evaluer les ressources (memoire et CPU) utiles;2. Comparer deux algorithmes pour le m^eme probleme;3. donner une borne sur ce qui est e ectivement possible de resoudre. On considere60aujourd’hui qu’on peut realiser en temps raisonnable 2 operations. Quant a la10memoire elle ...

Informations

Publié par
Nombre de lectures 34
Langue Français

Extrait

Cours:complexite´ Christophe Ritzenthaler November 12, 2008
1Quelquesnotionsg´ene´rales 1.1 Principes Letempsdexe´cutiondunprogrammede´penddeplusieursdonn´ees: 1.dutypedordinateurutilis´e; 2.dulangageutilise´(repre´sentationdesdonne´es); 3.delacomplexite´abstraitedelalgorithmesous-jacent. Pour le mesurer en MAPLE, on peut utiliser les commandes suivantes (ici pour un programme g ) : S := [ seq ([ i, time ( g (10 i ))] , i = 1 . . . 10)] . Enge´n´eral,onveutsabstrairedesdeuxpremi`eresdonn´ees.Poursefaire,ilfauteˆtre enmesurededonneruncadrethe´oriquea`lalgorithmique.Pourlepremierpointceci sefaitparlad´enitiondunordinateuruniversel(une machine de Turing ) qui bien quextrˆemementsimplepeutreproduirelecomportementdenimportequelordinateur existant.Poursabstrairedusecondpoint,onregarderadesclassesd´equivalencede complexit´e(voirplusbas)plutoˆtquelacomplexit´eelleˆme,cequipermettradenepas -me sepre´occuperdesconstantesquiinterviennentdansleschangementsderepr´esentations naturellesetdanslade´nitiondesope´rationse´le´mentaires. Lamesuredelacomplexite´dunalgorithmecest: 1.´evaluerlesressources(m´emoireetCPU)utiles; 2.Comparerdeuxalgorithmespourlemˆemeproble`me; 3.donnerunebornesurcequiesteectivementpossibleder´esoudre.Onconside`re aujourdhuiquonpeutr´ealiserentempsraisonnable2 60 op´erations.Quanta`la memoire elle est de l’ordre de 10 10 octets. ´ Onpeutdoncsint´eresser`adeuxtypesdecomplexite´:entempsetenm´emoire.Nous id´ereronsquelapmi` ne cons re ere. Lacomplexite´abstraitesemesureenfonctiondelatailledesentr´ees.
1
Example 1. Pourunentier,ilsagitdunombresdechiresn´ecessaires`ason´ecriture. Onpeutbiensˆurimaginerdescirconstanceso`udautresfacteursseraientplusimpor-tants.Parexemplesiunalgorithmefactoriseunnombreal´eatoiredeplusenplusgrand a ` chaque fois qu’il rencontre un 9 dansle´crituredunombre.Onnotera | a | b la taille de a en base b .Onabiensˆur | a | b = b log b a c + 1 . Remarquons qu’un changement de base multiplie la taille par une constante. Pouruneliste,leparame`treestlecardinaldelaliste.Onpeutnoterquececiestcohe´rent aveclacomplexite´pourlesentiers,carletableaupourraitcontenirleschiresdunom-bre. Dans l’algorithme de la division euclidienne, on a deux entiers a, b enentr´ee.Onmesur-eralacomplexit´eenfonctiondu sup( | a | , | b | ) . Pourunematricecarr´eedetaille n c’est n leparam`etre.Danslecasdope´rationssur lesmatrices,lacomplexite´seraalorsexprime´ecommeunefonctionde n desope´rations concernantlescoecients(quinaurontpaslemeˆmecoˆut´el´ementaireselonlanature descoecients-lacomplexit´eenfonctiondesop´erations´ele´mentairespouvantˆetrealors calcule´edansundeuxie`metemps). Lorsquonmanipuledesre´els,lasituationest´egalementcomplique´e:ilfaudrade´nir unee´crituretronque´epourpouvoirr´ealiserlescalculs.Maisattentionalorsauxerreurs d’arrondis ! Pourunpolynˆome,cestsondegre´. Enndanscertainscas,ilnestpaspossibledenefaireintervenirquunedonn´ee.Par exemplepourungraphe,lenombredesommetsetdareˆtespeuventˆetretouslesdeux desfacteursimportantsetpourtantcompl`etementinde´pendants. Commeannoncer,andesimplierl´etude,onregardeuniquementdescomplexit´es asymptotiques(cest-a`-direquandlatailledelentr´eetendverslinni)quined´ependent quedeladerni`erecondition.Cettecomplexite´existesousplusieursformes:dansle meilleur des cas, dans le pire ou en moyenne. Ici encore, on regardera surtout la com-plexite´danslepiredescaspuisquecestellequinousassurequelalgorithmeseterminera toujoursavecletempsauplusannonc´e.Remarquonstoutdemeˆmequelesautrescom-plexite´speuventaussiˆetreutiles:parexemple,encryptographie,cestletempsminimal danslemeilleurdescasquipermetded´ecidersiaucunalgorithmenepourracasserle protocole en un temps raisonnable.
Lestableauxci-dessousdonnentlinuencedelacomplexite´quand n devient 2 n .
1 log 2 ( n ) n n log 2 ( n ) n 2 n 3 2 n t t + 1 2 t 2 t + 4 t 8 t t 2
1 log 2 ( n ) n n log 2 ( n ) n ) n 3 2 n n = 10 2 1 µs 6 µs . 1 ms . 6 ms 10 ms 1 s 4 × 10 6 a n = 10 3 1 µs 10 µs 1 ms 10 ms 1 s 16 . 6 mn n = 10 6 1 µs 20 µs 1 s 20 s 11 j 10 3 a
2
Ilestparfoistr`esdiciled´evaluerlesconstantesenjeux.Cestpourquoiondis-tingueraplutˆotdesclassesdecomplexit´e:si n estlatailledelentre´e,ondiraque lalgorithmeestpolynomial(resp.exponentiel)sisontempsdex´ecutionestdelordre de Θ( n b )o`u b 1 (resp. Θ(exp( an )) avec a > 0). Rappelons que deux fonctions f ` , g a valeurspositivessontdumˆemeordre( f = Θ( g )) si pour x assez grand, il existe deux constantes a, b telles que af ( x ) g ( x ) bf ( x ).Enpratique,onutiliseraplutˆotla comparaison f = O ( g ) pour simplement donner une majoration. Attentiontoutefoisauxlimitesdunre´sultatasymptotique:pouruneplagede donne´esx´ees(etnies)ilsepeutquunalgorithmeen O ( Cn 2 ) soit plus rapide qu’un algorithme en O ( C 0 n ) si la constante C est beaucoup plus petite que la constante C 0 . C’est par exemple le cas de la multiplication par l’algorithme FFT. Cesdeuxclassesse´parentlesalgorithmesditsecaces(=polynomial)desautres (=exponentiel). En effet supposons que pour un nombre entier de taille n le programme A soitdecomplexite´ n 3 et le programme B decomplexit´e2 n . Alors si la puissance de calculestmultiplie´epar1000, A pourratraiterdesdonne´es n 0 = 10 n fois plus grande alors que le programme B seulement n 0 n + 10. Enfonconsleclouetre´pe´tonsencoreunefoislecaracte`reinvariantdecesnotions: ¸ par exemple par un changement de base, un entier de taille n devient de taille αn avec α uneconstante.Cecinechangedoncpaslesclassesdecomplexite´etmˆemelordredans le cas polynomial. 1.2Mesuredelacomplexit´edunalgorithme R`eglesge´ne´rales: 1.Letempsde´xe´cutionduneaectationouduntestestconside´r´ecommeconstant; 2.Letempsdunese´quencedinstructionestlasommedestempsdesinstructions qui la composent; 3.letempsdunbranchementconditioneleste´galautempsdesmaximumdesalter-natives 4.Letempsduneboucleeste´galauproduitdutempsdesinstructionscontenues dans la boucle par le nombre de passages dans celle-ci. Donnonsquelquescomplexit´esclassiques: Comparaison de deux entiers de taille n : O ( n ). addition de deux entiers de taille n : O ( n ). multiplication de deux entiers de taille n : O ( n 2 ). division euclidienne de deux entiers de taille n : O ( n ). 3
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents