Temas. Objetivo 12:00

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Temas. Objetivo 12:00"

Transcripción

1 0

2 Temas Teoría de la Complejidad Análisis de Algoritmos Complejidad temporal y espacial Funciones Matemáticas Ordenes Notación Asintótica Principios para determinar el orden de un algoritmo Objetivo Que el estudiante logre: Entender los fundamentos de la Teoría de la Complejidad. Medir la eficiencia de algoritmos. Diferenciar entre los algoritmos de complejidad polinómica y no polinómica. 1

3 Qué es un algoritmo? Un algoritmo es una serie finita de pasos para resolver un problema. Qué condiciones debe satisfacer? Un algoritmo debe satisfacer las siguientes condiciones: 1. Consiste en un conjunto finito de instrucciones simples y precisas, que son descritas por un conjunto finito de símbolos. 2. Siempre producirá el resultado (la respuesta al problema) en un número finito de pasos. 3. Hay un agente computacional que lleva a cabo las instrucciones (guardar, recabar y realizar los pasos de una computación). Este requerimiento es satisfecho tanto por las computadoras como por los seres humanos, puesto que ambos tienen memoria. 4. El agente computacional debe realizar las instrucciones por medio de pasos discretos. 5. El agente computacional debe llevar a cabo las instrucciones determinísticamente o mecánicamente. Algoritmo es un procedimiento para resolver un problema cuyos pasos son concretos y no ambiguos. El algoritmo debe ser correcto, de longitud finita. 2

4 3 Cómo construir algoritmos? Cómo expresar algoritmos? Cómo validar algoritmos? Cómo analizar algoritmos?

5 La leyenda sobre el tablero de ajedrez Mucho tiempo atrás, el visir Sissa ben Dahir inventó el juego del ajedrez para el rey Shirham de la India. El rey ofreció a Sissa la posibilidad de elegir su propia recompensa. Sissa le dijo al rey que podía recompensarle: o bien con una cantidad equivalente a la cosecha de trigo en su reino de dos años, o bien con una cantidad de trigo que se calcularía de la siguiente forma: un grano de trigo en la primera casilla de un tablero de ajedrez, más dos granos de trigo en la segunda casilla, más cuatro granos de trigo en la tercera casilla, y así sucesivamente, duplicando el número de granos en cada casilla, hasta llegar a la última casilla. El rey pensó que la primera posibilidad era demasiado cara mientras que la segunda, medida además en simples granos de trigo, daba la impresión de serle claramente favorable. Así que sin pensárselo dos veces pidió que trajeran un saco de trigo para hacer la cuenta sobre el tablero de ajedrez y recompensar inmediatamente al visir. 4

6 El número de granos en la primera fila resultó ser: = 255 La cantidad de granos en las dos primeras filas es: Al llegar a la tercera fila el rey empezó a pensar que su elección no había sido acertada, pues para llenar las tres filas necesitaba: En efecto, para rellenar las 64 casillas del tablero hacen falta granos, que pesan alrededor de 600 kilos.. granos, cantidad equivalente a las cosechas mundiales actuales de años!!. La función 2 n 1 (exponencial) representa el número de granos adeudados en función del número n de casillas a rellenar. Toma valores desmesurados aunque el número de casillas sea pequeño. El coste en tiempo de algunos algoritmos expresado en función del tamaño de los datos de entrada es también exponencial. Por ello es importante estudiar el coste de los algoritmos y ser capaces de comparar los costes de algoritmos que resuelven un mismo problema. 5

7 La técnica que se utilizaba en los primeros años de la programación para comparar la eficiencia de distintos algoritmos consistía en ejecutarlos para datos diferentes y medir el tiempo consumido. Dado que las máquinas y los lenguajes eran dispares, y que el tiempo de ejecución depende no sólo del tamaño sino también del contenido de los datos, resultaba muy difícil comparar tales resultados. El primer estudio serio sobre la eficiencia de los algoritmos se lo debemos a Daniel Goldenberg del MIT. En 1952 realizó un análisis matemático del número de comparaciones necesarias, en el mejor y en el peor caso, de cinco algoritmos distintos de ordenación. La tesis doctoral de Howard B. Demuth de la Universidad de Stanford estableció en 1956 las bases de lo que hoy llamamos análisis de la complejidad de los algoritmos. 6

8 Dado un problema computacional: Existe un algoritmo óptimo para resolver el problema? en tal caso, Cuál será el criterio de optimalidad que deberá utilizarse? Es posible medir el tiempo de ejecución o la memoria necesaria para cada posible algoritmo que resuelva el problema? El área de las ciencias de la computación que se ocupa de estos temas se denomina Teoría de la Complejidad y los resultados que produce son medidas y criterios para determinar la eficiencia de los algoritmos. 7

9 TIPO DE ANÁLISIS ANÁLISIS DE UN ALGORITMO EN PARTICULAR: se trata de investigar el costo de usar un determinado algoritmo para resolver un problema específico. ANÁLISIS DE UNA CLASE DE ALGORITMOS: se investiga toda una familia de algoritmos que permiten resolver un problema, procurando obtener él que demande menor costo SEGÚN EL MOMENTO ESTIMACIÓN A PRIORI Hace uso de un modelo matemático, como lo es una función, basada en un computador idealizado y en un conjunto de operaciones con costos de ejecución perfectamente especificados. Proporciona sólo un RESULTADO APROXIMADO. COMPROBACIÓN A POSTERIORI Se lleva a cabo en el momento de la ejecución del programa en un computador y consiste en medir los tiempos de corrida del programa en cuestión. Proporciona VALORES REALES. 8

