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.

Slides:



Advertisements
Presentaciones similares
¿ Que es la complejidad de un algoritmo ?
Advertisements

Material de apoyo Unidad 1 Estructura de datos
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )
Introducción al análisis de algoritmos
4.  Métodos matemáticos.
Análisis de Algoritmos
Tema 7: NOTACIONES ASINTÓTICAS
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Applications Development I 6.1 Foro Tomas Anzalotta Alvarado.
INTRODUCCION A LOS SISTEMAS DE COMPUTO ARQUITECTURA VON NEUMAN Ing. David Gonzalez.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Física General.
Funciones.
UPC Derivada de una función. Aplicaciones
DE PRIMERO Y SEGUNDO GRADO Diseño: M. en C. Juan Adolfo Alvarez Mtz.
Estructuras de Control en Visual Basic.net
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Estructuras de Control.
VENTAJAS DEL ALGORITMO LMS
Desigualdades.
TEOREMA FUNDAMENTAL DEL CALCULO
Programación 1 Curso: 5to. I TT
Ciclos condicionales y exactos Estructura de control de ciclos
Unidad 5. Capítulo VI. Sistemas lineales no homogéneos.
Conceptos básicos de programación
Estructuras de control iterativas
Estructuras de Control en Visual Basic.net
Complejidad Programación II de febrero de 2009.
Universidad Tecnológica del Perú
Relaciones y Funciones
ESTRUCTURAS DE CONTROL REPETITIVAS
Unidad 6. Capítulo IV. Puntos ordinarios y puntos singulares.
Unidad 6. Capítulo I. Introducción.
Tele clase 7 Cálculo de valores y vectores propios.
LÓGICA DE PROGRAMACIÓN
Unidad 2. Algoritmos Unidad 4. Control de flujo
CONCEPTOS PRELIMINARES (Cont)
Fundamentos de Programación. Estructuras de Control
Límites de sucesión INTEGRANTES : MIGUEL ANGEL ANTONIO PACHECO
Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.
ESTRUCTURAS DE CONTROL EN VISUAL BASIC.NET Prof.: Rafael Mourglia.
Estructuras de control Resolución de problemas y algoritmos
EL ÁLGEBRA.
PROGRAMACION: Que es un computador: Es un aparato electrónico que tiene el fin de recibir y procesar datos para realización de diversas operaciones..
HERRAMIENTAS DE PROGRAMACIÓN
Introducción a las ciencias de la computación Antonio López Jaimes
Estructuras de Repetición Pseudocodigo1 Estructuras de Repetición Algoritmos Mientras Hacer-Mientras Para.
Área Académica: Matemáticas Tema: FUNCIONES Profesor: Jorge Pérez Cabrera Periodo: Enero-Junio 2015.
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
Fundamentos de programación
Fundamentos de la Programación I
Curso de Programación Estructurada
UNIDAD No. 2 Métodos de integración
Teoría Nº 3 Conceptos Básicos de Algoritmia Estructuras de Control
SERIES DE TIEMPO. Concepto Una serie de tiempo es un conjunto de observaciones de un fenómeno tomadas en tiempos específicos, generalmente a intervalos.
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
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.
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.
 CALCULO DIFERENCIAL.  Matemáticamente la derivada de una función es una medida de la rapidez con la que cambia el valor de dicha función matemática,
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
Informática Ingeniería en Electrónica y Automática Industrial
Complejidad algorítmica
Estructuras de Repetición Algoritmos
REGRESIONINTERPOLACION Los Métodos Numéricos Métodos mas utilizados Ajuste de Curvas.
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
Prof: Javier Serrano Pérez Ingeniero Mecánico Métodos Numéricos, Mecánica de Materiales, Dibujo Mecánico, Incorporación de materiales Proyectos de Investigación.
INVESTIGACION DE OPERACIONES I UNIDAD I. HISTORIA La primera actividad de Investigación de Operaciones se dio durante la Segunda Guerra Mundial en Gran.
ORDENAMIENTO POR EL MÉTODO DEL SHAKER SORT (SACUDIDA)
Transcripción de la presentación:

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 Recursos físicos necesarios para que un programa se ejecute. – Parámetros: El tiempo de ejecución La cantidad de memoria (espacio) ¿cual es el tamaño del mayor problema que puedo resolver en T segundos y/o con M bytes de memoria?

Tiempo de Ejecución N  tamaño (por número de datos) N depende de la naturaleza del problema. – Vector  N: su longitud; – Matriz  N: elementos que la componen; – Grafo  N: nodos – Archivo  N: de registros

