SlideShare una empresa de Scribd logo
1 de 35
Análisis de Algoritmos
Universidad de San Carlos de Guatemala
Facultad de Ingeniería
Escuela de Ciencias y Sistemas
Estructuras de Datos
Secciones: A, B y C
Guatemala, agosto 2019
Recordando …
• Algoritmo
Un conjunto de instrucciones que resuelven un problema especifico a
partir de entradas concretas.
• Seudocódigo
Representación de algoritmos en lenguaje natural (ej. Español) y otra
parte en código estructurado.
• Programa
Representación concreta de un algoritmo en un lenguaje de
programación que es ejecutado por una computadora.
Necesidad
• Varias soluciones para el mismo problema.
• Tiempo de ejecución.
• Memoria utilizada.
• Buscar la eficacia y la eficiencia.
Eficacia y eficiencia
• Eficacia
Lograr que el algoritmo logre realizar la tarea especificada.
• Eficiencia
Hacer un buen uso de los recursos para resolver un algoritmo. Alcanzar
una solución en el menor tiempo posible utilizando la menor cantidad
de recursos físicos. Factor Espacio-Tiempo.
Idealmente un programa debe de cumplir con ambas características.
Dificultades en medir la eficiencia
• Existen diferentes métodos con los que se trata de medir la eficiencia
de los algoritmos (cantidad de operaciones, tiempo, memoria,
energía, datos transferidos, etc.).
• En la practica también se toma en cuenta el tipo de Hardware, el
compilador, opciones de la compilación e incluso el lenguaje de
programación utilizado.
Algoritmia
• Estudio sistemático de las técnicas fundamentales utilizadas para
diseñar y analizar algoritmos eficientes.
• El estudio en la eficiencia de los algoritmos se centra,
fundamentalmente, en el análisis de la ejecución de bucles.
Eficiencia en Memoria (Complejidad espacial)
• Enfocada a la cantidad de memoria (RAM) que es utilizada por un
programa cuando se ejecuta.
• Consideraciones:
• Memoria requerida por el código del algoritmo
• Memoria requerida para almacenar datos de entrada
• Memoria requerida para almacenar datos de salida
• Memoria requerida para cálculos y asignaciones de datos
Eficiencia en tiempo (Complejidad temporal)
• Enfocada a la cantidad de tiempo de ejecución de algoritmo.
• El resultado es generalmente representado utilizado la notación O
grande.
• Generalmente se utilizan puntos de comparación para medir el
tiempo de un algoritmo. Comparación de algoritmos.
Formato general de la eficiencia
• En general, el formato se puede expresar mediante una función:
𝑓 𝑛 = 𝑒𝑓𝑖𝑐𝑖𝑒𝑛𝑐𝑖𝑎
• Es decir, la eficiencia del algoritmo se examina como una función del
número de elementos que tienen que ser procesados.
Bucles Lineales
• En los bucles se repiten las sentencias del cuerpo del bucle un
número determinado de veces, que determina la eficiencia del
mismo. Normalmente, en los algoritmos los bucles son el término
dominante en cuanto a la eficiencia del mismo.
Bucles Lineales – Ejemplo 1
¿Cuántas veces se repite el cuerpo del bucle en el siguiente código?
i = 1
iterar (i <= n)
código de la aplicación
i = i + 1
fin_iterar
Respuesta: Si n es un entero, por ejemplo, de valor 100, la respuesta es 100 veces. El número de
iteraciones es directamente proporcional al factor del bucle, n. Como la eficiencia es directamente
proporcional al número de iteraciones, la función que expresa la eficiencia es:
𝒇 𝒏 = 𝒏
Bucles Lineales – Ejemplo 2
¿Cuántas veces se repite el cuerpo del bucle en el siguiente código?
i = 1
iterar (i <= n)
código de la aplicación
i = i + 2
fin_iterar
Respuesta: La respuesta no siempre es tan evidente como en el ejercicio anterior.
Ahora el contador i avanza de 2 en 2, por lo que la respuesta es n/2. En este caso, el
factor de eficiencia es:
𝒇 𝒏 = 𝒏
𝟐
Bucles Logarítmicos
• Consideremos un bucle en el que su variable de control se multiplique
o se divida dentro de dicho bucle. ¿Cuántas veces se repetirá el
cuerpo del bucle en los siguientes segmentos de programa?
i = 1
mientras (i < 1000)
código de aplicación
i = i * 2
fin_mientras
i = 1000
mientras (i > 1)
código de aplicación
i = i / 2
fin_mientras
Bucles Logarítmicos
En ambos bucles se ejecutan 10 iteraciones. La razón es que, en cada
iteración, el valor de i se dobla en el bucle de multiplicar y se divide por la
mitad en el bucle de división. Por consiguiente, el número de iteraciones es
una función del multiplicador o divisor, en este caso 2.
• Bucle multiplicar 2𝑖𝑡𝑒𝑟𝑎𝑐𝑖𝑜𝑛𝑒𝑠 < 1000
• Bucle dividir 1000
2𝑖𝑡𝑒𝑟𝑎𝑐𝑖𝑜𝑛𝑒𝑠 ≥ 1
Generalizando el análisis, se puede decir que las iteraciones de los bucles
especificados se determinan por la siguiente fórmula:
𝒇 𝒏 = 𝐥𝐨𝐠𝟐 𝒏
Bucles Anidados
• En el caso de bucles anidados, se determinan cuántas iteraciones
contiene cada bucle. El total es entonces el producto del número de
iteraciones del bucle interno y el número de iteraciones del bucle
externo.
• Existen tres tipos de bucles anidados: lineal logarítmico, cuadrático
dependiente y cuadrático.
Lineal Logarítmica
Dependiente
Cuadrática
Cuadrática
𝑓 𝑛 = 𝑛 log2 𝑛 𝑓 𝑛 =
𝑛(𝑛 + 1)
2
𝑓 𝑛 = 𝑛2
Análisis de Tiempo
Tiempo de ejecución lineal de una función que calcula una serie de n términos.
double serie(double x, int n)
{
double s;
int i;
s = 0.0; // tiempo t1
for (i = 1; i <= n; i++) // tiempo t2
{
s += i * x; // tiempo t3
}
return s; // tiempo t4
}
La función T(n) del método es: 𝑻 𝒏 = 𝒕𝟏 + 𝒏 ∗ 𝒕𝟐 + 𝒏 ∗ 𝒕𝟑 + 𝒕𝟒
Análisis de Algoritmos
• Notación O-Grande
• Peor de los casos. O(g(x))
• El mas utilizado debido a que indica la complejidad mas alta de algoritmo.
• Notación Ω-Grande.
• El mejor de los casos. Ω(g(x))
• Notación Θ-Grande
• El promedio de los casos. Θ(g(x))
f(x)=O(g(x))
Notación O-Grande (Cota superior asintótica)
• Indica la cota superior de una función.
• Simula el limite máximo de entradas de una función.
• Intentar determinar el peor de los casos de una función.
• Utilizado para medir complexidad de una función en términos de
tiempo o memoria.
• Los análisis de realizan cuando n (cantidad de elementos) tiende a
infinito.
• Basado únicamente en la cantidad de elementos de entrada y los que
opera la función.
• Independiente del entrono (hardware o software) donde se ejecute.
Independencia del entorno
Si una función, por iteración, se tarda un tiempo X en una computadora
(Laptop) y un tiempo Y en otra computadora (Servidor), la complejidad
del algoritmo no cambia. Simplemente esta cambiando el entorno
(velocidad de CPU, Lenguaje) de ejecución (c).
O(n) * c
Cuando Utilizarla
• Dispositivos con poca memoria.
• Aplicaciones con grandes entradas de datos. ¡Escalabilidad!
• Aplicaciones con eficiencia critica. ¡Velocidad!
• Aplicaciones en tiempo real. ¡Velocidad!
¡¡¡Siempre!!!
Órdenes comunes para la notación O-grande
Notación Nombre
O(1) orden constante
O(log log n) orden sublogarítmica
O(log n) orden logarítmica
O(n) orden lineal o de primer orden
O(n · log n) orden lineal logarítmica
O(n2) orden cuadrática o de segundo orden
O(n3), ... orden cúbica o de tercer orden, ...
O(nc) orden potencial fija
O(cn), n > 1 orden exponencial
O(n!) orden factorial
O(nn) orden potencial exponencial
O(1) Orden Constante
Significa que la cantidad de datos es irrelevante para el algoritmo, siempre va a
tardar el mismo tiempo en terminar. Lamentablemente es difícil que un algoritmo
no trivial caiga en esta categoría.
Elementos Tiempo
1 k segundos
10 k segundos
100 k segundos
Ejemplos:
• Acceder al elemento de un arreglo
• Insertar en elemento en una lista enlazada
• Añadir o sacar un elemento de una pila
O(log n) Orden Logarítmico
En este caso el tiempo incrementa conforme aumenta el número de elementos, pero de forma
logarítmica por lo que para grandes cantidades de datos el tiempo es relativamente corto.
Ejemplos:
• Búsqueda binaria
• Encontrar menor/mayor elemento en un árbol binario de búsqueda
• Algunos algoritmos Divide y Vencerás
Elementos Tiempo
1 1 segundo
10 2 segundos
100 3 segundos
1000 4 segundos
10000 5 segundos
O(n) Orden Lineal
Si se incrementa la cantidad de elementos el tiempo incrementa de forma proporcional.
Ejemplos:
• Recorrer un arreglo o lista enlazada
• Búsqueda lineal
• Comparar dos cadenas
Elementos Tiempo
1 1 segundo
10 10 segundos
100 100 segundos
O(n log n) Orden lineal logarítmica
Es una combinación de las anteriores. Común en algoritmitos de búsqueda.
Ejemplos:
• Merge Sort
• Heap Sort
• Quick Sort
Elementos Tiempo
1 1 segundo
10 20 segundos
100 300 segundos
O(n log n) Orden lineal logarítmica
Es una combinación de las anteriores. Común en algoritmitos de búsqueda.
Ejemplos:
• Merge Sort
• Heap Sort
• Quick Sort
Elementos Tiempo
1 1 segundo
10 20 segundos
100 300 segundos
O(n^2) Orden Cuadrático
La cantidad de tiempo que tarda el algoritmo comienza a dispararse, no es muy eficiente con una
gran cantidad de datos.
Ejemplos:
• Bubble sort
• Selection sort
• Iterar un arreglo de 2 dimensiones
Elementos Tiempo
1 1 segundo
10 100 segundos
100 1000 segundos
Cuadro de Complejidad O-grande
Análisis de Algoritmos. Notación O-Grande
• El análisis se realiza por función.
• Las asignaciones, operaciones de aritméticas y operaciones lógicas son
consideradas de Orden constante O(1).
• Los bucles generar la complejidad de los algoritmos.
• Si existen bucles anidados, se multiplica la complejidad del bucle interno
por la del bucle externo.
• Cada instrucción de la función es tomada en cuenta. Se obvian los
comentarios.
• f(n) esta compuesta de la sumatoria de todos los tiempos de cada
instrucción.
• Solo se toma en cuenta los elementos con la potencia mas grande.
Ejemplo de Análisis
a=5 //Constante = 1
b=6 //Constante = 1
c=10 //Constante = 1
for i in range(n): //Bucle hasta n
for j in range(n): //Bucle anidado hasta n
x = i * i //Constante = 1
y = j * j //Constante = 1
z = i * j //Constante = 1
for k in range(n): // Bucle hasta n
w = a*k + 45 //Constante = 1
v = b*b //Constante = 1
d = 33 //Constante = 1
T(n) = 3 + 3n^2 + 2n + 1
T(n) = 3n^2 + 2n + 4
Se eliminan las constantes y se toma el
elementó con el coeficiente mas grande.
f(n) = n^2
Simplemente, O(n^2)
El orden o la complexidad del algoritmo es
cuadrático.
Complejidad de estructuras de datos comunes
Complejidad de algoritmos de búsqueda
Tarea 5 – Lista de Actividades
• Agregar la siguiente funcionalidad:
• Leer un archivo CSV, que corresponde a la lista de actividades. El archivo debe
de tener cabecera. Los valores nulos serán representados por una X.
• Graficar la lista de actividades utilizando Graphviz.
• Desarrollar en C++.
• Utilizarse Docker para ejecutar el programa.
Fecha de entrega: Martes 3 de septiembre
Método de entrega: Classroom. Enviar enlace del Commit o del repositorio de GitHub.
¡Muchas Gracias!

