Complejidad de los Algoritmos

Documentos relacionados
Tema 01: Fundamentos del Análisis Asintótico de Algoritmos

Complejidad computacional (Análisis de Algoritmos)

La eficiencia de los programas

Análisis de la Complejidad de Algoritmos

Estructura de Datos. Complejidad de Algoritmos. Algoritmo. Algoritmo. Mauricio Solar Lorna Figueroa

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos. Complejidad Computacional

IN34A - Optimización

Introducción al Análisis del Coste de Algoritmos

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS

Problemas computacionales, intratabilidad y problemas NP completos. Febrero Facultad de Ingeniería. Universidad del Valle

Tema 3. Análisis de costes

C a l ses P P y y NP C a l se P C a l se N P N P [No N n o -De D te t rmin i i n s i ti t c i Polynomial-tim i e]

1. Introducción al análisis de algoritmos

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.

Notación Asintótica. Programación Avanzada

Diseño y Análisis de Algoritmos

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande

Introducción y Comportamiento Asintótico

Estructuras de Datos y Algoritmos

Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani

ALGORITMOS INTRODUCCIÓN ALGORITMOS INTRODUCCIÓN AL ANÁLISIS Y AL DISEÑO DE AL ANÁLISIS Y AL DISEÑO DE UNIVERSIDAD AUTÓNOMA METROPOLITANA

Problemas computacionales, intratabilidad y problemas NP completos. 26 de agosto de Facultad de Ingeniería. Universidad del Valle

Análisis de Algoritmos

Coordinación de Ciencias Computacionales INAOE. Teoría de Autómatas y Lenguajes Formales. Temario detallado para examen de ingreso 2012

Algoritmo Cuántico de Búsqueda Paralelo

Análisis y Diseño de Algoritmos

Notación Asintótica 2

TÉCNICAS DE ANÁLISIS DE ALGORITMOS Miguel Angel Norzagaray Cosío Universidad Autónoma de Baja California Sur 1

Análisis de algoritmos

Análisis de algoritmos.

Parte I: El computador y el proceso de programación

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Guía práctica de estudio 03: Algoritmos

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco)

Algoritmos y Complejidad

Introducción a las Ciencias de la Computación

4.1 CONGRUENCIA ENTRE LOS OBJETIVOS DEL PLAN DE ESTUDIOS Y EL PERFIL DE EGRESO CON LAS LGAC:

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE

Introducción al análisis de algoritmos

Algoritmos de Ordenación

8. Complejidad Computacional

Tema 2 Introducción a la Programación en C.

PRECALCULO INSTITUTO TECNOLÒGICO DE LAS AMÈRICAS CARRERA DE TECNÓLOGO EN MECATRONICA. Precálculo. Nombre de la asignatura: MAT-001

Splines (funciones polinomiales por trozos)

1. Los números racionales. 2. Operaciones con racionales. 3. Clasificación de los decimales. 4. Irracionales. (representación, orden).

Clases de complejidad computacional: P y NP

INTRODUCCION A LA PROGRAMACION (C.U.) PROGRAMACION (T.I.G.)

Área Académica: LICENCIATURA EN ADMINISTRACIÓN II. Tema: EVOLUCIÓN DEL PENSAMIENTO ADMINISTRATIVO. Profesor: IGNACIO SARMIENTO VARGAS

E77 - Gestión de Recursos de la Información. Tema 1 - Métricas del Proyecto de Software

Reconocimiento de Patrones DRA. LETICIA FLORES PULIDO

METODO DE LA BISECCIÓN Si f : a, b es continua con f a f b 0,el procedimiento de la

como les va con las practicas?

CONTENIDOS MÍNIMOS del ÁREA DE MATEMÁTICAS

Guía práctica de estudio 03: Algoritmos

PRECALCULO. Nomenclatura del Curso : MAT-001. Nombre del Curso : Precalculo. Prerrequisitos : Ninguno. Número de Créditos : 5. Horas Teóricas : 45

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45

Introducción a la Investigación Operativa

INSTITUTO TECNOLOGICO DE LAS AMERICAS CARRERA DE TECNOLOGO EN DESARROLLO DE SOFTWARE PRECALCULO

