Complejidad algorítmica

Slides:



Advertisements
Presentaciones similares
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Advertisements

Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
RAZONES Y PROPORCIONES
Fundamentos para el Cálculo Unidad 3: FUNCIONES Y SUS GRAFICAS : Clase 3.1: Funciones Definición: Dominio y rango 1 FUNDAMENTOS PARA EL CÁLCULO La teoría,
Unidad 4: Abstracciones de Datos y Algoritmia Concepto de Algoritmo. Recursos que requiere un algoritmo. Operación elemental. Principio de Invarianza.
Valores escalados Max Min By P.G.F. ESCALAMIENTO.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Apuntes Matemáticas 2º ESO
SISTEMAS NUMERICOS ING. SUSANA BELTRAN.
L. S. C. A. Raúl Monforte Chulin
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Límites que involucran al Infinito
REFORZAMIENTO EN MATEMÁTICAS
Repaso Programacion en C
TECNOLOGICO DE ESTUDIOS SUPERIORES DE COACALCO
TABLAS DE FRECUENCIAS CON DATOS AGRUPADOS 8° BÁSICO
Microprocesador Estructura interna.
Técnica de evaluación y revisión de programas
Ciclos condicionales y exactos Estructura de control de ciclos
Funciones Potencias, exponenciales y logarítmicas.
PROPORCIONALIDAD 2º ESO
Conceptos básicos de programación
EL CPU.
Hardware Software Sistema Informática Computadora Computación Datos.
Estructuras de control iterativas
Lenguajes y representación técnica
Complejidad Programación II de febrero de 2009.
Estructura de Datos Introducción a:.
Unidades de almacenamiento
Titulación: Grado en Ingeniería de Computadores
CREAR DIAGRAMA DE FLUJO
Unidad 6. Capítulo I. Introducción.
LÓGICA DE PROGRAMACIÓN
EXPRESIONES Una expresión es una forma especial de asignación.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Unidad 2. Algoritmos Unidad 4. Control de flujo
3.1 AREAS.
Funciones Prof. M. Alonso
Algoritmo Capitulo Cinco.
El descuento del precio
FunciÓn PotenciaL, exponencial y logarÍtmica.
U NIVERSIDAD S AN P EDRO F ILIAL B ARRANCA F ACULTAD DE I NGENIERÍA E SCUELA P ROFESIONAL DE I NG. I NFORMÁTICA Y DE S ISTEMAS C URSO : ALGORITMOS Tema.
Matemática Básica para Economistas MA99 Tema: Relaciones. Dominio y Rango UNIDAD 6 Clase 11.1.
TEMA 3. CARACTERÍSTICAS DE UNA VARIABLE ALEATORIA 3. 1
ARQUITECTURA DEL COMPUTADOR Ing. Diana E. López.
Metodología de la Programación
Tema 9. Estructuras de repetición. Clase 3
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
ACCIONES Y ESTRUCTURAS
Definición de derivada La derivada de una función es la razón de cambio de dicha función cuando cambia x, es decir, cuánto cambian los valores de y, cuando.
M. en TI. Omar Téllez Barrientos DOCENTE DE INFORMÁTICA GENERACIÓN DE PSEUDOCÓDIGOS Y ALGORITMOS
Eficiencia de un Algoritmo  El análisis de algoritmos estudia desde el punto de vista teórico los recursos computacionales que necesita un programa para.
Funciones: Manejar todas las operaciones de acceso, lectura y escritura a cada una de las posiciones de la memoria principal donde se almacenan las instrucciones.
PROPIEDADES DE LAS FUNCIONES CONTINUAS MATEMÁTICAS II.
CICLOS EN JAVA FOR, WHILE, DO WHILE Un ciclo en Java o bucle en Java (como prefieras llamarlo) permite repetir una o varias instrucciones cuantas veces.
MC Beatriz Beltrán Martínez Verano 2018
PLANEACIÓN Y CONTROL DE LA PRODUCCIÓN PLAN MAESTRO DE LA PRODUCCIÓN.
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
5.Análisis y diseño desistemas secuenciales (III) Fundamentos de los Computadores Grado en Ingeniería Informática.
GC-F-004 V.01 CENTRO DE INDUSTRIA Y LA CONSTRUCCIÓN REGIONAL TOLIMA.
ALGORITMO DE ORDENAMIENTO POR BURBUJA. El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista.
ORDENAMIENTO POR EL MÉTODO DEL SHAKER SORT (SACUDIDA)
UNIDAD V ESTRUCTURAS REPETITIVAS (Para)
Tema 9. Estructuras de repetición. Clase 2
Estrategia algorítmica
SISTEMAS NUMERICOS “Introducción a la Programación” Rolando Montero.
Guías Modulares de Estudio Cálculo diferencial – Parte B.
UNIVERSIDAD AÚTONOMA DE SINALOA “Facultad de Informática Culiacán”
Transcripción de la presentación:

