Análisis de Algoritmos Tiempo de ejecución de un algoritmo Prof.: Ricardo Botero Tabares Ingeniería en Software Facultad de Ingeniería 2014.

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
Advertisements

Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
Estructuras de Repetición Algoritmos
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
UNIDAD II: ALGORITMOS Y LENGUAJES
¿ Que es la complejidad de un algoritmo ?
Elementos básicos del Lenguaje
Técnico en programación de Software
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Tipo de Dato Abstracto Tipos de datos:
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
INFORMATICA I Funciones CLASE 13.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Filtraje Digital CAPITULO 2 Ingeniería en Automática Industrial
Evaluacion de algoritmos
Ingeniería de sw.
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Facultad de Ingeniería y Arquitectura Introducción a la Computación 2007 – I (11va Semana) Lunes 14 de Mayo Ing. Juan José Montero Román.
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.
Estructuras de Repetición
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
Tema 3. Optimización de Código
Medición y rendimientos de Algoritmos
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Fundamentos de Programación
PRINCIPIOS DE PROGRAMACION ESTRUCTURADA
Estructuras de Iteracion (Repetitivas ) while , for,, do-while
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Análisis de Algoritmos
Problemas, algoritmos y programas: Modelar: Simular o programar su solución en un computador. Algoritmos: Es un conjunto finito, y no ambiguo de etapas.
Cátedra de COMPUTACIÓN FACULTAD DE INGENIERÍA - UNA La mejor manera de aprender Programación es PROGRAMANDO !!!!!! CLASE Nro. 1.
Introducción a las Funciones Prof. Evelyn Dávila
Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Introducción al análisis de algoritmos
Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías. Proyecto PAPIME PE
ESTRUCTURA DE DATOS ESD-243
Introducción al análisis de algoritmos
Fundamentos de programación Organización de una computadora.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
PENSAMIENTO ANALÍTICO SISTÉMICO DAISY KATERINE RODRÍGUEZ DURÁN
Análisis de Algoritmos 2
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 2: Orden de algoritmos.
Estructuras de Repetición (Hacer-Mientras)
Capítulo 6. ANÁLISIS DE ALGORITMOS
Análisis de algoritmos Generalidades
Estructuras de Repetición (Hacer-Mientras)
Estructuras de Datos y Algoritmos Introducción. Texto Requerido: Carrano & Prichard: Data Abstraction and Problem Solving with Java; Walls and Mirrors,
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Análisis de Algoritmos Tiempo de ejecución de un algoritmo Prof
Lógica Computacional.
Programación Básica con NQC Patricio A. Castillo 12/04/2008.
Computación I (CI-2125) Clase 2 Prof. Mireya Morales.
Elaboración de algoritmos usando lógica de programación
Presentado por: carolina gallardo Universidad metropolitana de B/quilla.
Escuela de Ciencias Basicas, Tecnología e Ingeniería
Ingeniería en Software Facultad de Ingeniería 2014
Introducción a los TADs
UNIDAD 1 Introducción a la Programación OBJETIVO: El estudiante identificará los elementos Básicos de todo lenguaje de programación. Comparando las posibles.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
EL TIPO DE DATO LOGICO y constantes.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
QUE ES PNL. CONCEPTO La programación neurolingüística es un proceso mental, mediante el cual utilizamos los sentidos con los cuales percibimos el mundo,
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Transcripción de la presentación:

Análisis de Algoritmos Tiempo de ejecución de un algoritmo Prof.: Ricardo Botero Tabares Ingeniería en Software Facultad de Ingeniería 2014

Tiempo de ejecución de un algoritmo Al evaluar un algoritmo se debe tener en cuenta su eficiencia en cuanto a: – consumo de memoria y – tiempo de ejecución, teniendo en cuenta el tamaño de la entrada de datos. 2

La eficiencia en cuanto al consumo de memoria: hoy es irrelevante. La eficiencia en cuanto al tiempo de ejecución es relevante (a pesar de las altas velocidades del procesador), sobre todo en algoritmos relacionados con el control de procesos en tiempo real y en aquellos cuya frecuencia de ejecución es alta. Tiempo de ejecución de un algoritmo 3