10 LA COMPLEJIDAD DE UN ALGORITMO ES UNA MEDIDA DE LA CANTIDAD DE RECURSOS (TIEMPO, MEMORIA) QUE EL ALGORITMO REQUIERE. CÓMO MEDIR LA EFICIENCIA DE LOS ALGORITMOS? Contando el número de pasos (tiempo de ejecución del algoritmo.) COMPLEJIDAD EN TIEMPO Determinando el espacio utilizado por el agente computacional (máquina, persona) que lo ejecuta (espacio utilizado por el algoritmo.) COMPLEJIDAD EN ESPACIO 9

11 COMPLEJIDAD TEMPORAL (ESPACIAL). Tiempo (o espacio) requerido por un algoritmo, expresado en base a una función que depende del tamaño del problema. COMPLEJIDAD TEMPORAL ASINTÓTICA (y 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

12 Para evaluar la rapidez o viabilidad de un algoritmo (eficiencia) se imagina que al algoritmo se le suministra entradas cada vez mayores y se observa la razón de crecimiento del tiempo insumido para ejecutarlo. Para analizar esto se consideran dos tipos de funciones matemáticas: POLINÓMICA ALGORITMOS EFICIENTES FUNCIÓN EXPONENCIAL ALGORITMOS NO EFICIENTES 11 11

13 El objetivo primario del estudio de la complejidad es definir cuáles problemas son tratables y cuáles no, para luego considerar distintos grados de tratabilidad. Problema tratable: complejidad polinomial intratable: complejidad exponencial 12 12

14 13 13 Si un algoritmo ejecuta n operaciones por microsegundo, el algoritmo daría: Un microsegundo es la millonésima parte de un segundo

15 Ejemplo 1(search): problema de pertenencia a un conjunto. procedure search (var X: int-set: y: integer, var found: boolean); var i: integer; begin i := 1; end { search} found := false; while i <= n and not found do if X [ i ] = y then found := true; else i := i + 1; enddo 14 14

16 15 15 Complejidad en espacio (número total de celdas requeridas): E = X + k donde X es la longitud del arreglo (es decir, n) y k es una constante que no depende del cardinal de X (celdas usadas para almacenar todas las otras variables y el código objeto). Complejidad en tiempo: T = T1 + T2 donde T1 es el tiempo insumido fuera del ciclo while y T2 es el tiempo dentro de éste. Se observa que T1 es un valor constante (h) que no depende del conjunto X, en cambio T2 depende de él, así: T = h + T2 (X) El tiempo requerido por el procedimiento search es muy variable mejor caso: T b = h + r peor caso: T w = h + r. n

17 Para diferenciar la eficiencia de los algoritmos se utilizan los órdenes de complejidad. Éstos se expresan en función de n que representa el tamaño (dado o estimado) de los datos de entrada. O(f(n) O (p(n)) O (c n ) Algoritmos de tiempo polinómico Algoritmos de tiempo exponencial Los algoritmos se consideran efectivos o tratables hasta Complejidad polinómica. Los exponenciales son válidos para valores pequeños de n

18 f(n) = 0(f(n)): el orden de una función es igual al valor de la función. c * f(n) = 0(f(n)): el orden de una función multiplicada por una constante es igual al valor de la función. 0 (0(f(n))) = 0 (f(n)): el orden del orden de una función es igual al orden de la función. 0 (f(n)) + 0 (g (n)) = 0 (max f(n),g (n)): la suma de los ordenes de dos funciones es igual al orden máximo de las funciones. 0 (f(n)) * 0 (g (n)) = 0 (f(n) * g (n)): el producto de dos ordenes de funciones es igual al orden del producto de las mismas

19 18 18 Notación O(1) O(log n) O([log n] c ) O(n) O(n log n) O(n²) O(n c ) O(c n ), n > 1 O(n!) O(n n ) Denominación orden constante orden logarítmico orden polilogarítmico orden lineal orden lineal logarítmico orden cuadrático orden polinómico orden exponencial orden factorial orden doblemente exponencial

20 19 19 El interés principal del análisis de algoritmos radica en saber cómo crece el tiempo de ejecución, cuando el tamaño de la entrada crece. Esto es la eficiencia asintótica del algoritmo. Se denomina asintótica porque analiza el comportamiento de las funciones en el límite, es decir, su tasa de crecimiento. La notación asintótica se describe por medio de una función cuyo dominio es los números naturales (N ) estimado a partir de tiempo de ejecución o de espacio de memoria de algoritmos en base a la longitud de la entrada. Se consideran las funciones asintóticamente no negativas. La notación asintótica captura el comportamiento de la función para valores grandes de N.

21 20 20 Notación O grande (O mayúscula) (Omicron, "Big- O") : se utiliza para manejar la cota superior del tiempo de ejecución. Notación o minúscula : denotar una cota superior que no es ajustada asintóticamente. Notación omega ( ): se utiliza para manejar la cota inferior del tiempo de ejecución Notación theta ( ): se utiliza para indicar el orden exacto de complejidad

22 Notación O grande (O(f)), denota el conjunto de las funciones g que crecen a lo sumo tan rápido como f (es decir, f llega a ser en algún momento una cota superior para g). Formalmente: Constante multiplicativa n 0 indica a partir de que punto f es realmente una cota superior para g. Se dice que la función g(n) es de orden f(n) [O(f(n))], si existen constantes positivas c 0 y n 0 tales que g(n) <= c 0 f(n) cuando n >= n

23 22 22 Cota asintótica superior cf(n) n 0 g(n)=o(f(n)) g(n) Se trata de buscar una función sencilla, f(n), que acote superiormente el crecimiento de otra g(n), en cuyo caso se notará como g(n) O(f(n)) (g es del orden de f). La función n²+200n está acotada superiormente por n². Quiere decir que cuando n tiende a infinito el valor de 200 n se puede despreciar con respecto al de n².

24 Cota asintótica inferior n 0 g(n) cf(n) g(n) cf(n) para un número infinito de valores de n. g(n)=ω(f(n)) La función n² puede ser acotada inferiormente por la función n. Para demostrarlo basta notar que para todo valor de n 1 se cumple n n². Por tanto n² = Ω(n) (sin embargo, n no sirve como cota inferior para n²). La función n²+200 n está acotada inferiormente por n². Quiere decir que cuando n tiende a infinito el valor de 200 n se puede despreciar con respecto al de n². 23

25 n 0 c 2 f(n) g (n) c 1 f(n) g(n) = Θ(f(n)) si y sólo si g(n) = O(f(n)) y g(n) = Ω(f(n)) g(n)= Θ (f(n)) La función n +10 puede ser acotada por la función n. Para demostrarlo basta notar que para todo valor de n 1 se cumple g(n) h(n) 11g(n). Por tanto n+10 = Θ(x). La función n²+200 n está acotada de forma ajustada por n². Quiere decir que cuando n tiende a infinito el valor de 200 n se puede despreciar con respecto al de n². 24

26 DEFINICIÓN 1: Sean g, f dos funciones de números naturales a números reales. La función g es O(f(n)) si y sólo si existe una constante real c > 0 tal que: lim g( n) f ( n n ) DEFINICIÓN 2: Sean g y f dos funciones sobre los naturales. O(g(n)) < O(f(n)) si y sólo si n c lim g ( n ) 0 f ( n) Similarmente, O (g(n)) > O (f(n)) si y sólo si lim g ( n ) f ( n) n DEFINICIÓN 3 Si f(n) domina asintóticamente a g(n) se dice que g(n)=0(f(n)), es decir, es de orden f(n) ya que f(n) es una cota superior a la tasa de crecimiento de g(n). Para especificar una cota inferior para la velocidad de crecimiento de g(n) se usa la notación (h(n)), que se lee "g(n) es omega mayúscula de h(n)" o "simplemente g(n) es omega de h(n)" lo cual significa que existe una constante c tal que: g(n) ch(n) para un número infinito de valores de n. 25

27 26 26 Asignación: variable = expresión Si la expresión es sencilla, por ejemplo: variable = variable = a +b etc. Entonces el tiempo de ejecución sería del orden O(1); en caso contrario habría que determinar el orden de la expresión, siendo de ese orden la asignación.

28 27 27 Secuencia de comandos sentencia 1 sentencia 2... sentencia s El tiempo total de ejecución sería la suma de los tiempos de ejecución de cada sentencia; por tanto, sería del orden de: O(f1(n)+f2(n)+... +fs(n)) o lo que es lo mismo: O(max(f1(n), f2(n),..., fs(n)) (Regla de la suma) es decir la dominante de todas las funciones.

29 28 28 Instrucción de bifurcación si expresión entonces bloque de sentencias si no otro bloque de sentencias fin si La expresión, el primer bloque de sentencias y el segundo bloque de sentencias tendrán unos tiempos de ejecución determinados T 1 (n), T 2 (n), T 3 (n) con unos órdenes O(f 1 (n)), O(f 2 (n)) y O(f 3 (n)). El tiempo de ejecución de la estructura será la dominante de dichas funciones.

30 29 29 Estructura repetitiva: desde i=a hasta f(n) hacer bloque de sentencias fin desde El bucle anterior se ejecuta un número de veces que es función del tamaño del problema (n); si el tiempo de ejecución del cuerpo del bucle es de orden O(g(n)) entonces el tiempo de ejecución del bucle completo será del orden O(f(n) g(n)). Si el bucle fuera un mientras o un repetir...hasta, entonces se debería tener en cuenta el orden de la expresión lógica, determinar la dominante entre dicha expresión y el cuerpo del bucle y aplicar la regla anterior.

31 30 30 Ejemplo 1: desde i=1 a n desde j=1 a n escribir i+j fin desde fin desde 1. El tamaño del problema viene definido en este caso por la variable n. 2. Se va a la zona más interna del bucle (escribir i+j). 3. Se trata de una sentencia elemental, por tanto, su tiempo de ejecución será de orden O(1). 4. El bucle más interno (desde j=1 a n) se ejecuta n veces y su cuerpo tiene complejidad O(1), por tanto, este bucle tiene complejidad O(n 1)=O(n). 5. El bucle más externo (desde i=1 a n) se ejecuta n veces y su cuerpo (el bucle anterior) tiene complejidad O(n), por tanto, este bucle (y el algoritmo) tiene complejidad O(n n)=o(n 2 ).

32 Ejemplo 2: f=1 desde i=1 a n f=f i fin desde 1. El tamaño del problema viene definido en este caso por la variable n. 2. Se va a la zona más interna del bucle (f=f i). 3. Se trata de dos sentencias elementales (producto y asignación), por tanto, su tiempo de ejecución será de orden O(1). 4. El bucle (desde i=1 a n) se ejecuta n veces y su cuerpo tiene complejidad O(1), por tanto, este bucle (y el algoritmo que permite calcular el factorial de n) tiene complejidad O(n 1)=O(n). Qué significa esto? Significa que si el cálculo del factorial de 10 en un ordenador tardó, por ejemplo, 2 segundos; ese mismo algoritmo calcularía en ese mismo ordenador el factorial de 20 como máximo en 4 segundos y el de 30 un máximo de 6 segundos

33 ORDENAR UN VECTOR DE N ELEMENTOS DE MENOR A MAYOR procedimiento begin (1) For i = 1 to n-1 do (2) For j = i to n do (3) if A [i] > A [j] then begin (4) T = A [i] O (1) (5) A [i] = A [j] O (1) (6) A [j] = T O (1) next j next i end Las proposiciones (4), (5) y (6) toman O(1), por la regla de la suma O (max (1,1,1)) = O (1) (1) El ciclo de las i se ejecuta n-1 veces (2) El ciclo de las j se ejecuta n-i veces n 1 T = ( n i) = n n n - ( n - 1 ) = (n 2 - n) / 2 i 1 T(n) = (n 2 - n) / 2 O (n 2 ) 32 32

34 El compromiso espacio-tiempo o tiempo-memoria es una situación en la que la memoria puede reducirse a costa de la ejecución más lenta de los programas, o viceversa, el tiempo de ejecución puede reducirse a costa de incrementar el uso de memoria. Ejemplos Algoritmo que utiliza una tabla de búsqueda: una implementación puede incluir la tabla completa, lo que reduce el tiempo de ejecución, pero incrementa la cantidad de memoria necesitada, o puede calcular entradas de la tabla a medida que se necesiten, incrementando el tiempo de ejecución, pero reduciendo los requisitos de memoria. Problema de almacenamiento de datos: si los datos se almacenan de forma no comprimida se necesita más espacio pero menos tiempo que si los datos se almacenan de forma comprimida (ya que la compresión reduce la cantidad de espacio utilizado, pero utiliza tiempo de ejecución para procesar el algoritmo de compresión)

35 Existen dos clases de complejidad: la complejidad de tiempo y la complejidad de espacio. La complejidad de tiempo es más critica. Existen dos estudios posibles sobre el tiempo de ejecución de un algoritmo: Obtener una medida teórica a priori mediante la función de complejidad Obtener una medida real del algoritmo, a posteriori, para unos valores concretos en un computador determinado. Estimación a priori Se analizan algoritmos Se obtienen valores aproximados Independiente de la máquina Permite hacer predicciones sobre el comportamiento del algoritmo en cualquier máquina Estimación a posteriori Se analizan programas Se obtienen valores exactos Dependiente de la máquina Poco predictivo 34 34

36 Los algoritmos eficientes se dice que son de orden de alguna función polinómica: 0(p(n)) (no interesa la forma exacta del polinomio p). Los del tiempo exponencial son 0(c n ), para alguna constante c. La complejidad depende del tamaño de la entrada n. Se puede realizar un análisis de complejidad para el peor, mejor y caso promedio. La complejidad depende del algoritmo diseñado para solucionar un problema dado. Por ejemplo, el mismo problema (búsqueda en un conjunto ordenado) puede ser resuelto con diferentes complejidades por dos algoritmos diferentes (search y binarysearch). Para determinar el tiempo de ejecución de un algoritmo se define una función de costo o perfomance, usando como parámetro de la misma el tamaño n de los datos del problema, escribiendo f(n)

37 El orden de una función es una aproximación o estimación del tiempo o espacio requerido para la ejecución de un algoritmo. La dominancia asintótica permite comparar dos algoritmos y determinar hasta que valor de n (datos de entrada) un algoritmo es más eficiente que otro. 0 O (g (n)) < O (f (n)) O (g (n)) > O (f (n)) c O (g (n)) = O (f (n)) 36 36

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS UNIVERSIDAD NACIONAL DE SANTIAGO DEL ESTERO Facultad de Ciencias Exactas y Tecnologías Licenciatura en Sistemas de Información 2009 COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS 1 TEORÍA DE LA COMPLEJIDAD Dado

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Estructuras de Datos y Algoritmos Tema 2. Análisis de la eficiencia Prof. Dr. P. Javier Herrera Contenido Introducción a la eficiencia computacional Cálculo básico de complejidades 2 Una leyenda ajedrecística

Más detalles

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (i)

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (i) Algorítmica y Lenguajes de Programación Eficiencia y notación asintótica (i) Eficiencia y notación asintótica. Introducción Para resolver un problema pueden existir varios algoritmos. Por tanto, es lógico

Más detalles

Notación Asintótica. Temas. Introducción Notación O Notación Omega Notación Theta. Análisis de Algoritmos

Notación Asintótica. Temas. Introducción Notación O Notación Omega Notación Theta. Análisis de Algoritmos Notación Asintótica Análisis de Algoritmos Temas Introducción Notación O Notación Omega Notación Theta 1 Introducción Por qué el análisis de algoritmos? Determinar tiempos de respuesta (runtime) Determinar

Más detalles

Complejidad de los Algoritmos

Complejidad de los Algoritmos 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

Más detalles

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

Tema 01: Fundamentos del Análisis Asintótico de Algoritmos Tema 01: Fundamentos del Análisis Asintótico de Algoritmos Noviembre, 2003 CS0218: Algoritmos y Programación II Introducción En Ciencias de la Computación se presenta con frecuencia la situación de analizar

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Notación Asintótica DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción Por qué el análisis de algoritmos? Determinar tiempos de respuesta (runtime)

Más detalles

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (ii)

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (ii) Algorítmica y Lenguajes de Programación Eficiencia y notación asintótica (ii) Eficiencia y notación asintótica. Análisis de algoritmos En la lección anterior el concepto de eficiencia asintótica. En ésta

Más detalles

La eficiencia de los programas

La eficiencia de los programas La eficiencia de los programas Jordi Linares Pellicer EPSA-DSIC Índice General 1 Introducción... 2 2 El coste temporal y espacial de los programas... 2 2.1 El coste temporal medido en función de tiempos

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 04: Notación asintótica M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Asíntota Dominio asintótico Ejemplo

Más detalles

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

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo. NOTACIÓN O GRANDE El análisis de algoritmos estima el consumo de recursos de un algoritmo. Esto nos permite comparar los costos relativos de dos o más algoritmos para resolver el mismo problema. El análisis

Más detalles

Tema 2 Fundamentos de Complejidad Algorítmica

Tema 2 Fundamentos de Complejidad Algorítmica Tema 2 Fundamentos de Complejidad Algorítmica Pablo Sánchez Dpto. Matemáticas, Estadística y Computación Universidad de Cantabria Santander (Cantabria, España) p.sanchez@unican.es Pablo Sánchez (MATESCO)

Más detalles

IN34A - Optimización

IN34A - Optimización IN34A - Optimización Complejidad Leonardo López H. lelopez@ing.uchile.cl Primavera 2008 1 / 33 Contenidos Problemas y Procedimientos de solución Problemas de optimización v/s problemas de decisión Métodos,

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 05: no recursivos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido no recursivos La notación de Landau O La notación O Principio

Más detalles

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

Tiempo de Ejecución. Midiendo el Tiempo de Ejecución Tiempo de Ejecución Arturo Díaz Pérez Sección de Computación Departamento de Ingeniería Eléctrica CINVESTAV-IPN Av. Instituto Politécnico Nacional No. 2508 Col. San Pedro Zacatenco México, D. F. CP 07300

Más detalles

1. Introducción al análisis de algoritmos

1. Introducción al análisis de algoritmos 1. Introducción al análisis de algoritmos 1. Introducción al concepto de algoritmia 2. Eficiencia de un algoritmo 3. Notación asintótica 4. Reglas generales Bibliografía Brassard y Bratley, 97; capítulos

Más detalles

1. 1. Introducción al concepto de algoritmia

1. 1. Introducción al concepto de algoritmia 1. Introducción al análisis de algoritmos 1. Introducción al concepto de algoritmia 2. Eficiencia de un algoritmo 3. Notación asintótica 4. Reglas generales Bibliografía Básica: Aho, Hopcroft y Ullman,

Más detalles

Complejidad computacional y asintótica

Complejidad computacional y asintótica Complejidad computacional y asintótica Complejidad computacional Indica el esfuerzo que hay que realizar para aplicar un algoritmo y lo costoso que éste resulta. La eficiencia suele medirse en términos

Más detalles

Conceptos Fundamentales del Análisis de Algoritmos II

Conceptos Fundamentales del Análisis de Algoritmos II Conceptos Fundamentales del Análisis de Algoritmos II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 17 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II

Más detalles

Análisis de la Complejidad de Algoritmos

Análisis de la Complejidad de Algoritmos Análisis de la Complejidad de Algoritmos Gráficas estadística y minería de datos con python Miguel Cárdenas Montes Centro de Investigaciones Energéticas Medioambientales y Tecnológicas, Madrid, Spain miguel.cardenas@ciemat.es

Más detalles

Notación Asintótica. Programación Avanzada

Notación Asintótica. Programación Avanzada Notación Asintótica Programación Avanzada Orden de crecimiento asintótico Ayuda a: Identificar el comportamiento de un algoritmo en el peor, el mejor o el caso promedio. Tener una idea del comportamiento

Más detalles

Programación II. Mario Aldea Rivas Programación II 04/04/11 1. Mario Aldea Rivas Programación II 04/04/11 2

Programación II. Mario Aldea Rivas Programación II 04/04/11 1. Mario Aldea Rivas Programación II 04/04/11 2 Programación II Bloque temático 1. Lenguajes de programación Bloque temático 2. Metodología de programación Bloque temático 3. Esquemas algorítmicos Tema 5. Algoritmos voraces, heurísticos y aproximados

Más detalles

Fundamentos de Programación Entera. A. Revisión. Carlos Testuri Germán Ferrari

Fundamentos de Programación Entera. A. Revisión. Carlos Testuri Germán Ferrari Fundamentos de Programación Entera A. Revisión Carlos Testuri Germán Ferrari Departamento de Investigación Operativa Instituto de Computación Facultad de Ingeniería Universidad de la República 2012-2018

Más detalles

Programación Análisis de Algoritmos: Tiempo de Ejecución (Introducción)

Programación Análisis de Algoritmos: Tiempo de Ejecución (Introducción) Programación 2 5 - Análisis de Algoritmos: Tiempo de Ejecución (Introducción) 1 Análisis de Algoritmos: Introducción Qué algoritmos elegir para resolver un problema? Que sean fáciles de entender, codificar

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Ejercicio 1: Estructuras de Datos y Algoritmos Año 2018 Práctico 2: Evaluación de Algoritmos (Finalización: 27/08) Ingeniería en Computación - Ingeniería en Informática - Profesorado en Computación Dados

Más detalles

Programación 2. Lección 8. Caracterización asintótica de la eficiencia de un algoritmo

Programación 2. Lección 8. Caracterización asintótica de la eficiencia de un algoritmo Programación 2 Lección 8. Caracterización asintótica de la eficiencia de un algoritmo 1 1. Funciones de coste de un algoritmo 2. Caracterización asintótica del coste Notación O Consecuencias prácticas

Más detalles

Algoritmos y problemas

Algoritmos y problemas Análisis de Algoritmos Algoritmos y problemas Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Algoritmos y problemas p. 1 Problema = un conjunto (posiblemente infinita) de instancias

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 02: Complejidad de los algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Algoritmo Algoritmo vs. Proceso Computacional

Más detalles

Análisis asintótico de algoritmos

Análisis asintótico de algoritmos Algoritmos y problemas Análisis asintótico de algoritmos! Cada algoritmo resuelve a un problema particular! Hay varias maneras de resolver un problema! Algunas maneras son buenas y otras son malas! El

Más detalles

Análisis de algoritmos.

Análisis de algoritmos. Análisis de algoritmos. - Introducción. - Notaciones asintóticas. - Ecuaciones de recurrencia. - Ejemplos. 1 Introducción Algoritmo: Conjunto de reglas para resolver un problema. Su ejecución requiere

Más detalles

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

Estructura de Datos. Complejidad de Algoritmos. Algoritmo. Algoritmo. Mauricio Solar Lorna Figueroa Estructura de Datos Complejidad de Algoritmos Mauricio Solar Lorna Figueroa 2010 1 Algoritmo Definición: Un algoritmo es un conjunto finito de instrucciones que sirven para resolver un problema si fueron

Más detalles

Introducción al Análisis del Coste de Algoritmos

Introducción al Análisis del Coste de Algoritmos 1/11 Introducción al Análisis del Coste de Algoritmos Josefina Sierra Santibáñez 7 de noviembre de 2017 2/11 Eficiencia de un Algoritmo Analizar un algoritmo significa, en el contexto de este curso, predecir

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Estructuras de Datos y Algoritmos Práctico 2: Evaluación de Algoritmos (Finalización: 03/09) Ingeniería en Computación - Ingeniería en Informática Año 2015 Ejercicio 1: Dados los siguientes vectores, correspondientes

Más detalles

1. Algoritmo, programa y pseudocódigo. Introducción al estudio de algoritmos. Ejemplos

1. Algoritmo, programa y pseudocódigo. Introducción al estudio de algoritmos. Ejemplos Introducción al estudio de algoritmos 1. Algoritmo, programa y pseudocódigo 2. Eficiencia y el principio de invarianza 3. Operaciones elementales 4. Casos mejor, peor y medio 5. Notación asintótica 6.

Más detalles

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

Análisis y Diseño de Algoritmos. Complejidad Computacional Análisis y Diseño de Algoritmos Complejidad Computacional Multiplicación Método Tradicional Método Russé Método Particiones Complejidad Computacional Tan pronto como una máquina análitica exista, será

Más detalles

Programación. Curso 2005/2006. Tema 3: Complejidad computacional

Programación. Curso 2005/2006. Tema 3: Complejidad computacional Programación Facultad de Informática Universidad Politécnica de Valencia Curso 2005/2006 Tema 3: FI UPV: 29 de noviembre de 2005 Índice 1 Introducción 2 2 Consumo de recursos: costes espaciales y temporales

Más detalles

Algoritmos y Complejidad

Algoritmos y Complejidad Algoritmos y Complejidad Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2017 Introducción Algoritmos y Algoritmia Problemas

Más detalles

Notación Asintótica 2

Notación Asintótica 2 Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad

Más detalles

Unidad 1. Análisis de Algoritmos. Ing. Leonardo R. L. Estructura de datos - Generalidades Unidad I Pág 1

Unidad 1. Análisis de Algoritmos. Ing. Leonardo R. L. Estructura de datos - Generalidades Unidad I Pág 1 Unidad 1 Análisis de Algoritmos Ing. Leonardo R. L. Estructura de datos - Generalidades Unidad I Pág 1 GENERALIDADES Qué se necesita para escribir un programa eficiente? Para diseñar programas eficientes

Más detalles

Tema 3. Análisis de costes

Tema 3. Análisis de costes Tema 3. Análisis de costes http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información

Más detalles

Complejidad computacional (Análisis de Algoritmos)

Complejidad computacional (Análisis de Algoritmos) Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución

Más detalles

1/16. Coste de Algoritmos. 8 de abril de 2018

1/16. Coste de Algoritmos. 8 de abril de 2018 1/16 Coste de Algoritmos Josefina Sierra Santibáñez 8 de abril de 2018 2/16 Coste de un Algoritmo Analizar un algoritmo significa, en el contexto de este curso, estimar los recursos que requiere. Aunque

Más detalles

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

Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani Introducción Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Algoritmos y Algoritmia Problemas e instancias Primer Cuatrimestre 2014 Algoritmos

Más detalles

Introducción al análisis de algoritmos

Introducción al análisis de algoritmos Estructura de Datos y Algoritmos Introducción al análisis de algoritmos 1. Eficiencia en tiempo de Ejecución Cuando resolvemos un problema nos vemos frecuentemente enfrentando una elección de programas,

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos Amalia Duch Barcelona, marzo de 2007 Índice 1. Costes en tiempo y en espacio 1 2. Coste en los casos mejor, promedio y peor 3 3. Notación asintótica 4 4. Coste de los algoritmos

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Análisis de Algoritmos Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias

Más detalles

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. Complejidad de

Más detalles

Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid. Java: Complejidad / 1

Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid. Java: Complejidad / 1 Complejidad Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid cdk@it.uc3m.es Java: Complejidad / 1 Comparación long fib (int n) {if (n

Más detalles

TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR

TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR Tema 1. Programación de un computador TEMA 1. CIÓN DE UN COMPUTADOR 1. CONCEPTO DE 2. LENGUAJES DE CIÓN 2.1. LENGUAJE MÁQUINA 2.2. LENGUAJE ENSAMBLADOR 2.3. LENGUAJE DE ALTO NIVEL 3. ALGORITMOS. REPRESENTACIÓN

Más detalles

Curso: Teoría de la Computación. Unidad 2, Sesión 7: Complejidad computacional

Curso: Teoría de la Computación. Unidad 2, Sesión 7: Complejidad computacional Curso: Teoría de la Computación. Unidad 2, Sesión 7: Complejidad computacional Instituto de Computación, Facultad de Ingeniería Universidad de la República, Montevideo, Uruguay dictado semestre 2-2009

Más detalles

Temario. Tipos de recursión. Eficiencia y recursión

Temario. Tipos de recursión. Eficiencia y recursión RECURSION Temario Tipos de recursión Eficiencia y recursión Tipos de RECURSION Según desde donde se realice el llamado recursivo: Directa: la función se llama a sí misma. Indirecta: la función A llama

Más detalles

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

Problemas computacionales, intratabilidad y problemas NP completos. Febrero Facultad de Ingeniería. Universidad del Valle Complejidad Complejidad, in NP completos Facultad de Ingeniería. Universidad del Valle Febrero 2017 Contenido Complejidad 1 2 3 Complejidad computacional Complejidad Introducción En ciencias de la computación

Más detalles

Diseño y Análisis de Algoritmos

Diseño y Análisis de Algoritmos 1. Recursividad 2. "Dividir para Reinar" 3. Recursividad y Tabulación (Programación Dinámica) 4. Métodos Matemáticos Funciones discretas Notación O Ecuaciones de recurrencia 5. Casos de Estudio Breve descripción

Más detalles

Introducción y Comportamiento Asintótico

Introducción y Comportamiento Asintótico Introducción y Comportamiento Asintótico M. Andrea Rodríguez-Tastets Ayudante: Erick Elejalde Universidad de Concepción,Chile www.inf.udec.cl\ andrea andrea@udec.cl I Semestre - 2014 1/64 Problemas and

Más detalles

TEMA 1 La eficiencia de los algoritmos

TEMA 1 La eficiencia de los algoritmos DLSI (Univ. Alicante) Tema 1. La eficiencia de los algoritmos TEMA 1 La eficiencia de los algoritmos PROGRAMACIÓN Y ESTRUCTURAS DE DATOS La eficiencia de los algoritmos 1. Noción de complejidad Complejidad

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos IIC1253 IIC1253 Análisis de Algoritmos 1 / 36 Complejidad de un algoritmo Un algoritmo A puede ser pensado como una función A : {0,1} {0,1} Qué tan general es esta representación?

Más detalles

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

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2015 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos IIC1253 IIC1253 Análisis de Algoritmos 1 / 36 Complejidad de un algoritmo Un algoritmo A puede ser pensado como una función A : {0,1} {0,1} Qué tan general es esta representación?

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos January 15, 010 1 Pseudocódigo 3 Modelos de referencia Antes de analizar un algoritmo debemos tener un modelo de la implementación de la tecnología que se va a usar, incluyendo un modelo para los recursos

Más detalles

dit UPM Tema 1: Algoritmos /complejidad /java Análisis y diseño de software José A. Mañas

dit UPM Tema 1: Algoritmos /complejidad /java Análisis y diseño de software José A. Mañas Análisis y diseño de software dit UPM Tema 1: Algoritmos /complejidad /java José A. Mañas http://jungla.dit.upm.es/~pepe/doc/adsw/index.html 21.2.2018 referencias http://www.dit.upm.es/~pepe/doc/adsw/

Más detalles

Tema 5- Diseño Recursivo y Eficiente. Tema 5- Diseño Recursivo y. Descomposición recursiva ascendente de un vector. Etapas del diseño recursivo

Tema 5- Diseño Recursivo y Eficiente. Tema 5- Diseño Recursivo y. Descomposición recursiva ascendente de un vector. Etapas del diseño recursivo Tema 5- Diseño Recursivo y Eficiente Tema 5- Diseño Recursivo y Eficiente Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general: 1. Introducción

Más detalles

Parte II: Estructuras de datos y algoritmos

Parte II: Estructuras de datos y algoritmos Parte II: Estructuras de datos y algoritmos 1. Introducción al análisis y diseño de algoritmos. 2. Tipos abstractos de datos. 3. Métodos de ordenación. 4 GRUPO DE COMPUTADORES Y TIEMPO REAL Javier Gutiérrez,

Más detalles

Estructuras de Control

Estructuras de Control Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas

Más detalles

Estructuras de control

Estructuras de control Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 1: Recursividad Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Ejemplos recursivos Recursividad

Más detalles

Complejidad Computacional

Complejidad Computacional Complejidad Computacional MLG521 Cristobal Rojas Pamela Alvarez Departamento de Ciencias de de la Ingeniería Departamento de Ingeniería Matemática Universidad Andrés Bello MLG521 Cómo medir la dificultad

Más detalles

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

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y

Más detalles

Algorítmica: Análisis de Algoritmos

Algorítmica: Análisis de Algoritmos Algorítmica: Análisis de Algoritmos Conrado Martínez U. Politècnica Catalunya Q1-2011-2012 Eficiencia de un algoritmo = consumo de recursos de cómputo: tiempo de ejecución y espacio de memoria Análisis

Más detalles

1.2.4 Listas enlazadas

1.2.4 Listas enlazadas 1.2.4 Listas enlazadas Las listas enlazadas son tipos de datos dinámicos que se construyen con nodos. Un nodo es un registro con al menos, dos campos, uno de ellos contiene las componentes y se le denomina

Más detalles

ESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA

ESTRUCTURA SECUENCIAL ESTRUCTURA SELECTIVA ESTRUCTURA SECUENCIAL Es aquélla en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta

Más detalles

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios 6.1.(Clase) Un programa que utiliza la técnica divide y vencerás, divide un problema de tamaño n en a subproblemas de tamaño n/b. El tiempo g(n) de la resolución directa (caso base) se considerará constante.

Más detalles

Análisis de Algoritmos Primer Problemario Prof. Miguel A. Pizaña 22 de Mayo de 2007

Análisis de Algoritmos Primer Problemario Prof. Miguel A. Pizaña 22 de Mayo de 2007 Análisis de Algoritmos Primer Problemario Prof. Miguel A. Pizaña 22 de Mayo de 2007 I Tareas 1. Dudar de todo, al menos una vez en la vida. 2. Que dice la paradoja de Zenón de Elea? Qué significa paradoja?

Más detalles

Conceptos básicos de paralelismo

Conceptos básicos de paralelismo Capítulo 2 Conceptos básicos de paralelismo 2.1. Introducción En este capítulo introduciremos algunos conceptos del paralelismo que se requeriran en la posterior discusión. Particularmente relevantes para

Más detalles

Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda

Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda Programación (PRG) Facultad de Informática Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia 1. Introducción El objetivo de esta práctica es estudiar el comportamiento

Más detalles

Arreglos y Subrangos

Arreglos y Subrangos Arreglos y Subrangos Programación 1 InCo - FING Contents 1 Tipo subrango 2 1.1 Subrangos de enteros......................... 2 1.2 Subrangos de caracteres....................... 2 1.3 Operaciones con subrangos.....................

Más detalles

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION DIIAGRAMAS DE FLUJO Un diagrama de flujo es un dibujo que utiliza símbolos estándar de diagramación de algoritmos para

Más detalles

Algoritmos de Búsqueda

Algoritmos de Búsqueda Introducción a la Computación Algoritmos de Búsqueda Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 11/10/2017 E. Mocskos (UBA CONICET) Algoritmos de Búsqueda

Más detalles

Análisis de algoritmos y Notación Asintótica

Análisis de algoritmos y Notación Asintótica Análisis de algoritmos y Notación Asintótica Computación y Algoritmos mat-151 1 Prueba de Turing Piensa una estrategia para, usando una operación aritmética, puedas detectar a la computadora. Supón que

Más detalles

Recursión. Recursión continuación

Recursión. Recursión continuación Recursión Recursión continuación Recursión Temas que veremos hoy Estructuras de control iterativas, repetitivas y la recursión. Ejemplos recursivos Búsqueda lineal Eficiencia y recursión Conclusiones Recursión

Más detalles

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

Parte I: El computador y el proceso de programación Parte I: El computador y el proceso de programación 1.Introducción a los computadores y su programación 2. Introducción al análisis y diseño de algoritmos 3. Introducción al análisis y diseño de programas

Más detalles

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE Análisis y costo de algoritmos Algoritmos Un algoritmo es un conjunto de pasos claramente definidos que a partir de un cierta entrada (input) produce una determinada salida (output) Algoritmos y programas

Más detalles

ALGORITMOS DIGITALES II. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

ALGORITMOS DIGITALES II. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006 ALGORITMOS DIGITALES II Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006 OBJETIVOS Conocer los principios básicos de los algoritmos. Establecer paralelos entre los algoritmos, los programas y las

Más detalles

Optimización bajo Incertidumbre. 0. Revisión. Depto. Investigación Operativa. Instituto de Computación. Facultad de Ingeniería, UdelaR

Optimización bajo Incertidumbre. 0. Revisión. Depto. Investigación Operativa. Instituto de Computación. Facultad de Ingeniería, UdelaR Optimización bajo Incertidumbre 0. Revisión Carlos Testuri Germán Ferrari Depto. Investigación Operativa. Instituto de Computación. Facultad de Ingeniería, UdelaR 2003-17 Contenido 1 Revisión Probabilidad

Más detalles

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

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 INTRODUCCIÓN AL ANÁLISIS Y AL DISEÑO DE ALGORITMOS El análisis de la complejidad de algoritmos, así como la discusión de las ventajas/desventajas, que tienen diferentes soluciones a los problemas clásicos,

Más detalles

Programación Lógica. Programación Lógica

Programación Lógica. Programación Lógica Programación Lógica Programación imperativa programa es secuencia de instrucciones que una computadora ejecuta para resolver un problema Programación Lógica programa especifica conocimiento (declarativa)

Más detalles

Introducción a la Computación Evolutiva

Introducción a la Computación Evolutiva Introducción a la Computación Evolutiva Departamento de Computación CINVESTAV-IPN Av. IPN No. 2508 Col. San Pedro Zacatenco México, D.F. 07300 email: ccoello@cs.cinvestav.mx http: //delta.cs.cinvestav.mx/~ccoello

Más detalles

Resolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones)

Resolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones) Resolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones) Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la

Más detalles

Complejidad Computacional

Complejidad Computacional Análisis y Complejidad de Algoritmos Complejidad Computacional Arturo Díaz Pérez Lenguajes formales Gramáticas formales Jerarquía de Chomski Teoría de la complejidad Una desigualdad computacional Computabilidad

Más detalles

Algoritmos: Análisis de algoritmos

Algoritmos: Análisis de algoritmos Algoritmos: Análisis de algoritmos Alberto Valderruten LFCIA - Departamento de Computación Facultad de Informática Universidad de A Coruña, España www.lfcia.org/alg www.fi.udc.es Contenido Análisis de

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Recurrencias DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción 2 Cuando un algoritmo se llama a sí mismo Su tiempo de ejecución se puede describir

Más detalles

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,

Más detalles

Complejidad de algoritmos recursivos

Complejidad de algoritmos recursivos Tema 3. Complejidad de algoritmos recursivos 1. INTRODUCCIÓN... 1 CLASIFICACIÓN DE FUNCIONES RECURSIVAS... 1 DISEÑO DE FUNCIONES RECURSIVAS... 2 2. VENTAJAS E INCONVENIENTES DE LA RECURSIVIDAD... 4 3.

Más detalles

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores aritméticos Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas

Más detalles

ALGORITMO. Podemos encontrar muchas definiciones de algoritmo en los textos de programación, todas ellas muy similares:

ALGORITMO. Podemos encontrar muchas definiciones de algoritmo en los textos de programación, todas ellas muy similares: Nuestra herramienta mental más importante para competir con la complejidad es la abstracción. Por tanto, un problema no deberá considerarse inmediatamente en términos de instrucciones de un lenguaje, sino

Más detalles

ALGORITMIA DISEÑO Y ANÁLISIS DE LOS ALGORITMOS DRA. LETICIA FLORES PULIDO

ALGORITMIA DISEÑO Y ANÁLISIS DE LOS ALGORITMOS DRA. LETICIA FLORES PULIDO + ALGORITMIA DISEÑO Y ANÁLISIS DE LOS ALGORITMOS DRA. LETICIA FLORES PULIDO + Aspectos importantes 2 n Es importante notar que el tiempo de ejecución de un programa no es el único aspecto a considerar

Más detalles

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,

Más detalles