| La Eficiencia de los Algoritmos.
Introducción Una historia casi real: Una pequeña empresa de ex-alumnos de Ingeniería Informática de la Uned ha desarrollado un sistema de visión artificial capaz de reconocer el rostro de una persona y determinar si coincide con alguno de los almacenados en una base datos. La máquina ha tenido muy buena aceptación como sistema de control de accesos (cerradura automática) y varias empresas lo han comprado. El algoritmo de comparación 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úmero de imágenes n almacenadas en la base de datos Tras haber vendido varios sistemas a pequeñas empresas, varias medianas empresas y un gran hospital se han interesado por él y lo han comprado. Sin embargo, al poco tiempo se reciben quejas de éstas empresas en relación 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ños de base de datos, siempre ejecutando el programa de reconocimiento sobre el ordenador de gama baja mencionado. Los resultados son:
Es indudable que el tiempo de reconocimiento para base de datos de 100 imágenes o más es inaceptable, para un sistema con 200 personas con acceso autorizado cada persona ha de pasar más de seis minutos ante la cámara. Se dedice probar a sustituir el ordenador por uno con procesador Pentium y más memoria en lugar del humilde 386 original. Las pruebas con el nuevo ordenador arrojan los siguientes resultados:
El tiempo se ha reducido, sin embargo es de más de un minuto todavía para empresa de 200 personas, además si se prueba con una de 1000 el tiempo es de 2000 segundos (algo más 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ón II y Programación III y tratar de desarrollar un algoritmo de reconocimiento más eficiente. Las pruebas sobre el ordenador de bajas prestaciones dan ahora el resultado:
Con este nuevo algoritmo el tiempo para 200 puede ser aceptable, todavía algo alto. Probando con el ordenador de gama alta se obtiene:
Los tiempos son ahora muy buenos. Deciden adoptar el nuevo algoritmo e instalar los ordenadores más potentes. Instalan su máquina 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 para n 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ás potente de forma que es posible tratar en un tiempo de proceso inferior problemas más complejo. Supóngase que se limita el tiempo aceptable de reconocimiento en 3 segundos. Con el primer algoritmo, ordenador lento se tiene un n máximo aceptable de 17. Al pasar, con ese mismo algoritmo a ordenador rápido se tiene un n máximo de 39. Con el segundo algoritmo y ordenador lento n es 52 y pasa a valer 200 para ordenador rápido. Es decir, en el primer caso al cambiar de procesador se logra aumentar en un factor de poco más de dos el tamaño del problema tratable en un tiempo dado, en el segundo caso en un factor de casi cuatro. Y ahora las áridas ecuaciones El ingeniero usa las matemáticas 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ático, es decir,
si f(n) es la función que determina el tiempo de
ejecución en función del tamaño n de la base de datos
se tiene que: Cuando se aprende el lenguaje matemático la economía de espacio para una explicación es evidente. Por todo ello se ha de realizar el esfuerzo mínimo necesario para comprender los conceptos matemáticos que permitan expresar ideas de forma simple y precisa. No se ha de caer en el extremo opuesto, es decir, usar las matemáticas de forma extensa, abusiva y aburrida sin que aporten nada especial a la comprensión básica del problema. ¿ Que és orden de complejidad de un algoritmo ? El orden de complejidad de un algoritmo en cuanto a tiempo de ejecución es una expresión matemática que permite indicar cómo crece el tiempo de ejecución cuando crece el tamaño del problema que resuelve el algoritmo. Se ha de insistir en dos puntos en esta definición:
Se han de tener en cuenta otros factores al analizar el coste de ejecución de un algoritmo. El contenido de los datos de entrada influye también en el tiempo de ejecución de muchos algoritmos. Así, por ejemplo, el tiempo de ejecución de un algoritmo de ordenación de vectores puede ser muy distinto según el vector contenga datos ya ordenados, o casi ordenados, o no. En general, cuando se hable de coste asintótico, se refiere al caso de contenido de datos más desfavorable, es decir el caso peor. En la asignatura se trata casi siempre el coste desde el punto de vista asintótico y para el caso peor. Esto no significa que, para problemas concretos, este tratamiento sea siempre el más adecuado y se ha de razonar con sentido común en casos como esos. Dos ejemplos ilustrarán esto:
Este apartado sólo ha pretendido servir de introducción al estudio de costes de ejecución desde un punto de vista práctico sirviendo de complemento al apartado 1.1 de Peña. En este apartado se exponen las ideas básicas a tener en cuenta en el análisis de coste:
|
© Jerónimo Quesada 1998
Los contenidos de estas páginas pueden ser reproducidos para uso didáctico individual siempre que se cite el origen y no sean objeto de actividad de intercambio comercial de ningún tipo. En cualesquiera otras condiciones la copia, transmisión o almacenamiento por cualquier medio tipográfico, fotográfico, informático, telemático u otros requiere la autorización expresa del autor. Se agradecerá la comunicación de cualquier errata así como cualquier comentario o sugerencia.