Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 3: Análisis de algoritmos (parte I)

Slides:



Advertisements
Presentaciones similares
ESTRUCTURAS DE CONTROL
Advertisements

Análisis Sintáctico Capítulo 4.
Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Programación de Computadores
Programación de Computadores
Clase 2 Tipos de datos Asignación de valores Estructura IF Ejercicios
Programación Básica con NQC Pedro F. Toledo – Patricio Castillo 18/08/2006.
Complejidad de Algoritmos
Complejidad Algorítmica: Análisis de algoritmos
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Metodología de la Programación
Estructura General de Un Programa Programación Estructurada
Estructuras de Control
Bloque 2: Divide y Vencerás
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introducción Unidad 5: Matemáticas necesarias.
Unidad 4: Análisis de algoritmos (parte II)
FUNCIONES EN C.
EXCEPCIÓN DE ERRORES.
Programación 1 Introducción
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Algoritmos de Búsqueda
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Estructuras de control
ALGORITMOS 2 DIGITALES II
Solución de problemas por búsqueda inteligente
C lase 10 COMPUTACION /17/2014Computacion - Fac. Ingeniería2  Ademas de los ya vistos (tipos simples), puede usarse como parámetros variables.
Tema 3. Optimización de Código
1 Procedimientos Es un conjunto de sentencias incluidas entre las declaraciones Sub o Function y End Sub/Function VB utiliza varios tipos de procedimientos:
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Fundamentos de Programación
Estructuras de Control
Programación de Computadores
Sesión 6 Sentencias de Repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Semana 5 Subprogramas..
Matemáticas para Ciencias de la Computación MCC3182 Profesor: Claudio Gutiérrez Soto Página Web:
Programación en Matlab
Análisis de Algoritmos
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )

ESTRUCTURAS DO-WHILE Y FOR.
INGENIERIA EN SISTEMAS COMPUTACIONALES
Introducción al análisis de algoritmos
Algoritmos.
Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías. Proyecto PAPIME PE
Capítulo 1 “Elementos de Programación”
Capítulo 2 – Estructuras de Control
Programación I Universidad Nacional de Luján
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Material de apoyo Unidad 4 Estructura de datos
Análisis de algoritmos
Informática Ingeniería en Electrónica y Automática Industrial
Teoría – Alejandro Gonzalez
INVESTIGACION DE OPERACIONES
Estructuras de Control.
Estructura general de un programa en el servidor de Bases de Datos.
Tema 6: Estructuras de Control
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 2: Orden de algoritmos.
Análisis de Algoritmos
Estructuras de control Resolución de problemas y algoritmos.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
Sesión 13: Python (4) – Estructura Repetición. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
Diseño y análisis de algoritmos Análisis de Algoritmos II.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
U2 Tipos de datos, referenciación y errores 1. Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 3: Análisis de algoritmos (parte I)

MTP: Metodología y Tecnología de la Programación 2 Introducción  El análisis de algoritmos consiste en determinar las funciones t n que describen alguna propiedad de interés, habitualmente  Tiempo consumido  Espacio utilizado  Etc. (casos particulares)  El análisis posee dos perspectivas distintas  Cómo debe realizarse, esto es, cómo determinar las funciones t n  Qué tipo de análisis es conveniente realizar, esto es, desde qué punto de vista deseamos conocer una determinada propiedad del algoritmo  Se describirá en la Parte II de la presente unidad didáctica

MTP: Metodología y Tecnología de la Programación 3 Determinación de las funciones t n  Lamentablemente, no existe una fórmula o procedimiento de tipo general que permita identificar las funciones t n de un algoritmo  La identificación exitosa de dichas funciones es altamente heurística y depende, en gran medida, de la experiencia  En general, para identificar la función t n, deberemos  Identificar la operación básica de interés  Recordemos que una operación básica es aquella tal que el trabajo total realizado por el algoritmo (en tiempo o espacio) es proporcional al número de veces que se ejecuta dicha instrucción  Identificar el parámetro “n” de entrada  Analizar, desde dentro hacia fuera, las estructuras de control que producen la ejecución repetida de dicha operación básica