Más contenido relacionado

Similar a 05 - Analisis de Algoritmos.pptx

Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de AlgoritmosFranco Cid
 
Analisis Clase2
Analisis  Clase2Analisis  Clase2
Analisis Clase2luzenith_g
 
Cap 02.1 analisis de las estructuras de control(1)
Cap 02.1   analisis de las estructuras de control(1)Cap 02.1   analisis de las estructuras de control(1)
Cap 02.1 analisis de las estructuras de control(1)Lio Alva
 
Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)Raquel Nuñez
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidadrezzaca
 
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)Rubi Veronica Chimal Cuxin
 
Analisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacioAnalisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacioAdamari Cortes
 
Teoria de la c.c.
Teoria de la c.c.Teoria de la c.c.
Teoria de la c.c.belmont402
 
Que es la complejidad de un algoritmo
Que es la complejidad de un algoritmoQue es la complejidad de un algoritmo
Que es la complejidad de un algoritmojaviierr24
 
ANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOSANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOSerwin_alexander
 
16 Complejidad
16 Complejidad16 Complejidad
16 ComplejidadUVM
 
Manual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosManual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosJuan Timoteo Cori
 
Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big oUVM
 
Estructura de dato unidad 7
Estructura de dato unidad 7Estructura de dato unidad 7
Estructura de dato unidad 7lenithoz
 
