1 / 32

TEMA I: Anàlisi del cost computacional

TEMA I: Anàlisi del cost computacional. Anàlisi del cost computacional. Tema 1: Anàlisi de cost computacional L’eficiència dels algoritmes Mides asimptòtiques i ordres de complexitat Calcular l'eficiència d’un algoritme Anàlisi de recurrències Problemes per a resoldre.

libba
Télécharger la présentation

TEMA I: Anàlisi del cost computacional

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TEMA I: Anàlisi del cost computacional

  2. Anàlisi del cost computacional • Tema 1: Anàlisi de cost computacional • L’eficiència dels algoritmes • Mides asimptòtiques i ordres de complexitat • Calcular l'eficiència d’un algoritme • Anàlisi de recurrències • Problemes per a resoldre

  3. Anàlisi del cost computacional • L’eficiència dels algoritmes • Un bon algorisme no ha de dependre del sistema • Vector de 1000000 elements. PC 8 segons amb quicksort. • Vector de 1000000 elements. IBM Star 6 minuts amb bombolla. • Relació de velocitat: IMB Star / PC 3 GHz  160 • El programador es responsable de l’optimització independent de plataforma.

  4. Anàlisi del cost computacional • L’eficiència dels algoritmes • Exemple: 1:per i des_de 1 fins_a n fer 2: pmin := i; 3:per j des_de i+1 fins_a n fer 4: si a[j] < a[pmin] llavors pmin := j fsi fper 5:intercanviar(a[i],a[pmin]); fper • Una manera de mesurar l’eficiència • ta: temps d’una assignació de sencers • tc: temps d’una comparació de sencers • ti: temps d’incrementar un sencer • tv: temps d’accés a un element d’un vector • Cost: • Instrucció 1: ta + (n - 1) ti + n tc • Instrucció 2: (n - 1) ta • Instrucció 3: (un i) ta + (n - i) ti + (n – i + 1) tc • Instrucció 4: (un i) Millor: (n - i) (2tv +tc) ; Pitjor: (n - i) (2tv + tc) + (n – i) ta • Instrucció 5: (n - 1) (2tv +3ta) • Total cas desfavorable:

  5. Anàlisi del cost computacional • L’eficiència dels algoritmes. A l’exemple anterior: • El temps d’execució de l’algorisme depèn de 3 factors • La grandària del conjunt de dades d’entrada (n) • El contingut de les dades d’entrada: Oscil·la entre Tmin i Tmax • El codi generat per un compilador i un computador en concret • De forma simplificada: la fórmula de l’anàlisi total dona lloc a dos polinomis de la forma:

  6. Anàlisi del cost computacional • L’eficiència dels algoritmes. En general: • Adoptarem el criteri d’estimar el cost computacional en el pitjor dels casos • En el cas mitjà de vegades es fa difícil conèixer la distribució que segueixen les dades d’entrada • Fent referència al tercer factor que influeix en el cost computacional, adoptarem el criteri d’ignorar-lo. Criteri Asimptòtic (constant multiplicativa) • En resum, l’important a considerar serà la dependència del segon factor. La grandària del conjunt de dades d’entrada (n)

  7. Anàlisi del cost computacional • L’eficiència dels algoritmes. En general: • De vegades no es possible trobar un únic paràmetre per definir la grandària de les dades d’entrada: • Exemple: Cas d’una matriu quadrada amb les dues dimensions no relacionades • Dependències particulars: • Lineal: n • Quadràtica: n2 • D’altres: per exemple, • Advertència: Sempre hi sol haver una lluita entre l’optimització de temps i l’optimització d’espai.

  8. Anàlisi del cost computacional • Mides Asimptòtiques • Denotarem per el conjunt dels nombres naturals i per el dels reals estrictament positius • Definició 1.1: • Sigui . El conjunt de les funcions de l’ordre de , denotat com , es defineix com: • Així mateix direm que una funció és de l’ordre de quan

  9. Anàlisi del cost computacional • Mides Asimptòtiques • La definició anterior garanteix que una funció pertany al conjunt quan està fitada superiorment per per valors de n suficientment grossos • Direm que el conjunt defineix un ordre de complexitat • Escollirem com a representant de l’ordre a la funció més senzilla possible dins del mateix. • Ordre de complexitat lineal: • Ordre de complexitat quadràtica: • Constant: • etc.

  10. Anàlisi del cost computacional • Mides Asimptòtiques. Relacions: • Relacions d’ordres de complexitat: • Si , llavors • sii • sii • Teorema del límit: • Jerarquia d’ordres de complexitat:

  11. Anàlisi del cost computacional • Mides Asimptòtiques. Ordres de complexitat • La notació ens dóna una fita superior al temps d’execució d’un algoritme. • Sovint estarem interessats en la menor funció tal que . Per això trobarem la funció que sigui la menor fita superior, l’ínfim, de : • Sigui . El conjunt es defineix com:

  12. Anàlisi del cost computacional • Mides Asimptòtiques. Ordres de complexitat • El conjunt llegit com ordre exacte de , es defineix com:

  13. Anàlisi del cost computacional • Mides Asimptòtiques. Operacions entre ordres de complexitat (també per ) • Suma: • Producte:

  14. Anàlisi del cost computacional • Mides Asimptòtiques. Operacions entre ordres de complexitat (també per ) • Regla de la suma: • Regla del producte: • Ambdues regles es poden generalitzar per un nombre k qualsevol d’ordres de complexitat, sempre que k no depengui de n.

  15. Anàlisi del cost computacional Temps 2n 1010 n3 108 106 n2 104 n log n n 102 log n n 20 40 60 80 100 • Mides Asimptòtiques • Representació gràfica de les taxes de creixement més freqüents:

  16. Anàlisi del cost computacional T(n) n = 100 n = 200 t = 1 h t = 2 h k3 n log n k6 2n k5 n3 k1 log n k2 n k4 n2 1 h 1 h 1 h 1 h 1 h 1 h 1,15 h 4 h 2,30 h 2 h 8 h 1,27 x1030 h n = 100 n = 100 n = 100 n = 100 n = 100 n = 100 n = 141 n = 126 n = 101 n = 178 n = 200 n = 10000 • Mides Asimptòtiques • Relació pràctica de les taxes de creixement més freqüents (un exemple pràctic):

  17. Anàlisi del cost computacional • Mides Asimptòtiques. Regles pràctiques: • De la teoria exposada se poden extreure una sèrie de regles pràctiques que sovint són les que s’empren a la realitat, ja que els càlculs no es solen fer d’una forma tan detallada com la del exemple anterior: • Instruccions d’assignació, e/s i aritmètiques que no involucren variables estructurades ni que depenguin de n: • Composició seqüencial d’instruccions. S’aplica la regla de la suma:

  18. Anàlisi del cost computacional • Mides Asimptòtiques. Regles pràctiques: • Continuació: • Instruccions condicionals: “ Si B llavors S1 sino S2fsi ”. El que farem serà tractar les cotes superiors i inferiors per separat: Siguin: • Pitjor cas: • Cas mitjà:

  19. Anàlisi del cost computacional • Mides Asimptòtiques. Regles pràctiques: • Continuació: • Instruccions Iteratives: “ mentre B fer S fmentre ”. Aplicarem la regla del producte: Sigui el cost d'avaluar B més el d’executar S. Sigui el cost de fer n iteracions una funció de n, . Aleshores el cost total del bucle serà de: • Si el cost d’una iteració varia molt d’una iteració a una altra caldrà filar més prim. Aleshores haurem de realitzar una suma des de 1 a dels cost individuals.

  20. Anàlisi del cost computacional • Mides Asimptòtiques. Regles pràctiques: • Exemple, ordenació per selecció: (1) per i des de 1 fins n fer // pmin serà la posició del mínim de a[1..n] (2) pmin = i; (3) per j des de i+1 fins n fer (4) si a[j] < a[pmin] llavors pmin = j fsi; fper; (5) intercanviar(a[i],a[pmin]); fper;

  21. Anàlisi del cost computacional • Mides Asimptòtiques. Regles pràctiques: • Exemple, ordenació per selecció: • La instrucció més interna és una condicional simple amb una assignació, en conseqüència el cost és: . • L’avaluació del per més intern es també de . La funció que descriu el nombre d’iteracions és . En conseqüència el bucle intern presenta un ordre de complexitat de . • Les instruccions (2) i (5) juntament amb la condició de control externa presenten un cost de . • Per tan el cost total d’una iteració del bucle extern és de .

  22. Anàlisi del cost computacional • Mides Asimptòtiques. Regles pràctiques: • Exemple, ordenació per selecció: • Així el cost total d’efectuar totes les iteracions del bucle extern seria de:

  23. Anàlisi del cost computacional • Consideracions generals. 1: • El criteri asimptòtic és una eina molt útil per fer primeres aproximacions. • Cas concret: • A la pràctica l’algorisme 1 és millor que el 2 per valors

  24. Anàlisi del cost computacional • Consideracions generals. 2: • La bondat teòrica d’alguns algoritmes amaga constants multiplicatives molt grans. Multiplicació de matrius. • Cal tenir en compte la balança entre l’eficiència i el cost de producció. • Cal tenir en compte la balança entre la memòria i el temps d’execució. EXPERIÈNCIA I LÒGICA

  25. Anàlisi del cost computacional • Resolució de recurrències: • Algorismes recursius sovint impliquen funcions de cost recursives • Es tractarà de trobar una expressió no recursiva per expressar . Ignorar constants multiplicatives. • Exemple, factorial:

  26. Anàlisi del cost computacional • Resolució de recurrències: • L’expressió del factorial es pot desdoblar donant lloc a: • En general els algoritmes recursius que decreixen a velocitat constant tenen per solució de la recurrència:

  27. Anàlisi del cost computacional • Resolució de recurrències. Reducció per divisió: • L’expressió del factorial es pot desdoblar donant lloc a: • En general els algoritmes recursius que decreixen a velocitat exponencial tenen per solució de la recurrència:

  28. Anàlisi del cost computacional Temari de l’assignatura • Bibliografia • Diseño de programas, formalismo y abstracción. Ricardo Peña. Ed: Prentice Hall. ISBN: 84-8322-003-2. • Diseño y verificación de algoritmos. F. Perales. Ed: UIB. ISBN: 84-7632-382-4. • Técnicas de diseño de algoritmos. Miquel Mascaró Portells. Ed: UIB. ISBN: 84-7632-383-2. • A Primer on Program Construction (Vol III). Albert Llamosí. Apunts interns UIB. • http://java.sun.com

  29. Anàlisi del cost computacional EXERCICIS

  30. Anàlisi del cost computacional • Exercicis d’ordre de complexitat: • Un algorisme tarda 100 ms en solucionar un problema de mida n=10 a un ordinador de 300 Mhz. Que tardarà per n=30 si el seu ordre de complexitat és: • (sol: 2.7 segons aprox.) • (sol: 29.127 hores aprox.) • (sol: 8.2 x 1017 mil·lenis aprox.) • Quant més ràpid ha de ser un ordinador per amb n=30 tardar el mateix que l’anterior per n=10. Mirar-ho en els tres casos. (Sol: Dividir temps nou per temps antic)

  31. Anàlisi del cost computacional • Exercicis d’ordre de complexitat: • És possible que un algorisme d’ordre s’executi més ràpid que un d’ordre si: • n = 100 • S’executen a diferents màquines i podem triar a quina s’executa el primer • Es tracta del millor cas del primer algoritme • Variem el contingut de les dades d’entrada (Sol: raonar la resposta)

  32. Anàlisi del cost computacional • Exercicis d’ordre de complexitat: • Desenvolupar un algorisme per que donada una seqüència n de números trobi la sub-seqüència {ni , ... , nj} que presenti una suma dels seus valors que sigui màxima. Per exemple de {-2, 10, 5, -3, 4, -6, -2, 7} la de màxima suma és {10, 5, -3, 4}. • Trobar-ne un d’ordre i un d’ordre • És possible obtenir-ne un d’ordre inferior als anteriors?

More Related