MTP: Metodología y Tecnología de la Programación 4 Ejemplo function busquedaLineal(a:array[1..n] of integer; x:integer):integer; var i:integer; begin i := 1; while i x do i:= i+1; if i > n then busquedaLineal:= 0 else busquedaLineal:= i end; n Posibles operaciones básicas Estructuras de control involucradas

MTP: Metodología y Tecnología de la Programación 5 Análisis en función de las estructuras de control  Se deben considerar  Instrucciones simples  Secuencia  Estructuras de control  Alternativas  If  Switch  Repetitivas  For / While / Repeat  Invocación procedimental

MTP: Metodología y Tecnología de la Programación 6 Análisis: Secuencia  Una instrucción cualquiera tiene una complejidad  t n (instrucción) = 1 si  Coindice con la operación básica y  No es una estructura de control o invocación procedimental  En caso contrario, t n (instrucción) = 0 (en realidad, es una constante de valor más o menos alto, pero no es relevante a efectos de análisis  Un bloque de código de la forma: tiene como t’ n (bloque) = t’ n (instrucción-1)+ t’ n (instrucción-2)+... t’ n (instrucción-n) BEGIN instrucción-1; instrucción-2;... instrucción-n END;

MTP: Metodología y Tecnología de la Programación 7 Análisis: Alternativa (IF)  Una alternativa (IF) tiene la forma: t n (IF) = max{t’ n (condicion) + t’ n (acción-then), t’ n (condicion) + t’ n (acción-else)} IF condicion then accion-then else accion-else;

MTP: Metodología y Tecnología de la Programación 8 Ejemplo  Marcamos con la operación básica t n (IF) = max{t’ n (condicion) + t’ n (acción-then), t’ n (condicion) + t’ n (acción-else)} = max{t’ n ( i > n ) + t’ n ( busquedaLineal:= 0 ), t’ n ( i > n ) + t’ n ( busquedaLineal:= i )} = max{1 + 0, 1 + 0} = 1 if i > n then busquedaLineal:= 0 else busquedaLineal:= i

MTP: Metodología y Tecnología de la Programación 9 Análisis: Alternativa (SWITCH)  Es similar a un IF. Se indica únicamente por claridad  Una alternativa (SWITCH) tiene la forma: t n (IF) = max{t’ n (condicion) + max{t’ n (bloque-i)}, t’ n (condicion) + t’ n (acción-else)} SWITCH condicion OF caso-1: bloque-1; caso-2: bloque-2;... caso-n: bloque-n; else accion-else END;

MTP: Metodología y Tecnología de la Programación 10 Análisis: Repetitivas (FOR/WHILE/REPEAT)  Son reducibles a bucles WHILE  Únicamente se estudiará este caso  Un bucle (WHILE) tiene la forma: t n (WHILE) = iteracciones * (t’ n (condicion) + t’ n (bloque))  Nótese que “iteracciones” puede o no depender de n, por lo que esta expresión es simplicifable WHILE condicion DO BEGIN bloque END;

MTP: Metodología y Tecnología de la Programación 11 Ejemplo  Marcamos con la operación básica t n (WHILE) = iteracciones * (t’ n (condicion) + t’ n (bloque)) = n * (t’ n ( i x ) + t’ n ( i:= i+1 )) = n * (0 + 1) = n function busquedaLineal(a:array[1..n] of integer; x:integer):integer; var i:integer; begin... while i x do i:= i+1;

MTP: Metodología y Tecnología de la Programación 12 Análisis: Invocación procedimental  Una invocación procedimental implica la ejecución de un subprograma  Hay que distinguir dos casos  El subprograma no es directa o indirectamente recursivo  t n (invocación) = t’ n (subprograma)  El programa es directa o indirectamente recursivo  Realizar un análisis del subprograma utilizando técnicas de recurrencia

MTP: Metodología y Tecnología de la Programación 13 Ejemplo  Las operaciones básicas están dentro de ambos subprogramas (cada uno tendrá una operación básica particular) t nk ( previofactorial ) = t’ k ( busquedaLineal ) + t’ n ( factorial ) = k + t’ k ( factorial ), siendo t’ k ( factorial ) = 1+t’ k-1 ( factorial ) y t’ k = k t’ 1 = 1 function previofactorial (a:array[1..k], i:integer):integer; var n:integer; begin n := busquedaLineal(a, i); previoFactorial := factorial(n) end;

MTP: Metodología y Tecnología de la Programación 14 Notas finales  En ocasiones, no se busca determinar la complejidad temporal o espacial del algoritmo, sino la función de complejidad de alguna operación particular  Ejemplo: Numero de comparaciones  Solución: Varias operaciones básicas  t n = 2n+1 function busquedaLineal(a:array[1..n] of integer; x:integer):integer; var i:integer; begin i := 1; while i x do i:= i+1; if i > n then busquedaLineal:= 0 else busquedaLineal:= i end;

MTP: Metodología y Tecnología de la Programación 15 Notas finales: Utilización de un testigo  Una alternativa al análisis puramente teórico del algoritmo es la utilización de un testigo o barómetro  Por ejemplo:  Tiene el inconveniente de que no deduce la expresión analítica de la función de complejidad  Hay soluciones function busquedaLineal(a:array[1..n] of integer; x:integer):integer; var i:integer; begin i := 1; while i x do begin i:= i+1; WRITE(‘*’) end; if i > n then busquedaLineal:= 0 else busquedaLineal:= i end;

MTP: Metodología y Tecnología de la Programación 16 Notas finales: Utilización de un testigo  Utilizando un testigo, y tabulando los resultados (numero de iteracciones) para distintos valores de n, se pueden identificar funciones que definen conjuntos O,  y, en algunos casos, , a los que pertenece la función de complejidad del algoritmo  La estrategia es calcular los valores iteracciones/f(n), siendo f(n) una o varias funciones (por ejemplo, las funciones destacadas) de interés  Si:  iteracciones/f(n) tiende a un valor constante, la función de complejidad del algoritmo es  (f(n))  iteracciones/f(n) tiende a 0, la función de complejidad del algoritmo es O(f(n))  iteracciones/f(n) tiende a infinito, la función de complejidad del algoritmo es  (f(n))

MTP: Metodología y Tecnología de la Programación 17 Notas finales  Existen dos casos en que la estrategia enunciada NO FUNCIONA  CASO 1: Que la operación básica no refleje, realmente, el trabajo realizado por el algoritmo (inadvertidamente)  Ejemplo:  Solución: re-considerar la operación básica, considerar varias operaciones básicas, suponer invocación procedimental function Fibiter (n:integer):integer; var i,j, k:integer; begin i:=1;j:=0;k:=1; while k<= n do begin j:=i+j; i:=j-i; k:= k+1 end; Fibiter:= j end; Las operaciones de suma pueden consumir un tiempo proporcional a n (suponer, por ejemplo, aritmética entera exacta, aumentando la función de complejidad dell algoritmo

MTP: Metodología y Tecnología de la Programación 18 Notas finales  Habitualmente, t n se identifica para el CASO PEOR de la ejecución de una determinada función  Los conceptos de todos los casos, caso mejor, caso medio y caso peor se estudiarán más adelante  No obstante, en algunos casos el análisis del CASO PEOR es excesivamente pesimista  Incluso para el caso peor  Aumenta considerablemente el orden de las funciones de complejidad  Concretamente, en ciertas ocasiones, es necesario aplicar un análisis amortizado en las invocaciones procedimentales  Lo estudiaremos más adelante

MTP: Metodología y Tecnología de la Programación 19 Notas finales  Por último, es conveniente señalar que, salvo casos extraordinarios en los que estemos interesados en las funciones t n concretas, utilizaremos los conjuntos O,  y  deducibles a partir de t n  Normalmente, utilizaremos alguna de las funciones destacadas 1, log n, n, n log n, n 2, n k, a n, b n, n!  Se podrán deducir las funciones concretas a partir de las propiedades de los conjuntos O,  y  y de la experiencia