Transcript ppt

Tecnologia de la Programació
TEMA I: Anàlisi
del cost
computacional
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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.
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació

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:
• Instrucció 2:
• Instrucció 3: (un i)
• Instrucció 4: (un i)
• Instrucció 5:
–
ta + (n - 1) ti + n tc
(n - 1) ta
ta + (n - i) ti + (n – i + 1) tc
Millor: (n - i) (2tv + tc) ;
(n - 1) (2tv + 3ta)
Pitjor: (n - i) (2tv + tc) + (n – i) ta
Total cas desfavorable:
n 1
 t
i 1
a
 tc  n  i ti  2tv  ta  2tc 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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:
Tmin  An 2  Bn  C
Tmax  An 2  Bn  C 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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)
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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, n log n 
– Advertència: Sempre hi sol haver una lluita entre
l’optimització de temps i l’optimització d’espai.
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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 f :     0. El conjunt de les funcions de
l’ordre de f n , denotat com  f n  , es defineix
com:
 f n   g :     0| c   , n0  .
n  n0  g n   cf n 
• Així mateix direm que una funció g és de l’ordre de f n 
quan g   f n 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Mides Asimptòtiques
– La definició anterior garanteix que una funció pertany al
conjunt  f n  quan està fitada superiorment per f n  per
valors de n suficientment grossos
– Direm que el conjunt  f n  defineix un ordre de
complexitat
– Escollirem com a representant de l’ordre  f n  a la funció
f n  més senzilla possible dins del mateix.
• Ordre de complexitat lineal: n 
• Ordre de complexitat quadràtica:  n 2
• Constant: 1
• etc.
 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Mides Asimptòtiques. Relacions:
– Relacions d’ordres de complexitat:
• Si f n   g n  y g n   hn , llavors f n   hn 
•  f n   g n  sii f n   g n  y g n    f n 
•  f n   g n  sii f n   g n  y g n    f n 
– Teorema del límit:
• lim
n 
f n 
 0   f n   g n 
g n 
– Jerarquia d’ordres de complexitat:
1  log n   n   n2     na     2n   n!
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Mides Asimptòtiques. Ordres de complexitat
– La notació  f n  ens dóna una fita superior al temps
d’execució T n  d’un algoritme.
 
– Sovint estarem interessats en la menor funció f n tal que
T n    f n  . Per això trobarem la funció g n  que
sigui la menor fita superior, l’ínfim, de T n :

• Sigui f :     0 . El conjunt  f n  es defineix
com:
 f n   g :     0| c   , n0  .
n  n0  g n   cf n 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Mides Asimptòtiques. Ordres de complexitat
– El conjunt  f n  llegit com ordre exacte de f n  , es
defineix com:
 f n    f n    f n 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Mides Asimptòtiques. Operacions entre
ordres de complexitat (també per  i  )
– Suma:
 f n   g n   h :     0| f    f n ,
g   g n , n0  .n  n0 .
h n   f n   g n 
– Producte:
 f n   g n   h :     0| f    f n ,
g   g n , n0  .n  n0 .
h n   f n   g n 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Mides Asimptòtiques. Operacions entre
ordres de complexitat (també per  i  )
– Regla de la suma:
 f n   g n    f n   g n   max  f n , g n 
– Regla del producte:
 f n   g n    f n   g n 
– Ambdues regles es poden generalitzar per un nombre k
qualsevol d’ordres de complexitat, sempre que k no
depengui de n.
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Mides Asimptòtiques
– Representació gràfica de les taxes de creixement més
freqüents:
Temps
2n
1010
n3
108
106
n2
104
n log n
n
102
log n
n
20
40
60
80
100
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Mides Asimptòtiques
– Relació pràctica de les taxes de creixement més freqüents
(un exemple pràctic):
T(n)
n = 100
n = 200
t=1h
t=2h
k1 log n
1h
1,15 h
n = 100
n = 10000
k2 n
1h
2h
n = 100
n = 200
k3 n log n
1h
2,30 h
n = 100
n = 178
k4 n2
1h
4h
n = 100
n = 141
k5 n3
1h
8h
n = 100
n = 126
k6 2n
1h
1,27 x1030 h
n = 100
n = 101
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació

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:
1. Instruccions d’assignació, e/s i aritmètiques que no
involucren variables estructurades ni que depenguin de
n:
cost  1
2. Composició seqüencial d’instruccions. S’aplica la regla
de la suma:
seq.1 : S1 , cost   f n  

