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.

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

• Tmáx: Este tiempo máximo se alcanzará cuando v[n] ≤ elem. Por lo<br />

tanto:<br />

Tmáx(n) = a + n(s + 2t + a) + t + a = k1n + k2<br />

• Tmed: Supóngase que es igualm<strong>en</strong>te probable necesitar 1 vuelta, 2 vueltas,.<br />

. . , n vueltas para <strong>en</strong>contrar el elem<strong>en</strong>to buscado. 1 Además, recordemos<br />

que el tiempo empleado por el algoritmo cuando para <strong>en</strong> la posición<br />

j-ésima del vector es<br />

T (j) = k1j + k2<br />

según lo dicho <strong>en</strong> el apartado anterior. Entonces, se ti<strong>en</strong>e que: 2<br />

Tmed(n) =<br />

n<br />

TjP (parar <strong>en</strong> la posición j − ésima)<br />

j=1<br />

=<br />

n<br />

(k1j + k2)<br />

j=1<br />

1<br />

n<br />

= k1<br />

=<br />

n + 1<br />

+ k2<br />

n 2<br />

c1n + c2<br />

de forma que también es lineal con respecto a n.<br />

Por supuesto, Tmed(n) < Tmáx(n), como se puede comprobar comparando<br />

los valores de k1 y c1, lo que se deja como ejercicio al lector.<br />

También importa el gasto de memoria<br />

Por otra parte, el estudio de la implem<strong>en</strong>tación de la función Sumatorio<br />

nos sirve para ver cómo el coste <strong>en</strong> memoria también debe t<strong>en</strong>erse <strong>en</strong> cu<strong>en</strong>ta al<br />

analizar algoritmos.<br />

Esta función, que calcula la suma de los n primeros números naturales, si<strong>en</strong>do<br />

n el argum<strong>en</strong>to de <strong>en</strong>trada, puede ser implem<strong>en</strong>tada de forma natural con un<br />

algoritmo recursivo, resultando el sigui<strong>en</strong>te código <strong>en</strong> <strong>Pascal</strong>:<br />

function Sumatorio(n: integer): integer;<br />

{PreC.: n ≥ 0}<br />

{Dev. n<br />

i=0 i}<br />

1 Se ti<strong>en</strong>e esta situación, por ejemplo, cuando la secu<strong>en</strong>cia ord<strong>en</strong>ada de los n elem<strong>en</strong>tos del<br />

vector se ha escogido equiprobablem<strong>en</strong>te <strong>en</strong>tre el dominio integer, así como el elem<strong>en</strong>to elem<br />

que se busca.<br />

2 Notaremos con P a la probabilidad.

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

Saved successfully!

Ooh no, something went wrong!