Welcome to Scribd. Sign in or start your free trial to enjoy unlimited e-books, audiobooks & documents.Find out more
Download
Standard view
Full view
of .
Look up keyword
Like this
6Activity
0 of .
Results for:
No results containing your search query
P. 1
Programacion 2 - La Eficiencia de los Algoritmos

Programacion 2 - La Eficiencia de los Algoritmos

Ratings: (0)|Views: 526|Likes:
Published by api-19970781

More info:

Published by: api-19970781 on Dec 03, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

03/18/2014

pdf

text

original

La Eficiencia de los Algoritmos.
Introducci\u00f3n
Una historia casi real:

Una peque\u00f1a empresa de ex-alumnos de Ingenier\u00eda Inform\u00e1tica de la Uned ha desarrollado un sistema
de visi\u00f3n artificial capaz de reconocer el rostro de una persona y determinar si coincide con alguno de
los almacenados en una base datos. La m\u00e1quina ha tenido muy buena aceptaci\u00f3n como sistema de
control de accesos (cerradura autom\u00e1tica) y varias empresas lo han comprado. El algoritmo de
comparaci\u00f3n de caras se puede ejecutar, en principio, en un ordenador personal de gama baja. El tiempo
que el sistema tarda en procesar una imagen depende del n\u00famero de im\u00e1genesn almacenadas en la base
de datos

Tras haber vendido varios sistemas a peque\u00f1as empresas, varias medianas empresas y un gran hospital
se han interesado por \u00e9l y lo han comprado. Sin embargo, al poco tiempo se reciben quejas de \u00e9stas
empresas en relaci\u00f3n con el excesivo tiempo que requiere el proceso de reconocimiento.

Ante esas quejas, los desarrolladores realizan unas pruebas de velocidad de reconocimiento para distintos tama\u00f1os de base de datos, siempre ejecutando el programa de reconocimiento sobre el ordenador de gama baja mencionado. Los resultados son:

N\u00famero de im\u00e1genes en la base de datos10 50 100 200
Tiempo de reconocimiento (segundos)
1 25 100 400

Es indudable que el tiempo de reconocimiento para base de datos de 100 im\u00e1genes o m\u00e1s es inaceptable,
para un sistema con 200 personas con acceso autorizado cada persona ha de pasar m\u00e1s de seis minutos
ante la c\u00e1mara. Se dedice probar a sustituir el ordenador por uno con procesador Pentium y m\u00e1s
memoria en lugar del humilde 386 original. Las pruebas con el nuevo ordenador arrojan los siguientes
resultados:

N\u00famero de im\u00e1genes en la base de datos10 50 100 200
Tiempo de reconocimiento (segundos)
0,2 5 20 80

El tiempo se ha reducido, sin embargo es de m\u00e1s de un minuto todav\u00eda para empresa de 200 personas,
adem\u00e1s si se prueba con una de 1000 el tiempo es de 2000 segundos (algo m\u00e1s de media hora), lo cual es
claramente inaceptable.

Puesto que se desea poder vender el sistema a grandes organismos y empresas, los nuevos empresarios
deciden aplicar los conocimientos aprendidos en Programaci\u00f3n II y Programaci\u00f3n III y tratar de
desarrollar un algoritmo de reconocimiento m\u00e1s eficiente. Las pruebas sobre el ordenador de bajas
prestaciones dan ahora el resultado:

N\u00famero de im\u00e1genes en la base de datos10 50 100 200
Tiempo de reconocimiento (segundos)
0,3 2,82 6,64 15,3
Con este nuevo algoritmo el tiempo para 200 puede ser aceptable, todav\u00eda algo alto. Probando con el
ordenador de gama alta se obtiene:
N\u00famero de im\u00e1genes en la base de datos
10 50 100 200
Tiempo de reconocimiento (segundos)
0,07 0,56 1,33 3,06
Los tiempos son ahora muy buenos. Deciden adoptar el nuevo algoritmo e instalar los ordenadores m\u00e1s
potentes. Instalan su m\u00e1quina en grandes empresas, hospitales, ministerios, ...
Moralejas

a) Ante un mal algoritmo el aumento de potencia del procesador no conduce a mejoras importantes,
especialmente cuando el problema a tratar crece. El cambio de ordenador no consigue reducir el tiempo
a un valor aceptable paran alto.

b) Un algoritmo mejorado produce buenos resultados incluso para procesador poco potente. El segundo algoritmo del ejemplo ha logrado colocar el tiempo en valores casi aceptables incluso para ordenador de poca potencia

c) Un algoritmo mejorado permite aprovechar mejor las ventajas de un procesador m\u00e1s potente de forma
que es posible tratar en un tiempo de proceso inferior problemas m\u00e1s complejo. Sup\u00f3ngase que se limita
el tiempo aceptable de reconocimiento en 3 segundos. Con el primer algoritmo, ordenador lento se tiene
unn m\u00e1ximo aceptable de17. Al pasar, con ese mismo algoritmo a ordenador r\u00e1pido se tiene unn
m\u00e1ximo de39. Con el segundo algoritmo y ordenador lenton es52 y pasa a valer200 para ordenador
r\u00e1pido. Es decir, en el primer caso al cambiar de procesador se logra aumentar en un factor de poco m\u00e1s
de dos el tama\u00f1o del problema tratable en un tiempo dado, en el segundo caso en un factor de casi
cuatro.

