Complexitat temporal

De testwiki
La revisió el 10:05, 17 des 2024 per imported>EVA3.0 (bot) (Tipografia)
(dif.) ← Versió més antiga | Versió actual (dif.) | Versió més nova → (dif.)
Salta a la navegació Salta a la cerca
Gràfics de funcions que s'utilitzen habitualment en l'anàlisi d'algorismes, que mostren el nombre d'operacions N com a resultat de la mida d'entrada n per a cada funció

En informàtica, la complexitat temporal és la complexitat computacional que descriu la quantitat de temps de l'ordinador que es necessita per executar un algorisme. La complexitat del temps s'estima habitualment comptant el nombre d'operacions elementals realitzades per l'algorisme, suposant que cada operació elemental triga un temps determinat a realitzar-se. Així, la quantitat de temps que es pren i el nombre d'operacions elementals realitzades per l'algorisme es considera que estan relacionades per un factor constant.Com que el temps d'execució d'un algorisme pot variar entre diferents entrades de la mateixa mida, normalment es considera la complexitat temporal del pitjor dels casos, que és la quantitat màxima de temps necessària per a entrades d'una mida determinada. Menys comú, i normalment s'especifica explícitament, és la complexitat del cas mitjà, que és la mitjana del temps que es prenen entrades d'una mida determinada (això té sentit perquè només hi ha un nombre finit d'entrades possibles d'una mida determinada). En ambdós casos, la complexitat temporal s'expressa generalment en funció de la mida de l'entrada.[1] Plantilla:RpCom que aquesta funció és generalment difícil de calcular amb exactitud, i el temps d'execució per a entrades petites no sol ser conseqüent, normalment es centra en el comportament de la complexitat quan la mida de l'entrada augmenta, és a dir, el comportament asimptòtic de la complexitat. Per tant, la complexitat del temps s'expressa habitualment utilitzant la notació O gran, normalment Plantilla:Nowrap Plantilla:Nowrap Plantilla:Nowrap Plantilla:Nowrap etc., on Plantilla:Mvar és la mida en unitats de bits necessària per representar l'entrada.[2]

Les complexitats algorítmiques es classifiquen segons el tipus de funció que apareix a la notació O gran. Per exemple, un algorisme amb complexitat temporal O(n) és un algorisme de temps lineal i un algorisme amb complexitat temporal O(nα) per alguna constant α>1 és un algorisme de temps polinomial.[3]

Taula de complexitats temporals comunes

La taula següent resumeix algunes classes de complexitats temporals que es troben habitualment. A la taula, Plantilla:Nowrap, és a dir, polinomi in x.[4]

Nom Complexitat Temps d'execucióPlantilla:Nowrap Exemples
tempsconstant O(1) 10
temps invers Ackermann O(α(n))
temps iteraactiu logarítmic O(log*n)
log-logarítmic O(loglogn)
temps logarítmic DLOGTIME O(logn) logn, log(n2)
temps polilogarítmic poly(logn) (logn)2
fractional power O(nc) where 0<c<1 n12, n23
temps lineal O(n) Plantilla:Mvar, 2n+5
temps "n log-star n" O(nlog*n)
temps linearítmic O(nlogn) nlogn, logn!
temps quasilineal npoly(logn) nlog2n
temps quadràtic O(n2) n2
temps cúbic O(n3) n3
temps polinomic P 2O(logn)=poly(n) n2+n, n10
temps quasi-polinomic QP 2poly(logn) nloglogn, nlogn
temps sub-exponencial

(primera definició)

SUBEXP O(2nϵ) for all ϵ>0
temps sub-exponencial

(secona definició)

2o(n) 2n3
temps exponencial

(amb exponent lineal)

E 2O(n) 1.1n, 10n
temps exponencial EXPTIME 2poly(n) 2n, 2n2
temps factorial O(n!) n!
temps doble exponencial 2-EXPTIME 22poly(n) 22n

Referències

Plantilla:Referències