Algoritmos sobre secuencias y conjuntos de datos

Análisis de algoritmos

DIPLOMADO. Evaluación de la Calidad de la práctica docente para la implementación del Nuevo Modelo Educativo en Escuelas de Ingeniería del I.P.N.

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

Breve introducción a la Investigación de Operaciones

Complejidad de algoritmos recursivos

Análisis de algoritmos

Tema 9. Recursividad

Programación II Recursividad Dr. Mario Rossainz López

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

CURSO CONTENIDOS MÍNIMOS. Los números naturales. Operaciones y problemas. Cálculo y operaciones de potencias y raíces cuadradas.

Estructuras de Datos y Algoritmos

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

Tiempo de Ejecución. Midiendo el Tiempo de Ejecución

Ingeniería Informática

La función exponencial se define con una base constante cuyo exponente es el valor variable, es decir:

Capítulo 8 Teoría de la Complejidad Algorítmica

PERFIL PROFESIOGRÁFICO PARA IMPARTIR LAS ASIGNATURAS DE LA LICENCIATURA EN INGENIERÍA EN COMPUTACIÓN (PLAN DE ESTUDIOS 2005)

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III

Tema: Programación Dinámica.

Modelos de Informática Teórica Capítulo 2 - Clases de Complejidad

INDICADORES DE GESTIÓN

FECHA: 6 DE MARZO AL 15 DE DICIEMBVRE DE 2017.

Procesamiento de voz - Reconocimiento de voz II

Transcripción:

Que es un Algoritmo? Complejidad de los Algoritmos Webster: cualquier método especial para resolver cierta clase de problemas. Horowitz: método preciso utilizable en una computadora para la solución de un problema. CONJUNTO FINITO DE PASOS UTILIZADO POR UNA COMPUTADORA PARA RESOLVER UN PROBLEMA Preguntas Para todos los problemas, existe al menos un algoritmo? Si existen varios algoritmos para un problema, Cómo hacer una selección en términos de eficiencia? Características de los Algoritmos Cada paso requiere una o más operaciones Operaciones definida (No ambiguas): > 5/0, 6 + 7 ó tal vez 8: No se permiten Cada paso puede realizarse en una cantidad finita de tiempo. Un algoritmo produce una o más salidas y requiere cero o más entradas (externas). Un algoritmo siempre termina en un número finito de pasos

Características Sin ambigüedad. Efectividad: tiempo finito de cómputo. Computabilidad. Alg que sea más listo que los humanos Complejidad. Claridad: programación estructurada. Áreas de Estudio de los Algoritmos Cómo construir Algoritmos? -->Enfoques Divide y vencerás, Programación dinámica, Exacta, estocástica, de vecindades, Cómo expresar algoritmos? -->Enfoques Programación estructurada, de objetos, de agentes, funcional, lógica,.. Cómo validar algoritmos? -->Caminatas, verificación formal, --> Cómo probar un programa? Cómo analizar algoritmos? -->Complejidad computacional, amigabilidad, robustez,.. Análisis de Algoritmos Estudia la complejidad espacial y temporal de los algoritmos Y las otras propiedades relevantes!!! Tareas en el Análisis de Algoritmos Determinar qué operaciones se emplean y su costo relativo. Determinar conjuntos de datos para exhibir todos los patrones posibles de comportamiento. Análisis a priori: se determina una función (de ciertos parámetros) que acote el tiempo de cómputo del algoritmo. Análisis a posteriori: estadísticas reales sobre tiempo y memoria.

Desempeño de Algoritmos Tipos de Algoritmos Algoritmos determinísticos: El resultado de cada operación está definido en forma única. Eficiencia --> Rapidez Eficacia --> Precisión Algoritmos no-determinísticos. El resultado de cada operación esta determinado por un conjunto de posibilidades. Algoritmo polinomial. Es un algoritmo de complejidad polinomial o inferior. Algoritmo No-Polinomial. Es un algoritmo de complejidad exponencial o mayor. Complejidad Computacional Clasifica los algoritmos en buenos o malos. Clasifica los problemas de acuerdo a la dificultad inherente de resolverlos. Complejidad: Temporal: Tiempo requerido por un algoritmo para encontrar la solución. Complejidad Temporal Asintótica (Espacial). comportamiento límite conforme el tamaño del problema se incrementa: determina el tamaño del problema que puede ser resuelto por un algoritmo. Espacial: Almacenamiento requerido por un algoritmo para encontrar la solución.

