09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

402 Capítulo 18. Complejidad algorítmica<br />

portami<strong>en</strong>to de éstos con datos de un tamaño considerable, que es cuando los<br />

costes de los distintos algoritmos pued<strong>en</strong> t<strong>en</strong>er una difer<strong>en</strong>ciación significativa.<br />

Para <strong>en</strong>t<strong>en</strong>der mejor la importancia del ord<strong>en</strong> de complejidad, resulta muy<br />

ilustrativo observar cómo aum<strong>en</strong>ta el tiempo de ejecución de algoritmos con<br />

distintos órd<strong>en</strong>es. En todos ellos, n repres<strong>en</strong>ta el tamaño de los datos y los<br />

tiempos están expresados <strong>en</strong> segundos, considerando un computador que realiza<br />

un millón de operaciones por segundo:<br />

T (n) log n n n log n n 2 n 3 2 n n!<br />

n<br />

10 3.32 · 10 −6 10 −5 3.32 · 10 −5 10 −4 0.001 0.001024 3.6288<br />

50 5.64 · 10 −6 5 · 10 −5 2.82 · 10 −4 0.0025 0.125 intratable intratable<br />

100 6.64 · 10 −6 10 −4 6.64 · 10 −4 0.01 1 intratable intratable<br />

10 3 10 −5 0.001 0.01 1 1000 intratable intratable<br />

10 4 1.33 · 10 −5 0.01 0.133 100 10 6 intratable intratable<br />

10 5 1.66 · 10 −5 0.1 1.66 10 4 intratable intratable intratable<br />

10 6 2 · 10 −5 1 19.93 10 6 intratable intratable intratable<br />

18.2 Medidas del comportami<strong>en</strong>to asintótico<br />

18.2.1 Comportami<strong>en</strong>to asintótico<br />

Como se ha visto <strong>en</strong> el apartado anterior, la complejidad <strong>en</strong> tiempo de un<br />

algoritmo es una función T (n) del tamaño de <strong>en</strong>trada del algoritmo. Pues bi<strong>en</strong>,<br />

es el ord<strong>en</strong> de dicha función (constante, logarítmica, lineal, expon<strong>en</strong>cial, etc.) el<br />

que expresa el comportami<strong>en</strong>to dominante para datos de gran tamaño, como se<br />

ilustra <strong>en</strong> el ejemplo que se pres<strong>en</strong>ta a continuación.<br />

Supóngase que se dispone de cuatro algoritmos para solucionar un determinado<br />

problema, cuyas complejidades son respectivam<strong>en</strong>te, lineal (8n), cuadrática<br />

(2 n 2 ), logarítmica (20 log 2 n) y expon<strong>en</strong>cial (e n ). En la figura 18.1 se puede<br />

observar cómo sus tiempos relativos de ejecución no son excesivam<strong>en</strong>te difer<strong>en</strong>tes<br />

para datos de un tamaño pequeño (<strong>en</strong>tre 1 y 5).<br />

Sin embargo, las gráficas de la figura 18.2 confirman que es realm<strong>en</strong>te el ord<strong>en</strong><br />

de la función de complejidad el que determina el comportami<strong>en</strong>to para tamaños<br />

de <strong>en</strong>trada grandes, ret<strong>en</strong>i<strong>en</strong>do únicam<strong>en</strong>te la parte relevante de una función (de<br />

coste) para datos de gran tamaño.<br />

A la vista de esto, es evid<strong>en</strong>te que el aspecto importante de la complejidad<br />

de algoritmos es su comportami<strong>en</strong>to asintótico, ignorando otros detalles m<strong>en</strong>ores<br />

por ser irrelevantes.<br />

Para ello, es preciso formalizar el estudio del ord<strong>en</strong> de complejidad mediante<br />

medidas que ayud<strong>en</strong> a determinar el comportami<strong>en</strong>to asintótico del coste.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!