¿Cómo medir el tiempo de ejecución de un algoritmo? Existen dos formas: a posteriori y a priori. – A posteriori Solución del problema (Identificación de requisitos, abstracción de clases, definición de las responsabilidades de las clases, escritura de seudocódigo OO), edición/compilación/ejecución del programa en una máquina y lenguaje determinado (aplicando pruebas continuas o paralelas).  Se depende de la calidad del compilador y de la máquina, por tanto es subjetiva la evaluación del algoritmo. Tiempo de ejecución de un algoritmo 4

– A priori La evaluación del algoritmo se realiza con independencia del lenguaje de programación en el cual se codifique y de la máquina en la cual se ejecute. Para ello se deben definir dos conceptos básicos: Contador de frecuencias y orden de magnitud. Contador de Frecuencias: es una expresión algebraica que indica el número de veces que se ejecutan las instrucciones de un algoritmo. Tiempo de ejecución de un algoritmo 5

Algoritmo 1: void metodo1(){ int a, b, c; double d; Consola.imprimir(“Ingrese dos números enteros:”); a = Consola.leerEntero(); b = Consola.leerEntero(); c = a + b; d = (c % a) / 7; Consola.imprimir (“Suma de ambos números: ” + c); Consola.imprimir (“(” + c + “ % ” + a + “) / 7 = ” + d); }       1 _____ CF = 7 T metodo1 ( ) es O(1) Tiempo de ejecución de un algoritmo 6

Algoritmo 2: void metodo2(){ int acum, cont, n; Consola.imprimir(“Ingrese un número entero:”); n = Consola.leerEntero(); suma = 0; cont = 1; while (cont <= n){ suma = suma + cont; cont = cont + 1; } Consola.imprimir(“Contador = ” + cont + “\nAcumulador = ” + suma); }     n  n  n  n  1 _____ CF = 4n + 6 T metodo2 (n) es O(n) Tiempo de ejecución de un algoritmo 7

Algoritmo 3: void metodo3(int n, int m){ int acum = 0, i = 1, j, cont; while (i <= n){ cont = 0; j = 1; while (j <= m){ cont = cont + 1; j = j + 1; } acum = acum + cont; i = i + 1; } Consola.imprimir(n + “\n” + m + “\n” + acum); }   n  n  n  (m +1) * n  m * n  m * n  m * n  n  n  n  1 ______________ CF = 4 (n * m) + 7n + 4 T metodo3 (n, m) es O(n * m) Tiempo de ejecución de un algoritmo 8

Algoritmo 4: void metodo4(int n){ int sum = 0, i = 1, tot, j; while (i <= n){ tot = 0; j = 1; while (j <= n){ tot = tot + 1; j = j + 1; } sum = sum + tot; i = i + 1; } Consola.imprimir(n + “\n” + sum); }   n  n  n  (n +1) * n  n  n  n  n  n  n  1 ________________ CF = 4n 2 + 7n + 4 T metodo4 (n) es O(n 2 ) Tiempo de ejecución de un algoritmo 9

Orden de magnitud: El orden de magnitud define la eficiencia de un algoritmo en cuanto al tiempo de ejecución. Se obtiene a partir del contador de frecuencias, así: De los términos resultantes, se eliminan los coeficientes, las constantes y los términos negativos; si los términos son dependientes entre sí, se elije el mayor de ellos. Si el contador de frecuencias es una constante, el orden de magnitud es O(1), es decir, constante. Tiempo de ejecución de un algoritmo 10

Teniendo en cuenta lo anterior, los órdenes de magnitud de los algoritmos dados son: – Algoritmo 1: O(1) – Algoritmo 2: O(n) – Algoritmo 3: O(n * m) – Algoritmo 4: O(n 2 ) Tiempo de ejecución de un algoritmo 11

Órdenes de magnitud comunes Orden de magnitudRepresentación ConstanteO(1) LogarítmicoO(log 2 (n)) LinealO(n) SemilogarítmicoO(nlog 2 (n)) CuadráticoO(n 2 ) CúbicoO(n 3 ) ExponencialO(2 n ) Tiempo de ejecución de un algoritmo 12

Análisis de Algoritmos Tiempo de ejecución de un algoritmo Prof.: Ricardo Botero Tabares Ingeniería en Software Facultad de Ingeniería 2014