Y ahora las \u00e1ridas ecuaciones
El ingeniero usa las matem\u00e1ticas fundamentalmente para comunicarse con los de su especie evitando
largas parrafadas como las del apartado anterior. Lo explicado en el ejemplo puede traducirse a:
El primer algoritmo es de orden cuadr\u00e1tico, es decir, si f(n) es la funci\u00f3n que determina el tiempo de
ejecuci\u00f3n en funci\u00f3n del tama\u00f1o n de la base de datos se tiene que:
, en concreto
f(n)=0,01n2 para el primer ordenador. Para el segundo ordenador f(n)= 0,002n2. El segundo algoritmo es
de orden n.log n. En concreto para el primer ordenador la funci\u00f3n de coste es f(n)=0,01.n.lg n, y para el
segundo 0,002.n.lg n.

Cuando se aprende el lenguaje matem\u00e1tico la econom\u00eda de espacio para una explicaci\u00f3n es evidente. Por
todo ello se ha de realizar el esfuerzo m\u00ednimo necesario para comprender los conceptos matem\u00e1ticos que
permitan expresar ideas de forma simple y precisa. No se ha de caer en el extremo opuesto, es decir, usar
las matem\u00e1ticas de forma extensa, abusiva y aburrida sin que aporten nada especial a la comprensi\u00f3n
b\u00e1sica del problema.

\u00bf Que \u00e9s orden de complejidad de un algoritmo ?

El orden de complejidad de un algoritmo en cuanto a tiempo de ejecuci\u00f3n es una expresi\u00f3n matem\u00e1tica
que permite indicar c\u00f3mo crece el tiempo de ejecuci\u00f3n cuando crece el tama\u00f1o del problema que
resuelve el algoritmo.

Se ha de insistir en dos puntos en esta definici\u00f3n:
\u2022

Es una indicaci\u00f3n del crecimiento del tiempo de ejecuci\u00f3n cuando crece el tama\u00f1o del problema.
\u00bf Qu\u00e9 es "tama\u00f1o de problema " ?. Infinidad de algoritmos resuelven problemas en los que el
tiempo de resoluci\u00f3n var\u00eda cuando, sin variar la esencia del propio algoritmo, si var\u00eda uno o
varios par\u00e1metros que determinan el tama\u00f1o de los datos de entrada. Por ejemplo, en un
algoritmo de ordenaci\u00f3n que ordene los registros de una base de datos, o los elementos de un
vector etc. el tiempo de ejecuci\u00f3n crece cuando crece el n\u00famero de registros o elementos a
ordenar.

\u2022

Indica c\u00f3mo crece el tiempo de ejecuci\u00f3n. Cuando se habla de coste asint\u00f3tico no se trata de
expresar una medida absoluta del tiempo de ejecuci\u00f3n del algoritmo. Se trata de expresar c\u00f3mo
var\u00eda el tiempo de ejecuci\u00f3n cuando el tama\u00f1o del problema crece. Sup\u00f3ngase, por ejemplo, que
un algoritmo de ordenaci\u00f3n de vectores es de orden cuadr\u00e1tico. Es decir, que siendo f(n) el

tiempo de ejecuci\u00f3n necesario para ordenar n elementos del vector, se tiene
.A

partir de esta informaci\u00f3n no se puede determinar cu\u00e1nto tiempo se tardar\u00e1 en ordenar un vector
de tama\u00f1o dado. Pero s\u00ed se se puede decir que, cuando el tama\u00f1o n del vector a ordenar crece, el
tiempo de ejecuci\u00f3n crece cuadr\u00e1ticamente. As\u00ed si se nos dice que el tiempo necesario para
ordenar un vector de 100 elementos es de 1 segundo se puede concluir que el tiempo necesario
para ordenar uno de 1000 elementos ser\u00e1 del orden de 100 segundos. Es decir, al multiplicar por
10 el tama\u00f1o del problema el tiempo se ejecuci\u00f3n se multiplica por 102

Se han de tener en cuenta otros factores al analizar el coste de ejecuci\u00f3n de un algoritmo. El contenido
de los datos de entrada influye tambi\u00e9n en el tiempo de ejecuci\u00f3n de muchos algoritmos. As\u00ed, por
ejemplo, el tiempo de ejecuci\u00f3n de un algoritmo de ordenaci\u00f3n de vectores puede ser muy distinto seg\u00fan
el vector contenga datos ya ordenados, o casi ordenados, o no. En general, cuando se hable de coste
asint\u00f3tico, se refiere al caso de contenido de datos m\u00e1s desfavorable, es decir el caso peor.

En la asignatura se trata casi siempre el coste desde el punto de vista asint\u00f3tico y para el caso peor. Esto
no significa que, para problemas concretos, este tratamiento sea siempre el m\u00e1s adecuado y se ha de
razonar con sentido com\u00fan en casos como esos. Dos ejemplos ilustrar\u00e1n esto:

1. Se dispone de dos algoritmos que tratan vectores de tama\u00f1o variable, determinado por un
par\u00e1metron, uno de coste f1(n)=0,001 n2 y otro de costef2(n)=0,1n. Los algoritmos se van a
utilizar para tratar vectores de tama\u00f1o 50 o menor \u00bf C\u00faal es el m\u00e1s apropiado ?. Desde el punto
de vista de coste asint\u00f3tico es evidente que el mejor algoritmo es el segundo, de coste lineal. Sin
embargo para vectores de tama\u00f1o 50 se tiene que el coste del primer algoritmo es 2,5 y el del
segundo 5. Luego para tama\u00f1o 50 o menor es preferible el primer algoritmo aunque su coste
asint\u00f3tico sea peor. En la figura adjunta puede comprobarse que el primer algoritmo es en

Activity (6)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
johancarval liked this
joseyamanda liked this
gjtm liked this

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->