Complejidad algorítmica Capítulo 8: Complejidad algorítmica

En este capítulo se tratarán los siguientes temas: 8.1 Introducción 8.2 Conceptos iniciales 8.3 Notación O grande (cota superior asintótica) 8.4 Cota inferior (Ω) y cota ajustada asintótica (Θ)

8.1 Introducción La complejidad algorítmica permite establecer una comparación entre algoritmos equivalentes para determinar, en forma teórica, cuál tendrá mejor rendimiento en condiciones extremas y adversas.  Para esto, se trata de calcular cuantas instrucciones ejecutará el algoritmo en función del tamaño de los datos de entrada. Llamamos “instrucción” a la acción de asignar valor a una variable y a la realización de las operaciones aritméticas y lógicas.  Como resultaría imposible medir el tiempo que demora una computadora en ejecutar una instrucción de código, simplemente diremos que cada instrucción demora 1 unidad de tiempo en ejecutarse. Luego, el algoritmo más eficiente será aquel que requiera menor cantidad de unidades de tiempo para concretar su tarea.

8.2 Conceptos iniciales 8.2.1 Análisis del algoritmo de la búsqueda secuencial   int busquedaBinaria(int arr[],int len, int v) { int i = 0; while( i<len && arr[i]!=v ) i = i+1; } return i<len?i:-1;

8.2 Conceptos iniciales 8.2.1 Análisis del algoritmo de la búsqueda secuencial El algoritmo comienza asignando el valor 0 a la variable i (1 unidad de tiempo). Luego, para evaluar la cabecera del ciclo iterativo debe realizar las siguientes instrucciones, cada una de las cuales requiere 1 unidad de tiempo:   i<len Operación lógica arr[i] Indexación del array, operación aritmética que equivale a: arr+i (aritmética de direcciones, módulo 1 de este libro) arr[i]!=v i<len && arr[i]!=v “and”, operación lógica Encontrará el análisis completo sobre este tema en la página 581 del libro.

8.3 Notación O grande (cota superior asintótica) En general todos los algoritmos suelen ser óptimos cuando las condiciones son favorables, pero cuando las condiciones son adversas los problemas de performance se ponen en evidencia. Como decíamos más arriba, una unidad de tiempo por sí misma es imperceptible. Por esto, si un algoritmo requiere 1, 2, 3, o 100 unidades de tiempo más que otro no notaremos ninguna diferencia. Lo importante en este tipo de análisis es poder encontrar una función que acote el crecimiento que, en el peor de los casos, tendrá la complejidad del algoritmo. Al conjunto de funciones que acotan dicho crecimiento lo llamamos O(g(x)) donde x representa la cantidad de elementos que se van a procesar y g(x) es cualquier cota superior de la función de complejidad del algoritmo. Más formalmente, lo plantearemos de la siguiente manera: sea f(x) la función que expresa la complejidad de un algoritmo, entonces la expresión f(x) pertenece a O(g(x)), significa que f(x) crece, a lo sumo, tan rápido como cualquiera de las funciones g del conjunto O. Volviendo al caso de la búsqueda secuencial de un elemento dentro de un array cuya función de complejidad es 6n+7, podemos simplificarlo y simplemente decir que el algoritmo es de orden lineal o que tiene una complejidad lineal. Ahora vamos a analizar el algoritmo de la búsqueda binaria para hallar su orden de complejidad y luego contrastarlo con el de la búsqueda secuencial.

8.4 Cota inferior (Ω) y cota ajustada asintótica (Θ) Así como O(g(x)) representa el conjunto de las funciones que acotan superiormente a la función de complejidad de un determinado algoritmo, Ω(g(x)) representa al conjunto de las funciones que la acotan inferiormente. Además, Θ(g(x)) representa al conjunto de las funciones que crecen a la misma velocidad.  La siguiente tabla nos permitirá ordenar estos conceptos. O(g(x) ) Cota superior asintótica Cualquiera sea la función g(x), crecerá más de prisa o, a lo sumo, igual que f(x). Ω(g(x) ) Cota inferior asintótica Cualquiera sea la función g(x), crecerá más lento o, a lo sumo, tan rápido como f(x). Θ(g(x) ) Cota ajustada asintótica Cualquiera sea la función g(x), crecerá a la misma velocidad que f(x).