Complejidad Temporal Criterio de Análisis Parámetro de medición Se toma el tamaño de la entrada n (descripción de la instancia) para medir los requerimientos de tiempo de un algoritmo. El tiempo de ejecución se describe como una función de la entrada T(n) Ejemplo: T(n)=n 2 +2n Análisis del peor caso Se toma el tiempo de ejecución del peor caso. Ejemplo: ALGORITMO TIEMPO suma=0; 1 for(i=1;i<=n;i++) 2n+1 suma+=i; 2n T(n) = 4n+2 Orden de un Algoritmo Comparación de Orden El orden de un algoritmo indica el grado de complejidad de un algoritmo y que sirve de base para comparar su eficiencia. Ejemplo: Un algoritmo cuya función de tiempo es : T(n)=(n 2 -n)/2 Es de orden O(n 2 )

NOTACION ASINTOTICA O(n) O(n 2 ): si un algoritmo de complejidad temporal asintótica para un problema de tamaño n procesa entradas en c n 2, su complejidad es O(n 2 ). Una función f(n) es O(g(n)) si f(n) <= c g(n) C = constante Notación O(n) Conforme es mayor la velocidad de las computadoras: Los problemas a resolver son mayores. El análisis de la complejidad es más importante. Notación con O(n) O(1) CONSTANTE O(log log(n)) Log log(n) O(log(n)) Logarítmica O(n) Lineal O(nlog(n)) nlog (n) O(n 2 ) Cuadrática O(n 3 ) Cúbica O (n m ) Polinomial O(m n ) exponencial O(n!) factorial Buenos y Malos Algoritmos Convención 1: Todos los algoritmos, desde constantes hasta polinomiales, son polinomiales. Convención 2 : Todos los algoritmos exponenciales y factoriales, son exponenciales. Convención 3 : Los algoritmos polinomiales son "buenos" algoritmos. Convención 4: Los algoritmos exponenciales son "malos" algoritmos.

Crecimiento de Funciones Polinomiales y Exponenciales Tiempo de evaluación de la función en unidades de tiempo, en función del tamaño de la entrada n Función Valores Aproximados n 10 100 1000 n log n 33 664 9966 n 3 1,000 1,000,000 10 9 10 6 n 8 1,014 10 22 10 30 2 n 1,024 1.27 x 10 30 1.05 x10 301 n log n 2,099 1.93 x 10 13 7.89 x 10 29 n! 3,628,800 10 158 4X10 2567 Teorema: SI A(n) = a m n m +...+ a 1 n + a 0, entonces A(n) = O( n m ) Tipos de Algoritmos Algoritmos de tiempo polinomial: Cuya función de tiempo tiene un orden O(n x ). Ejemplo: t(n) = 60n 2 + 5n + 1. Peor Caso Tiempo de evaluación de t(n) en unidades de tiempo en función del tamaño de la entrada n Algoritmos de tiempo exponencial: Cuya función de tiempo tiene un orden O(x n ) n 10 t(n) = 60n 2 +5n+1 6,051 60n 2 6,000 Un problema está bien resuelto hasta que exista un algoritmo de tiempo polinomial para él. 100 1,000 10,000 600,501 60,005,001 6,000,050,001 600,000 60,000,000 6,000,000,000

Efecto de la Tecnología Función n n log n 0.948 x 10 11 0.87 x 10 12 n 2 10 6 3.16 x 10 6 n 3 10 4 2.15 x 10 4 10 8 n 4 10 18 2 n 40 43 10 n 12 13 N log n 79 95 n! Tamaño de la Instancia Solucionada en 1 Día 10 12 14 Tamaño de la Instancia Solucionada en un Día en una Computadora 10 Veces Más Rápida 10 13 15 Modelos de Cómputo Máquina Determinista: Es aquella en que para una misma entrada, siempre se obtiene el mismo resultado. Máquina no-determinista: Es aquella que para una misma entrada, se pueden obtener resultados diferentes. Fase de adivinación+fase de verificación