seq.2 : S2 , cost  g n 
 cost S1; S2  max  f n , g n 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació

Anàlisi del cost computacional
Mides Asimptòtiques. Regles pràctiques:
– Continuació:
3. Instruccions condicionals: “ Si B llavors S1 sino S2 fsi
”. El que farem serà tractar les cotes superiors i inferiors
per separat:
Siguin:
 B, cost   f B n 

 S1 , cost   f1 n 
 S , cost   f n 
2
 2
•
Pitjor cas:
•
Cas mitjà:
cost  max  f B n , f1 n , f 2 n 
f n   promig  f1 n , f 2 n  
distribució
 cost  max  f B n , f n 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació

Anàlisi del cost computacional
Mides Asimptòtiques. Regles pràctiques:
– Continuació:
4. Instruccions Iteratives: “ mentre B fer S fmentre ”.
Aplicarem la regla del producte:
  
Sigui  f B,S n el cost d'avaluar B més el d’executar S.
Sigui el cost de fer n iteracions una funció de n,  f
.
iter n
Aleshores el cost total del bucle serà de:

 
 f B ,S n   f iter n 
•
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  f
n dels cost individuals.

iter
 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació

Anàlisi del cost computacional
Mides Asimptòtiques. Regles pràctiques:
– Exemple, ordenació per selecció:
(1)
(2)
(3)
(4)
(5)
per i des de 1 fins n fer
// pmin serà la posició del mínim de a[1..n]
pmin = i;
per j des de i+1 fins n fer
si a[j] < a[pmin] llavors pmin = j fsi;
fper;
intercanviar(a[i],a[pmin]);
fper;
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació

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:  1 .
• L’avaluació del per més intern  j  i  1es també de  1 .
La funció que descriu el nombre d’iteracions és n  i  .
En conseqüència el bucle intern presenta un ordre de
complexitat de n  i .
• Les instruccions (2) i (5) juntament amb la condició de
control externa presenten un cost de  1 .
• Per tan el cost total d’una iteració del bucle extern és de
n  i .



Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Anàlisi del cost computacional
Tecnologia de la Programació

Mides Asimptòtiques. Regles pràctiques:
– Exemple, ordenació per selecció:
• Així el cost total d’efectuar totes les iteracions del bucle
extern seria de:
nn  1
(n  i )  n   i  n  1n 

2
i 1
i 1
i 1
n 1
n 1
n 1

 
 
n
2
obvi :  n ; instrucció crítica
2
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Consideracions generals. 1:
– El criteri asimptòtic és una eina molt útil per fer primeres
aproximacions.
– Cas concret:

2
3
és
obvi
que

n


n
2
T2  600n 
T1  3n 3
 
 
– A la pràctica l’algorisme 1 és millor que el 2 per valors
n  200
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Resolució de recurrències:
– Algorismes recursius sovint impliquen funcions de cost
recursives
T n  En
– Es tractarà de trobar una expressió no recursiva per
expressar T n  . Ignorar constants multiplicatives.
– Exemple, factorial:
, si n  0
k1
T n   
T n  1  k2 , si n  0
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Resolució de recurrències:
– L’expressió del factorial es pot desdoblar donant lloc a:
T n  T n 1  k2  T n  2  2k2    n  k2  k1  n
– En general els algoritmes recursius que decreixen a
velocitat constant tenen per solució de la recurrència:
 
 
 
 n k

T n    n k 1
 a n div b

, si a  1
, si a  1
, si a  1
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Resolució de recurrències. Reducció per
divisió:
– L’expressió del factorial es pot desdoblar donant lloc a:
cn k
, si 1  n  b
T n   
aT n / b   cn k , si n  b
– En general els algoritmes recursius que decreixen a
velocitat exponencial tenen per solució de la recurrència:
 


 
 n k

T n    n k log n

logb a

n

, si a  b k
, si a  b k
, si a  b k
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
EXERCICIS
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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:
3
•On
(sol: 2.7 segons aprox.)
• O 2n
(sol: 29.127 hores aprox.)
• On! (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)
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
Anàlisi del cost computacional
 Exercicis d’ordre de complexitat:
 
– És possible que un algorisme d’ordre O n 2 s’executi més
ràpid que un d’ordre On  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)
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee
Tecnologia de la Programació
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 O n 3 i un d’ordre O n 2
• És possible obtenir-ne un d’ordre inferior als
anteriors?
 
 
Miquel Mascaró Portells
Pere A. Palmer Rodríguez
Antoni Jaume Capó
Cristina S. Manresa Yee