Beruflich Dokumente
Kultur Dokumente
Ciro Saguay
Facultad de Ciencias de la Ingeniería e Industrias
.
Agenda:
• Introducción al análisis de algoritmos.
• Tipos de análisis.
• Medidas de eficacia:
• complejidad espacial,
• complejidad temporal.
www.ute.edu.ec
Actualmente la construcción de aplicaciones informáticas debe responder a
requerimientos muy complejos y de carácter crítico de las organizaciones. La
complejidad inmersa en los proyectos de desarrollo de software está
asociada a múltiples fuentes: metodologías utilizadas, tecnologías de apoyo,
capacidad y competencias de las personas, productividad de los equipos de
trabajo, requerimientos cambiantes de los clientes, presupuesto disponible,
entre otras.
www.ute.edu.ec
El análisis de algoritmos, tiene como objetivo fundamental medir la eficiencia
de uno o más algoritmos en cuanto a consumo de memoria y tiempo. Es una
actividad muy importante en el proceso de desarrollo de software,
especialmente en entornos con recursos restringidos. Por ello, es necesario
realizar estimaciones en cuanto al consumo de tiempo y de memoria que
puede requerir una aplicación para su ejecución.
www.ute.edu.ec
Definición de Algoritmo:
Se conoce como algoritmo a una secuencia de pasos (instrucciones), que son
ejecutadas con esfuerzos finitos en un tiempo razonable, que recibe un conjunto de
valores como entrada y produce un conjunto de valores como salida. Para la ejecución
de estas instrucciones es necesario contar con una cantidad finita de recursos.
En la literatura asociada al tema se encuentra una cantidad muy amplia de tipos de algoritmos
entre los cuales adicionalmente se pueden citar los algoritmos paralelos, probabilísticos,
voraces, divide y vencerás, dinámicos. Estos últimos también se tratarán en esta asignatura.
www.ute.edu.ec
Implementación de un algoritmo :
• Correcta: Si para toda instancia del conjunto de entrada se obtiene la salida
esperada, es decir, que cumpla con el objetivo para el cual está pensado.
• Eficiente: Debe ser rápido y usar la menor cantidad de recursos. Es una relación
entre los recursos consumidos, fundamentalmente tiempo y memoria versus los
productos obtenidos.
Por lo tanto, un algoritmo se considera bueno si considera los siguientes elementos.
www.ute.edu.ec
Si los anteriores elementos resueltos de forma positiva dan noción de lo que es un
buen algoritmo. Se pueden generar las siguientes preguntas cuando estemos
analizando cada uno de nuestros programas, y de esa manera realizar el análisis del
algoritmo.
Pregunta Respuesta
¿Cumple el algoritmo el objetivo para el cual está pensado?
www.ute.edu.ec
Ejemplo:
www.ute.edu.ec
Solución 1:
public boolean esPrimo(int numero)
{
int resultado = 0;
int i = 2;
while( i < numero )
{
if ( numero % i == 0 )
{
resultado = 1;
}
i = i + 1;
}
if ( resultado == 0 )
{
return true;
}
else
{
return false;
} www.ute.edu.ec
}
Solución 1:
Pregunta Respuesta
¿Cumple el algoritmo el objetivo para Solo en el caso en cual se ingresa un número entero
el cual está pensado? positivo, el algoritmo genera una salida correcta y
cumpliría con su objetivo.
¿Resuelve el algoritmo el problema en No es posible resolver el interrogante, para poder
el menor tiempo posible? responder, se debe comparar con la eficiencia de otros
algoritmos que resuelven el mismo problema
¿Hace el algoritmo uso adecuado de los Si, dado que se usan las variables estrictamente
recursos? necesarias para la solución y se utiliza un tipo de dato
con rango de valores moderado
¿El algoritmo permite identificar No, dado que el programa no maneja excepciones que
posibles errores? controlen posibles errores
¿El algoritmo es fácil de modificar para Si, dada la sencillez del problema y de la solución
añadir funcionalidad? propuesta www.ute.edu.ec
Solución 2:
public boolean esPrimo(int numero)
{
int i;
for ( i = 2 ; i <= numero / 2 ; i++ )
{
if ( numero % i == 0 )
{
break;
}
}
if ( i > numero / 2 )
{
return true;
}
else
{
return false;
} www.ute.edu.ec
}
Solución 2:
Pregunta Respuesta
¿Cumple el algoritmo el objetivo para Solo, en el caso en el que se ingrese un número entero
el cual está pensado? positivo, el algoritmo genera una salida correcta
¿Resuelve el algoritmo el problema en Si se compara con el algoritmo anterior, este algoritmo
el menor tiempo posible? es mejor dado que una vez que encuentra un número
divisible, termina la ejecución y muestra el mensaje al
usuario, teniendo en cuenta la condición if.
¿Hace el algoritmo uso adecuado de los Si, pues para algunos casos no itera toda la cantidad de
recursos? veces permitida por el ciclo
¿El algoritmo permite identificar No, dado que el programa no maneja excepciones que
posibles errores? controlen posibles errores
¿El algoritmo es fácil de modificar para Si, dada la sencillez del problema y de la solución
añadir funcionalidad? propuesta
www.ute.edu.ec
Actividad:
www.ute.edu.ec