Complejidad de algoritmos
Complejidad de algoritmosComplejidad de algoritmos
Complejidad de algoritmospazmoralesv
 

Similar a 05 - Analisis de Algoritmos.pptx (20)

Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
Analisis Clase2
Analisis  Clase2Analisis  Clase2
Analisis Clase2
 
Cap 02.1 analisis de las estructuras de control(1)
Cap 02.1   analisis de las estructuras de control(1)Cap 02.1   analisis de las estructuras de control(1)
Cap 02.1 analisis de las estructuras de control(1)
 
Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)Teoría de complejidad computacional (tcc)
Teoría de complejidad computacional (tcc)
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
 
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
Informe técnico Unidad 7 Análisis de algoritmos (Rubí Veronica)
 
Analisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacioAnalisis de algoritmos complejidad en tiempo y espacio
Analisis de algoritmos complejidad en tiempo y espacio
 
Algoritmo ibrahim ishtay
Algoritmo ibrahim ishtayAlgoritmo ibrahim ishtay
Algoritmo ibrahim ishtay
 
Tema4
Tema4Tema4
Tema4
 
Bus99
Bus99Bus99
Bus99
 
Teoria de la c.c.
Teoria de la c.c.Teoria de la c.c.
Teoria de la c.c.
 
Que es la complejidad de un algoritmo
Que es la complejidad de un algoritmoQue es la complejidad de un algoritmo
Que es la complejidad de un algoritmo
 
ANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOSANALISIS DE LOS ALGORITMOS
ANALISIS DE LOS ALGORITMOS
 
16 Complejidad
16 Complejidad16 Complejidad
16 Complejidad
 
Manual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_gManual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_g
 
Manual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datosManual algoritmos y_estructura_de_datos
Manual algoritmos y_estructura_de_datos
 
Análisis de complejidad introducción notación big o
Análisis de complejidad   introducción notación big oAnálisis de complejidad   introducción notación big o
Análisis de complejidad introducción notación big o
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Estructura de dato unidad 7
Estructura de dato unidad 7Estructura de dato unidad 7
Estructura de dato unidad 7
 
Complejidad de algoritmos
Complejidad de algoritmosComplejidad de algoritmos
Complejidad de algoritmos
 

Último

clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamientoRobertoAlejandroCast6
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfMIGUELANGELCONDORIMA4
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfReneBellido1
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 

Último (20)

clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 

05 - Analisis de Algoritmos.pptx

  • 1. Análisis de Algoritmos Universidad de San Carlos de Guatemala Facultad de Ingeniería Escuela de Ciencias y Sistemas Estructuras de Datos Secciones: A, B y C Guatemala, agosto 2019
  • 2. Recordando … • Algoritmo Un conjunto de instrucciones que resuelven un problema especifico a partir de entradas concretas. • Seudocódigo Representación de algoritmos en lenguaje natural (ej. Español) y otra parte en código estructurado. • Programa Representación concreta de un algoritmo en un lenguaje de programación que es ejecutado por una computadora.
  • 3. Necesidad • Varias soluciones para el mismo problema. • Tiempo de ejecución. • Memoria utilizada. • Buscar la eficacia y la eficiencia.
  • 4. Eficacia y eficiencia • Eficacia Lograr que el algoritmo logre realizar la tarea especificada. • Eficiencia Hacer un buen uso de los recursos para resolver un algoritmo. Alcanzar una solución en el menor tiempo posible utilizando la menor cantidad de recursos físicos. Factor Espacio-Tiempo. Idealmente un programa debe de cumplir con ambas características.
  • 5. Dificultades en medir la eficiencia • Existen diferentes métodos con los que se trata de medir la eficiencia de los algoritmos (cantidad de operaciones, tiempo, memoria, energía, datos transferidos, etc.). • En la practica también se toma en cuenta el tipo de Hardware, el compilador, opciones de la compilación e incluso el lenguaje de programación utilizado.
  • 6. Algoritmia • Estudio sistemático de las técnicas fundamentales utilizadas para diseñar y analizar algoritmos eficientes. • El estudio en la eficiencia de los algoritmos se centra, fundamentalmente, en el análisis de la ejecución de bucles.
  • 7. Eficiencia en Memoria (Complejidad espacial) • Enfocada a la cantidad de memoria (RAM) que es utilizada por un programa cuando se ejecuta. • Consideraciones: • Memoria requerida por el código del algoritmo • Memoria requerida para almacenar datos de entrada • Memoria requerida para almacenar datos de salida • Memoria requerida para cálculos y asignaciones de datos
  • 8. Eficiencia en tiempo (Complejidad temporal) • Enfocada a la cantidad de tiempo de ejecución de algoritmo. • El resultado es generalmente representado utilizado la notación O grande. • Generalmente se utilizan puntos de comparación para medir el tiempo de un algoritmo. Comparación de algoritmos.
  • 9. Formato general de la eficiencia • En general, el formato se puede expresar mediante una función: 𝑓 𝑛 = 𝑒𝑓𝑖𝑐𝑖𝑒𝑛𝑐𝑖𝑎 • Es decir, la eficiencia del algoritmo se examina como una función del número de elementos que tienen que ser procesados.
  • 10. Bucles Lineales • En los bucles se repiten las sentencias del cuerpo del bucle un número determinado de veces, que determina la eficiencia del mismo. Normalmente, en los algoritmos los bucles son el término dominante en cuanto a la eficiencia del mismo.
  • 11. Bucles Lineales – Ejemplo 1 ¿Cuántas veces se repite el cuerpo del bucle en el siguiente código? i = 1 iterar (i <= n) código de la aplicación i = i + 1 fin_iterar Respuesta: Si n es un entero, por ejemplo, de valor 100, la respuesta es 100 veces. El número de iteraciones es directamente proporcional al factor del bucle, n. Como la eficiencia es directamente proporcional al número de iteraciones, la función que expresa la eficiencia es: 𝒇 𝒏 = 𝒏
  • 12. Bucles Lineales – Ejemplo 2 ¿Cuántas veces se repite el cuerpo del bucle en el siguiente código? i = 1 iterar (i <= n) código de la aplicación i = i + 2 fin_iterar Respuesta: La respuesta no siempre es tan evidente como en el ejercicio anterior. Ahora el contador i avanza de 2 en 2, por lo que la respuesta es n/2. En este caso, el factor de eficiencia es: 𝒇 𝒏 = 𝒏 𝟐
  • 13. Bucles Logarítmicos • Consideremos un bucle en el que su variable de control se multiplique o se divida dentro de dicho bucle. ¿Cuántas veces se repetirá el cuerpo del bucle en los siguientes segmentos de programa? i = 1 mientras (i < 1000) código de aplicación i = i * 2 fin_mientras i = 1000 mientras (i > 1) código de aplicación i = i / 2 fin_mientras
  • 15. En ambos bucles se ejecutan 10 iteraciones. La razón es que, en cada iteración, el valor de i se dobla en el bucle de multiplicar y se divide por la mitad en el bucle de división. Por consiguiente, el número de iteraciones es una función del multiplicador o divisor, en este caso 2. • Bucle multiplicar 2𝑖𝑡𝑒𝑟𝑎𝑐𝑖𝑜𝑛𝑒𝑠 < 1000 • Bucle dividir 1000 2𝑖𝑡𝑒𝑟𝑎𝑐𝑖𝑜𝑛𝑒𝑠 ≥ 1 Generalizando el análisis, se puede decir que las iteraciones de los bucles especificados se determinan por la siguiente fórmula: 𝒇 𝒏 = 𝐥𝐨𝐠𝟐 𝒏
  • 16. Bucles Anidados • En el caso de bucles anidados, se determinan cuántas iteraciones contiene cada bucle. El total es entonces el producto del número de iteraciones del bucle interno y el número de iteraciones del bucle externo. • Existen tres tipos de bucles anidados: lineal logarítmico, cuadrático dependiente y cuadrático. Lineal Logarítmica Dependiente Cuadrática Cuadrática 𝑓 𝑛 = 𝑛 log2 𝑛 𝑓 𝑛 = 𝑛(𝑛 + 1) 2 𝑓 𝑛 = 𝑛2
  • 17. Análisis de Tiempo Tiempo de ejecución lineal de una función que calcula una serie de n términos. double serie(double x, int n) { double s; int i; s = 0.0; // tiempo t1 for (i = 1; i <= n; i++) // tiempo t2 { s += i * x; // tiempo t3 } return s; // tiempo t4 } La función T(n) del método es: 𝑻 𝒏 = 𝒕𝟏 + 𝒏 ∗ 𝒕𝟐 + 𝒏 ∗ 𝒕𝟑 + 𝒕𝟒
  • 18. Análisis de Algoritmos • Notación O-Grande • Peor de los casos. O(g(x)) • El mas utilizado debido a que indica la complejidad mas alta de algoritmo. • Notación Ω-Grande. • El mejor de los casos. Ω(g(x)) • Notación Θ-Grande • El promedio de los casos. Θ(g(x)) f(x)=O(g(x))
  • 19. Notación O-Grande (Cota superior asintótica) • Indica la cota superior de una función. • Simula el limite máximo de entradas de una función. • Intentar determinar el peor de los casos de una función. • Utilizado para medir complexidad de una función en términos de tiempo o memoria. • Los análisis de realizan cuando n (cantidad de elementos) tiende a infinito. • Basado únicamente en la cantidad de elementos de entrada y los que opera la función. • Independiente del entrono (hardware o software) donde se ejecute.
  • 20. Independencia del entorno Si una función, por iteración, se tarda un tiempo X en una computadora (Laptop) y un tiempo Y en otra computadora (Servidor), la complejidad del algoritmo no cambia. Simplemente esta cambiando el entorno (velocidad de CPU, Lenguaje) de ejecución (c). O(n) * c
  • 21. Cuando Utilizarla • Dispositivos con poca memoria. • Aplicaciones con grandes entradas de datos. ¡Escalabilidad! • Aplicaciones con eficiencia critica. ¡Velocidad! • Aplicaciones en tiempo real. ¡Velocidad! ¡¡¡Siempre!!!
  • 22. Órdenes comunes para la notación O-grande Notación Nombre O(1) orden constante O(log log n) orden sublogarítmica O(log n) orden logarítmica O(n) orden lineal o de primer orden O(n · log n) orden lineal logarítmica O(n2) orden cuadrática o de segundo orden O(n3), ... orden cúbica o de tercer orden, ... O(nc) orden potencial fija O(cn), n > 1 orden exponencial O(n!) orden factorial O(nn) orden potencial exponencial
  • 23. O(1) Orden Constante Significa que la cantidad de datos es irrelevante para el algoritmo, siempre va a tardar el mismo tiempo en terminar. Lamentablemente es difícil que un algoritmo no trivial caiga en esta categoría. Elementos Tiempo 1 k segundos 10 k segundos 100 k segundos Ejemplos: • Acceder al elemento de un arreglo • Insertar en elemento en una lista enlazada • Añadir o sacar un elemento de una pila
  • 24. O(log n) Orden Logarítmico En este caso el tiempo incrementa conforme aumenta el número de elementos, pero de forma logarítmica por lo que para grandes cantidades de datos el tiempo es relativamente corto. Ejemplos: • Búsqueda binaria • Encontrar menor/mayor elemento en un árbol binario de búsqueda • Algunos algoritmos Divide y Vencerás Elementos Tiempo 1 1 segundo 10 2 segundos 100 3 segundos 1000 4 segundos 10000 5 segundos
  • 25. O(n) Orden Lineal Si se incrementa la cantidad de elementos el tiempo incrementa de forma proporcional. Ejemplos: • Recorrer un arreglo o lista enlazada • Búsqueda lineal • Comparar dos cadenas Elementos Tiempo 1 1 segundo 10 10 segundos 100 100 segundos
  • 26. O(n log n) Orden lineal logarítmica Es una combinación de las anteriores. Común en algoritmitos de búsqueda. Ejemplos: • Merge Sort • Heap Sort • Quick Sort Elementos Tiempo 1 1 segundo 10 20 segundos 100 300 segundos
  • 27. O(n log n) Orden lineal logarítmica Es una combinación de las anteriores. Común en algoritmitos de búsqueda. Ejemplos: • Merge Sort • Heap Sort • Quick Sort Elementos Tiempo 1 1 segundo 10 20 segundos 100 300 segundos
  • 28. O(n^2) Orden Cuadrático La cantidad de tiempo que tarda el algoritmo comienza a dispararse, no es muy eficiente con una gran cantidad de datos. Ejemplos: • Bubble sort • Selection sort • Iterar un arreglo de 2 dimensiones Elementos Tiempo 1 1 segundo 10 100 segundos 100 1000 segundos
  • 30. Análisis de Algoritmos. Notación O-Grande • El análisis se realiza por función. • Las asignaciones, operaciones de aritméticas y operaciones lógicas son consideradas de Orden constante O(1). • Los bucles generar la complejidad de los algoritmos. • Si existen bucles anidados, se multiplica la complejidad del bucle interno por la del bucle externo. • Cada instrucción de la función es tomada en cuenta. Se obvian los comentarios. • f(n) esta compuesta de la sumatoria de todos los tiempos de cada instrucción. • Solo se toma en cuenta los elementos con la potencia mas grande.
  • 31. Ejemplo de Análisis a=5 //Constante = 1 b=6 //Constante = 1 c=10 //Constante = 1 for i in range(n): //Bucle hasta n for j in range(n): //Bucle anidado hasta n x = i * i //Constante = 1 y = j * j //Constante = 1 z = i * j //Constante = 1 for k in range(n): // Bucle hasta n w = a*k + 45 //Constante = 1 v = b*b //Constante = 1 d = 33 //Constante = 1 T(n) = 3 + 3n^2 + 2n + 1 T(n) = 3n^2 + 2n + 4 Se eliminan las constantes y se toma el elementó con el coeficiente mas grande. f(n) = n^2 Simplemente, O(n^2) El orden o la complexidad del algoritmo es cuadrático.
  • 32. Complejidad de estructuras de datos comunes
  • 34. Tarea 5 – Lista de Actividades • Agregar la siguiente funcionalidad: • Leer un archivo CSV, que corresponde a la lista de actividades. El archivo debe de tener cabecera. Los valores nulos serán representados por una X. • Graficar la lista de actividades utilizando Graphviz. • Desarrollar en C++. • Utilizarse Docker para ejecutar el programa. Fecha de entrega: Martes 3 de septiembre Método de entrega: Classroom. Enviar enlace del Commit o del repositorio de GitHub.

Notas del editor

  1. Otras medidas utilizadas son: Cantidad de operaciones Cantidad de energía Cantidad de datos transferidos
  2. https://en.wikipedia.org/wiki/Big_O_notation O Omega Theta
  3. https://www.youtube.com/watch?v=8k_LnGbZyI4 https://www.youtube.com/watch?v=MKoM7OO7IKA https://www.youtube.com/watch?v=v4cd1O4zkGw http://thatcsharpguy.com/posts/notacion-o-grande/
  4. https://es.wikipedia.org/wiki/Cota_superior_asint%C3%B3tica
  5. https://www.enrique7mc.com/2016/07/que-es-la-notacion-big-o/
  6. https://www.enrique7mc.com/2016/07/que-es-la-notacion-big-o/
  7. https://www.enrique7mc.com/2016/07/que-es-la-notacion-big-o/
  8. https://www.enrique7mc.com/2016/07/que-es-la-notacion-big-o/
  9. https://www.enrique7mc.com/2016/07/que-es-la-notacion-big-o/
  10. https://www.enrique7mc.com/2016/07/que-es-la-notacion-big-o/
  11. https://www.bigocheatsheet.com/ https://www.desmos.com/calculator/j6d4ekeueo
  12. Solo se toma en cuenta los elementos con la potencia mas grande, debido a que cuando se n tiende a infinito el elemento con la mayor potencia predomina. https://runestone.academy/runestone/static/pythoned/AlgorithmAnalysis/NotacionOGrande.html
  13. https://runestone.academy/runestone/static/pythoned/AlgorithmAnalysis/NotacionOGrande.html
  14. https://www.bigocheatsheet.com/
  15. https://www.bigocheatsheet.com/