Tiempo de ejecución (cont.) Tiempo de ejecución de un programa en función de N, T(N). Función: – Puede medir físicamente (ejecutando el programa, reloj en mano) – Calcularse sobre el código contando instrucciones a ejecutar y multiplicando por el tiempo requerido por cada instrucción. – Así, un trozo sencillo de programa como – S1; for (int i= 0; i < N; i++) S2; requiere T(N)= t1 + t2*N t1: tiempo que lleve ejecutar la serie "S1" de sentencias T2: el que lleve la serie "S2".

Sentencia condicional Las sentencias efectivamente ejecutadas dependen de los datos concretos que se le presenten. T(N)  rango de valores Tmin(N) <= T(N) <= Tmax(N) los extremos son conocidos: "caso peor“ "caso mejor". Entre ambos  "caso promedio" o más frecuente.

Asíntotas Analizar la potencia de los algoritmos, independientemente  de la potencia de la máquina que los ejecute  habilidad del programador que los codifique. Especialmente cuando el algoritmo se aplica a problema grandes. Casi siempre los problemas pequeños se pueden resolver de cualquier forma. Las limitaciones  al atacar problemas grandes. No debe olvidarse que cualquier técnica de ingeniería, si funciona, acaba aplicándose al problema más grande que sea posible.

Órden de complejidad Conjunto de funciones que comparten un mismo comportamiento asintótico: – N tiende a infinito se denominan O, existiendo una infinidad de ellos. Para cada uno de estos conjuntos: – Se identifica un miembro f(n) que se utiliza como representante de la clase, – hablándose del conjunto de funciones "g" que son del orden de "f(n)"

Órden de complejidad (cont.) El conjunto O(f(n)) es el de las funciones de orden de f(n), que se define como O(f(n))= {g: INTEGER -> REAL|  las constantes k y N0 tales que para todo N > N0, g(N) <= k*f(N) } en palabras, O(f(n)) esta formado por aquellas funciones g(n) que crecen a un ritmo menor o igual que el de f(n). De las funciones "g" que forman este conjunto O(f(n)) se dice que "están dominadas asintóticamente" por "f", en el sentido de que para N suficientemente grande, y salvo una constante multiplicativa "k", f(n) es una cota superior de g(n).

Órdenes de Complejidad O(1)orden constante O(log n)orden logarítmico O(n)orden lineal O(n log n) O(n 2 )orden cuadrático O(n a )orden polinomial (a > 2) O(a n )orden exponencial (a > 2) O(n!)orden factorial

Reglas Prácticas Sentencias: – sentencias sencillas: asignación, entrada/salida, etc. siempre y cuando no trabajen sobre variables estructuradas cuyo tamaño este relacionado con el tamaño N del problema  O(1). – secuencia (;): La complejidad de una serie de elementos de un programa es del orden de la suma de las complejidades individuales, aplicándose las operaciones arriba expuestas. – decisión (if): La condición suele ser de O(1), complejidad a sumar con la peor posible, bien en la rama THEN, o bien en la rama ELSE. En decisiones múltiples (ELSE IF, SWITCH CASE), se tomará la peor de las ramas.

Reglas Prácticas (cont.) – bucles En los bucles con contador explícito – Casos: » el tamaño N forme parte de los límites » o que no. a) Si el bucle se realiza un número fijo de veces, independiente de N, entonces la repetición sólo introduce una constante multiplicativa que puede absorberse. Ej.- for (int i= 0; i K*O(1) = O(1) b) Si el tamaño N aparece como límite de iteraciones... Ej.- for (int i= 0; i N * O(1) = O(n)

Reglas Prácticas (cont.) for (int i= 0; i < N; i++) { for (int j= 0; j < N; j++) { algo_de_O(1) } } entonces N * N * O(1) = O(n 2 ) – llamadas a procedimientos viene dada por la complejidad del contenido del procedimiento en sí. El coste de llamar no es sino una constante que podemos obviar inmediatamente dentro de nuestros análisis asintóticos. El cálculo de la complejidad asociada a un procedimiento puede complicarse notablemente si se trata de procedimientos recursivos. Es fácil que tengamos que aplicar técnicas propias de matemáticas discretas.

Ejemplo Como medida del tamaño tomaremos para N el grado del polinomio  número de coeficientes en C. El bucle más exterior (1) se ejecuta N veces. El bucle interior (2) se ejecuta, respectivamente: N veces = N*(1+N)/2 => O(n 2 )