Algoritmos y problemas

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

Download "Algoritmos y problemas"

Transcripción

1 Análisis de Algoritmos Algoritmos y problemas Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Algoritmos y problemas p. 1

2 Problema = un conjunto (posiblemente infinita) de instancias junto con una pregunta sobre alguna propiedad de las instancias Formalmente: = conjunto de instancias al cual corresponde un conjunto de soluciones, junto con una relación que asocia para cada instancia del problema un subconjunto de soluciones (posiblemente vacío) Algoritmos y problemas p. 2

3 Clasificación de problemas Problemas de decisión: la respuesta es sí o no Algoritmos y problemas p. 3

4 Clasificación de problemas Problemas de decisión: la respuesta es sí o no Problemas de optimización: la pregunta es del tipo cuál es el mejor valor posible o con qué configuración se obtiene el mejor valor posible Algoritmos y problemas p. 3

5 Problema de decisión La tarea es decidir sí o no la relación entre instancias y soluciones asigna un subconjunto vacío a una dada instancia. Algoritmos y problemas p. 4

6 Problema de decisión La tarea es decidir sí o no la relación entre instancias y soluciones asigna un subconjunto vacío a una dada instancia. Si existen soluciones, la respuesta a la pregunta del problema es si, y si el subconjunto es vacío, la respuesta es no. Algoritmos y problemas p. 4

7 Problema de optimización Para problemas de optimización, la instancia está compuesta por un conjunto de configuraciones, un conjunto de restricciones, y una función objetivo que asigna un valor (real) a cada instancia. Algoritmos y problemas p. 5

8 Problema de optimización Para problemas de optimización, la instancia está compuesta por un conjunto de configuraciones, un conjunto de restricciones, y una función objetivo que asigna un valor (real) a cada instancia. Si las configuraciones son discretas, el problema es combinatorial. Algoritmos y problemas p. 5

9 Solucion óptima La tarea es identificar cuál de las configuraciones factibles a tiene el mejor valor de la función objetivo. Depende del problema si el mejor valor es el mayor (problema de maximización) o el menor (problema de minimización). La configuración factible con el mejor valor se llama la solución óptima de la instancia. a o sea, las que cumplen con todas las restricciones Algoritmos y problemas p. 6

10 Algoritmo = un proceso formal para encontrar la respuesta correcta a la pregunta de un problema para una instancia dada de un cierto problema Algoritmos y problemas p. 7

11 Algoritmo = un proceso formal para encontrar la respuesta correcta a la pregunta de un problema para una instancia dada de un cierto problema Cómo encontrar un nombre en la guía telefónica? Cómo llegar de mi casa a mí oficina? Cómo determinar si un dado número es un número primo? Algoritmos y problemas p. 7

12 No es uno solo Para un problema, por lo general existen varios algoritmos con diferente nivel de eficiencia. Es decir, diferentes algoritmos pueden tener diferentes tiempos de ejecución con la misma instancia del problema. Algoritmos y problemas p. 8

13 Notación (I) Un conjunto E de las entradas del algoritmo, que representan las instancias del problema y (II) Un conjunto S de las salidas, que son los posibles resultados de la ejecución del algoritmo. La salida del un algoritmo determinista depende únicamente de la entrada: f : E S. Existen también algoritmos probabilistas o aleatorizados donde es así. Algoritmos y problemas p. 9

14 Instrucciones Los algoritmos se escribe como sucesiones de instrucciones que procesan la entrada ρ E para producir el resultado ξ S. Cada instrucción es una operación simple, produce un resultado intermedio único y es posible ejecutar con eficiencia. Algoritmos y problemas p. 10

15 Ejecución La sucesión S de instrucciones tiene que ser finita y ρ E, si P está ejecutada con la entrada ρ, el resultado de la computación será f(ρ) S. Sería altamente deseable que para todo ρ E, la ejecución de S terminará después de un tiempo finito. Algoritmos y problemas p. 11

16 Pseudocódigo Los algoritmos se implementa como programas de cómputo en diferentes lenguajes de programación. Algoritmos y problemas p. 12

17 Pseudocódigo Los algoritmos se implementa como programas de cómputo en diferentes lenguajes de programación. El mismo algoritmo se puede implementar en diferentes lenguajes y para diferentes plataformas computacionales. Algoritmos y problemas p. 12

18 Pseudocódigo Los algoritmos se implementa como programas de cómputo en diferentes lenguajes de programación. El mismo algoritmo se puede implementar en diferentes lenguajes y para diferentes plataformas computacionales. En este curso, los ejemplos siguen las estructuras básicas de programación procedural, en pseudocódigo parecido a C, Fortran y Java. Algoritmos y problemas p. 12

19 Algoritmo recursivo = un algoritmo donde una parte del algoritmo o el algoritmo completo utiliza a si mismo como subrutina En muchos casos es más fácil entender la función de un algoritmo recursivo y también demostrar que funcione correctamente. Un algoritmo que en vez de llamarse a si mismo repite en una manera cíclica el mismo código se dice iterativo. Algoritmos y problemas p. 13

20 Conversión En muchos casos, el pseudocódigo de un algoritmo recursivo resulta más corto que el pseudocógido de un algoritmo parecido pero iterativo para el mismo problema. Cada algoritmo recursivo puede ser convertido a un algoritmo iterativo (aunque no viceversa), aunque típicamente hace daño a la eficiencia del algoritmo hacer tal conversión. Depende del problema cuál manera es más eficiente: recursiva o iterativa. Algoritmos y problemas p. 14

21 Palíndromo = una sola palabra de puras letras a que se lee igual hacia adelante que hacia atrás Ejemplo: reconocer a en español, típicamente se ignora los acutes Algoritmos y problemas p. 15

22 Algoritmo recursivo procedimiento rpal(palabra P = l 1 l 2...l n 1 l n ) si n 1 devuelve verdadero ; si l 1 = l 2 devuelve rpal(l 2 l 3...l n 2 ln 1); en otro caso devuelve falso ; Algoritmos y problemas p. 16

23 Algoritmo iterativo procedimiento ipal(palabra P = l 1 l 2...l n 1 l n ) i = 1; j = n; mientras i < j si l i l j devuelve falso ; en otro caso i := i+1; j := j 1; devuelve verdadero ; Algoritmos y problemas p. 17

24 Calidad de algoritmos Las dos medidas más importantes de la calidad de un algoritmo son (I) el tiempo total de computación, medido por el número de operaciones de cómputo realizadas durante la ejecución del algoritmo, y (II) la cantidad de memoria utilizada. La notación para capturar tal información es a través de funciones de complejidad. Algoritmos y problemas p. 18

25 Máquina modelo Para eliminar el efecto de haber usado una cierta computadora o un cierto lenguaje de programación: Imaginamos que el algoritmo se ejecuta en una máquina modelo virtual tipo RAM (inglés: random access machine). Una máquina RAM no tiene límite de memoria ni límite de precisión de representación de números enteros o reales. Algoritmos y problemas p. 19

26 Operación básica Para poder contar las operaciones que ejecuta un algoritmo, hay que definir cuáles operaciones se cualifican como operaciones básicas: operaciones simples aritméticas (+,,, /, mód,...), Algoritmos y problemas p. 20

27 Operación básica Para poder contar las operaciones que ejecuta un algoritmo, hay que definir cuáles operaciones se cualifican como operaciones básicas: operaciones simples aritméticas (+,,, /, mód,...), operaciones simples lógicas (,,,, ), Algoritmos y problemas p. 20

28 Operación básica Para poder contar las operaciones que ejecuta un algoritmo, hay que definir cuáles operaciones se cualifican como operaciones básicas: operaciones simples aritméticas (+,,, /, mód,...), operaciones simples lógicas (,,,, ), comparaciones simples de variables (<,>,=,,, ), Algoritmos y problemas p. 20

29 Operación básica Para poder contar las operaciones que ejecuta un algoritmo, hay que definir cuáles operaciones se cualifican como operaciones básicas: operaciones simples aritméticas (+,,, /, mód,...), operaciones simples lógicas (,,,, ), comparaciones simples de variables (<,>,=,,, ), asignaciones de variables (:=), Algoritmos y problemas p. 20

30 Operación básica Para poder contar las operaciones que ejecuta un algoritmo, hay que definir cuáles operaciones se cualifican como operaciones básicas: operaciones simples aritméticas (+,,, /, mód,...), operaciones simples lógicas (,,,, ), comparaciones simples de variables (<,>,=,,, ), asignaciones de variables (:=), instrucciones de salto (break, continue, etcétera). Algoritmos y problemas p. 20

31 Tamaño de la instancia Para un cierto problema computacional, existen típicamente varias si no una cantidad infinita de instancias. Algoritmos y problemas p. 21

32 Tamaño de la instancia Para un cierto problema computacional, existen típicamente varias si no una cantidad infinita de instancias. Para definir el tamaño de una dicha instancia, hay que fijar cuál será la unidad básica de tal cálculo. Algoritmos y problemas p. 21

33 Tamaño de la instancia Para un cierto problema computacional, existen típicamente varias si no una cantidad infinita de instancias. Para definir el tamaño de una dicha instancia, hay que fijar cuál será la unidad básica de tal cálculo. Típicamente se utiliza la cantidad de bits, bytes, variables enteras, etcétera que se necesita ocupar para representar el problema en su totalidad en la memoria de una computadora. Algoritmos y problemas p. 21

34 Ejemplos Para un algoritmo de ordenar una lista de números, el tamaño de la instancia es la cantidad de números que tiene como entrada. Algoritmos y problemas p. 22

35 Ejemplos Para un algoritmo de ordenar una lista de números, el tamaño de la instancia es la cantidad de números que tiene como entrada. Si la instancia es un grafo, su tamaño es bien capturado en la suman+2m, como ninguno de los dos números sólo puede capturar el tamaño de la instancia completamente. Algoritmos y problemas p. 22

36 Comparabilidad Incluso se fijamos el tamaño de la instancia, todavía hay variaciones en la cantidad de tiempo requerido para la ejecución del algoritmo por otras propiedades estructurales de la instancia con respeto al problema. Algoritmos y problemas p. 23

37 Comparabilidad Incluso se fijamos el tamaño de la instancia, todavía hay variaciones en la cantidad de tiempo requerido para la ejecución del algoritmo por otras propiedades estructurales de la instancia con respeto al problema. Por ejemplo, es más difícil ordenar la lista [3,5,2,9,1] que ordenar la lista [1,3,5,6,7], como la segunda ya está ordenada. Algoritmos y problemas p. 23

38 Comparabilidad Incluso se fijamos el tamaño de la instancia, todavía hay variaciones en la cantidad de tiempo requerido para la ejecución del algoritmo por otras propiedades estructurales de la instancia con respeto al problema. Por ejemplo, es más difícil ordenar la lista [3,5,2,9,1] que ordenar la lista [1,3,5,6,7], como la segunda ya está ordenada. Lo que queremos nosotros es una caracterización de la calidad de un algoritmo que nos facilita hacer comparaciones entre algoritmos en general, no para una sola instancia. Algoritmos y problemas p. 23

39 Comparabilidad Incluso se fijamos el tamaño de la instancia, todavía hay variaciones en la cantidad de tiempo requerido para la ejecución del algoritmo por otras propiedades estructurales de la instancia con respeto al problema. Por ejemplo, es más difícil ordenar la lista [3,5,2,9,1] que ordenar la lista [1,3,5,6,7], como la segunda ya está ordenada. Lo que queremos nosotros es una caracterización de la calidad de un algoritmo que nos facilita hacer comparaciones entre algoritmos en general, no para una sola instancia. Las soluciones incluyen el uso del peor caso, caso promedio y el caso amortizado. Algoritmos y problemas p. 23

40 Función del peor caso Formamos una función de complejidad f : Z + Z + tal que para un valor n, el valor f(n) representa el número de operaciones básicas para el más difícil de todas las instancias de tamaño n. Algoritmos y problemas p. 24

41 Función del peor caso Formamos una función de complejidad f : Z + Z + tal que para un valor n, el valor f(n) representa el número de operaciones básicas para el más difícil de todas las instancias de tamaño n. La única dificultad es identificar o construir esa peor instancia. Algoritmos y problemas p. 24

42 Función del caso promedio Formamos una función de complejidad f : Z + R tal que para un valor n, el valor f(n) representa el número promedio de operaciones básicas sobre todas las instancias de tamaño n. Algoritmos y problemas p. 25

43 Función del caso promedio Formamos una función de complejidad f : Z + R tal que para un valor n, el valor f(n) representa el número promedio de operaciones básicas sobre todas las instancias de tamaño n. Posible dificultad: la estimación de la distribución de probabilidad. Algoritmos y problemas p. 25

44 Función del caso promedio Formamos una función de complejidad f : Z + R tal que para un valor n, el valor f(n) representa el número promedio de operaciones básicas sobre todas las instancias de tamaño n. Posible dificultad: la estimación de la distribución de probabilidad. En práctica, si el peor caso es muy raro, resulta más útil estudiar el caso promedio, si es posible. Algoritmos y problemas p. 25

45 Depedencias En algunos casos, es posible que el tiempo de ejecución de un algoritmo depende de las ejecuciones anteriores. Este ocurre cuando uno procesa una sucesión de instancias con algún tipo de dependencia entre ellas. En tal caso, las funciones de peor caso y caso promedio pueden resultar pesimistas. Algoritmos y problemas p. 26

46 Complejidad amortizada La complejidad amortizada evalua la eficiencia de un algoritmo en ejecuciones dependientes: Algoritmos y problemas p. 27

47 Complejidad amortizada La complejidad amortizada evalua la eficiencia de un algoritmo en ejecuciones dependientes: Ejecutamos el algoritmo varias veces en secuencia con diferentes instancias. Algoritmos y problemas p. 27

48 Complejidad amortizada La complejidad amortizada evalua la eficiencia de un algoritmo en ejecuciones dependientes: Ejecutamos el algoritmo varias veces en secuencia con diferentes instancias. Ordenamos las instancias de la peor manera posible (para consumir más recursos). Algoritmos y problemas p. 27

49 Complejidad amortizada La complejidad amortizada evalua la eficiencia de un algoritmo en ejecuciones dependientes: Ejecutamos el algoritmo varias veces en secuencia con diferentes instancias. Ordenamos las instancias de la peor manera posible (para consumir más recursos). Calculamos el tiempo total de ejecución. Algoritmos y problemas p. 27

50 Complejidad amortizada La complejidad amortizada evalua la eficiencia de un algoritmo en ejecuciones dependientes: Ejecutamos el algoritmo varias veces en secuencia con diferentes instancias. Ordenamos las instancias de la peor manera posible (para consumir más recursos). Calculamos el tiempo total de ejecución. Dividimos el total por el número de instancias. Algoritmos y problemas p. 27

51 Complejidad amortizada La complejidad amortizada evalua la eficiencia de un algoritmo en ejecuciones dependientes: Ejecutamos el algoritmo varias veces en secuencia con diferentes instancias. Ordenamos las instancias de la peor manera posible (para consumir más recursos). Calculamos el tiempo total de ejecución. Dividimos el total por el número de instancias. En muchos casos, esto no es demasiado laboroso. Algoritmos y problemas p. 27

52 Consumo de memoria Igual como el tiempo de ejecución, el consumo de memoria es una medida importante en la evaluación de calidad de algoritmos. El caso peor de consumo de memoria es la cantidad de unidades de memoria que el algoritmo tendrá que ocupar simultaneamente en el peor caso imaginable. Se define el caso promedio y el caso amortizado igual como con el tiempo de ejecución. Algoritmos y problemas p. 28

53 Clases de magnitud La meta del análisis de algoritmos es evaluar la calidad de un algoritmo en comparación con otros algoritmos o en comparación a la complejidad del problema o alguna cota de complejidad conocida. Típicamente el conteo de pasos de computación falta precisión en el sentido que no es claro que cosas se considera operaciones básicas. Por eso normalmente se caracteriza la calidad de un algoritmo por la clase de magnitud de la función de complejidad y no la función exacta misma. Algoritmos y problemas p. 29

54 Efecto del tamaño de instancia No son interesantes los tiempos de computación para instancias pequeñas, sino que instancias grandes. Con una instancia pequeña, normalmente todos los algoritmos producen resultados rápidamente. Algoritmos y problemas p. 30

55 Crecimiento asintótica Para funciones f : Z + R y g : Z + R, escribimos f(n) O(g(n)) si c > 0 tal que f(n) c g(n) para suficientemente grandes valores de n Algoritmos y problemas p. 31

56 Crecimiento asintótica Para funciones f : Z + R y g : Z + R, escribimos f(n) O(g(n)) si c > 0 tal que f(n) c g(n) para suficientemente grandes valores de n f(n) Ω(g(n)) si c > 0 tal que f(x) c g(x) para suficientemente grandes valores de n Algoritmos y problemas p. 31

57 Crecimiento asintótica Para funciones f : Z + R y g : Z + R, escribimos f(n) O(g(n)) si c > 0 tal que f(n) c g(n) para suficientemente grandes valores de n f(n) Ω(g(n)) si c > 0 tal que f(x) c g(x) para suficientemente grandes valores de n f(n) Θ(g(n)) si c,c > 0 tales que c g(x) f(x) c g(x) para suficientemente grandes valores de n Algoritmos y problemas p. 31

58 Crecimiento asintótica Para funciones f : Z + R y g : Z + R, escribimos f(n) O(g(n)) si c > 0 tal que f(n) c g(n) para suficientemente grandes valores de n f(n) Ω(g(n)) si c > 0 tal que f(x) c g(x) para suficientemente grandes valores de n f(n) Θ(g(n)) si c,c > 0 tales que c g(x) f(x) c g(x) para suficientemente grandes valores de n f(n) o(g(n)) si lím n f(n) g(n) = 0 Algoritmos y problemas p. 31

59 Interpretación O(f(n)) es una cota superior asintótica al tiempo de ejecución Ω(f(n)) es una cota inferior asintótica Θ(f(n)) dice que las dos funciones crecen asintóticamente iguales El símbolo se reemplaza frecuentemente con =. Algoritmos y problemas p. 32

60 Propiedades Las definiciones de crecimiento asintótica se generalizan para funciones de argumentos múltiples y son transitivas: (f(n) O(g(n)) g(n) O(h(n))) f(n) O(h(n)). (f(n) Ω(g(n)) g(n) Ω(h(n))) f(n) Ω(h(n)) Como este aplica para Ω(f(n)) y O(f(n)) los dos, aplica por definición también para Θ(f(n)). Algoritmos y problemas p. 33

61 Polinomios Es fácil formar O(f(n)) de polinomios y muchas otras expresiones por observar que en una suma, el término mayor domina el crecimiento: (f(n) O(h(n)) g(n) O(h(n))) f(n)+g(n) O(h(n)) g(n) O(f(n)) f(n)+g(n) O(f(n)) Algoritmos y problemas p. 34

62 Logaritmos Para cualquier base b > 0 y cada x > 0 tal que x R, aplica que log b (n) O(n x ). Cambiando la base de un logaritmo, llegamos a tener log a (n) = 1 log b (a) log b(n) Θ(log b n), porque log b (a) es un constante. Entonces no hay necesidad de marcar la base en una expresión de complejidad asintótica con logaritmos. Algoritmos y problemas p. 35

63 Funciones exponenciales Para todo x > 1 y todo k > 0 n k O(x n ) O sea, cada polinomial crece asintóticamente más lentamente que cualquiera expresión exponencial. Algoritmos y problemas p. 36

64 Algunas funciones comunes 1e+07 1e f(x) = e x f(x) = 2 x f(x) = x 3 f(x) = x 2 f(x) = x log 2 (x) f(x) = x f(x) = log 2 (x) Algoritmos y problemas p. 37

65 Eficiencia Un algoritmo es eficiente si su tiempo de ejecución tiene una cota superior asintótica que es un polinomio. Algoritmos y problemas p. 38

66 Eficiencia Un algoritmo es eficiente si su tiempo de ejecución tiene una cota superior asintótica que es un polinomio. Un problema que cuenta con por lo menos un algoritmo eficiente es un problema polinomial. Algoritmos y problemas p. 38

67 Eficiencia Un algoritmo es eficiente si su tiempo de ejecución tiene una cota superior asintótica que es un polinomio. Un problema que cuenta con por lo menos un algoritmo eficiente es un problema polinomial. Un problema es intratable si no existe ningún algoritmo eficiente para resolverlo. Algoritmos y problemas p. 38

68 Eficiencia Un algoritmo es eficiente si su tiempo de ejecución tiene una cota superior asintótica que es un polinomio. Un problema que cuenta con por lo menos un algoritmo eficiente es un problema polinomial. Un problema es intratable si no existe ningún algoritmo eficiente para resolverlo. Un problema es sin solución si no cuenta con algoritmo ninguno. Algoritmos y problemas p. 38

69 Tiempos de ejecución f(n) ( ) n ( ) n nlog 2 n n 2 n 3 1,5 n 2 n n! s min a min 36 a s 12,892 a años s 18 min min 12 d s 3 h 32 a s 20 s 12 d a mayor a años menor a un segundo 0 Algoritmos y problemas p. 39

70 Primera tarea para entregar Ordena las funciones siguientes según su crecimiento asintóticoo(f i (n)) de la menos rápida a la más rápida: f 1 = 7 n f 5 = n f 2 = n n f 6 = log 7 n f 3 = n 7 f 7 = 7 log 7 n f 4 = nlog 7 n f 8 = 700n Algoritmos y problemas p. 40

71 Segunda tarea para entregar Examina si el grafo con esta matriz de adyacencia de aristas es plano: Algoritmos y problemas p. 41

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

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

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

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

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

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

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

Problemas NP-completos

Problemas NP-completos Análisis de Algoritmos Problemas NP-completos Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Problemas NP-completos p. 1 Problemas NP-completos La clase NP contiene numerosos problemas

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

Dividir-conquistar y podar-buscar

Dividir-conquistar y podar-buscar Técnicas de diseño de algoritmos Dividir-conquistar y podar-buscar Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL DC y PB p. 1 Diseño de algoritmos La meta: encontrar una manera eficiente

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

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

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

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 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

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

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

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

Análisis Amortizado. Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera

Análisis Amortizado. Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Análisis Amortizado Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera 1 Análisis de algoritmos La eficiencia de un programa tiene dos

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

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

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

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

COMPUTACIÓN ALEATORIZADA

COMPUTACIÓN ALEATORIZADA Conferencia magistral COMPUTACIÓN ALEATORIZADA Probabilidad y algoritmos Dra. Elisa Schaeffer Profesora del Posgrado de Ing. de Sistemas (PISIS) en la Facultad de Ing. Mecánica y Eléctrica (FIME), Coordinador

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

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

Algorítmica y Lenguajes de Programación. Complejidad computacional

Algorítmica y Lenguajes de Programación. Complejidad computacional Algorítmica y Lenguajes de Programación Complejidad computacional Complejidad computacional. Introducción La complejidad computacional estudia la dificultad inherente de problemas de importancia teórica

Más detalles

Algoritmos de aproximación

Algoritmos de aproximación Técnicas de diseño de algoritmos Algoritmos de aproximación Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Algoritmos de aproximación p. 1 Soluciones no-óptimas En situaciones donde

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

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

Estructuras de datos Listas y árboles

Estructuras de datos Listas y árboles Estructuras de datos Listas y árboles Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Listas y árboles p. 1 Listas Listas son estructuras un poco más avanzadas que puros arreglos, como

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

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

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

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

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

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

Clases de complejidad

Clases de complejidad Análisis de Algoritmos Clases de complejidad Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Clases de complejidad p. 1 Clase de complejidad Los requisitos para definir una clase: fijar

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

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

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

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

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

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Introducción: El Rol de los Algoritmos en Computación DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Temario 2 1. Introducción 2. Notación Asintótica 3. Recurrencias

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

Algoritmos aleatorizados

Algoritmos aleatorizados Técnicas de diseño de algoritmos Algoritmos aleatorizados Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Algoritmos aleatorizados p. 1 Algoritmos aleatorizados = algoritmos que incorporan

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

CIENCIA DE LA COMPUTACION

CIENCIA DE LA COMPUTACION CIENCIA DE LA COMPUTACION Docentes Profesor: Alejandro Rozenfeld Jefe de trabajos prácticos: Andrea L. Riera Sebastián Villar Ayudantes diplomados: Fabio Bucciarelli Marcelo Marchioni Ayudante Alumno:

Más detalles

Programación dinámica p. 1

Programación dinámica p. 1 Técnicas de diseño de algoritmos Programación dinámica Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Programación dinámica p. 1 Programación dinámica En programación dinámica, uno

Más detalles

Algoritmos y Complejidad

Algoritmos y Complejidad IN47B, Ingeniería de Operaciones Contenidos 1 Introducción 2 Analizando Algoritmos 3 Complejidad 4 N P-completitud Qué es un Algoritmo? Qué es un Algoritmo? Definición Un algoritmo es un conjunto de pasos

Más detalles

Programación Estructurada. Sesión 3:Estructras de control

Programación Estructurada. Sesión 3:Estructras de control Programación Estructurada Sesión 3:Estructras de control Contextualización En esta sesión comenzaremos con las Estructuras de control, las cuales brindan opciones de ejecución o decisión dentro de la elaboración

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

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

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

Tablas de dispersión

Tablas de dispersión Estructuras de datos Tablas de dispersión Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Tablas de dispersión y conjuntos p. 1 Tablas de dispersión dinámicas Una tabla de dispersión

Más detalles

Algoritmos pseudo-polinomiales

Algoritmos pseudo-polinomiales Análisis de Algoritmos Algoritmos pseudo-polinomiales Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Algoritmos pseudo-polinomiales p. 1 HAMILTON PATH es NP-completo La reducción es

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

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

RAMIFICAR-ACOTAR Y PLANOS DE CORTE

RAMIFICAR-ACOTAR Y PLANOS DE CORTE RAMIFICAR-ACOTAR Y PLANOS DE CORTE ELISA SCHAEFFER Programa de Posgrado en Ingeniería de Sistemas (PISIS) elisa@yalma.fime.uanl.mx INVESTIGACIÓN DE OPERACIONES EL MÉTODO RAMIFICAR-ACOTAR (RA) (ingl. Branch

Más detalles

Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).

Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down). PLANTEMAIENTO DEL PROBLEMA Identificación de entradas y salidas Un algoritmo puede ser definido como la secuencia ordenada de pasos, sin ambigüedades, que conducen a la resolución de un problema dado y

Más detalles

Algoritmos y Complejidad

Algoritmos y Complejidad Algoritmos y Complejidad Técnicas y Herramientas Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2014 Técnicas y Herramientas Técnicas

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

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

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 - Problemas NP-Completos. Algoritmos y Estructuras de Datos III

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III Complejidad - Problemas NP-Completos Algoritmos y Estructuras de Datos III Teoría de Complejidad Un algoritmo eficiente es un algoritmo de complejidad polinomial. Un problema está bien resuelto si se conocen

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

Técnicas y Herramientas. Algoritmos y Complejidad. Técnicas de Demostración. Técnicas y Herramientas. Herramientas Matemáticas Básicas

Técnicas y Herramientas. Algoritmos y Complejidad. Técnicas de Demostración. Técnicas y Herramientas. Herramientas Matemáticas Básicas Técnicas y Herramientas Técnicas y Herramientas Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2014 Técnicas de Demostración Herramientas

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

Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 3: Relaciones, Funciones, y Notación Asintótica

Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 3: Relaciones, Funciones, y Notación Asintótica Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 3: Relaciones, Funciones, y Notación Asintótica Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 1: Fundamentos:

Más detalles

Búsqueda en espacio de estados

Búsqueda en espacio de estados Búsqueda en espacio de estados Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Inteligencia Artificial CCIA, US Búsqueda en espacio de estados IA 1 / 35 Metodología

Más detalles

Algoritmo. Programa. Lenguaje algorítmico

Algoritmo. Programa. Lenguaje algorítmico ESCUELA DE EDUCACION SECUNDARIA TECNICA N 3 LENGUAJE ELECTRONICO PROFESOR: PAOLO, MARCOS GERMAN TEMA: ALGORITMOS Algoritmo Es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y

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

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Clase teórica 2 Algoritmos en C Página 1 de 6 TIPOS DE DATOS Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Por el momento nuestro

Más detalles

Complejidad amortizada

Complejidad amortizada Análisis de algoritmos Complejidad amortizada Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Complejidad amortizada p. 1 Complejidad amortizada La idea en el análisis de complejidad

Más detalles

4. Complejidad computacional

4. Complejidad computacional Fundamentos de Programación Entera 4. Complejidad computacional Carlos Testuri Germán Ferrari Departamento de Investigación Operativa Instituto de Computación Facultad de Ingeniería Universidad de la República

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

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

MARITZA HERRERA FLOREZ YUDY MARCELA BOLAÑOS RIVERA

MARITZA HERRERA FLOREZ YUDY MARCELA BOLAÑOS RIVERA ALGORITMOS DE APROXIMACIÓN PARA PROBLEMAS NP DUROS MARITZA HERRERA FLOREZ YUDY MARCELA BOLAÑOS RIVERA UNIVERSIDAD DEL CAUCA FACULTAD DE CIENCIAS NATURALES, EXACTAS Y DE LA EDUCACIÓN DEPARTAMENTO DE MATEMÁTICAS

Más detalles

Introducción a la complejidad computacional

Introducción a la complejidad computacional Introducción a la complejidad computacional definida sobre anillos arbitrarios 18 de junio de 2016 Fuente: http://www.utmmcss.com/ Por qué otro modelo? Continuo vs discreto. Intuición interiorizada del

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

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

LENGUAJES Y GRAMÁTICAS

LENGUAJES Y GRAMÁTICAS LENGUAJES Y GRAMÁTICAS Orlando Arboleda Molina Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle 20 de septiembre de 2008 Contenido Lenguajes y Gramáticas Gramáticas Gramáticas

Más detalles

I. Complejidad de Problemas

I. Complejidad de Problemas I. Complejidad de Problemas 1. Complejidad de Problemas Tópicos Clasificación de Problemas Clasificación por su Naturaleza Clasificación por su Tratabilidad Clasificación por el tipo de Respuesta 1.1 Clasificación

Más detalles

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco)

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco) Tema 1 Estructuras de datos (Prof. Edgardo A. Franco) Contenido Algoritmia Qué es un algoritmo? Métodos algorítmicos Diagrama de flujo Símbolos utilizados en los diagramas de flujo Reglas para la construcción

Más detalles

Problemas de decisión y su complejidad computacional

Problemas de decisión y su complejidad computacional Problema de decisión Problemas de decisión y su complejidad computacional! Los problemas que tienen dos respuestas posibles! Sí o no! Verdad o falso! Posible o imposible Instancia! Existe o no existe!

Más detalles

Análisis de Algoritmos Problemas de grafos

Análisis de Algoritmos Problemas de grafos Análisis de Algoritmos Problemas de grafos Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Problemas de grafos p. 1 INDEPENDENT SET es NP-completo Necesitamos un gadget : el triángulo.

Más detalles

I. Complejidad de Problemas. Sistemas Expertos Copyright 2005, David Mauricio

I. Complejidad de Problemas. Sistemas Expertos Copyright 2005, David Mauricio Universidad Nacional Mayor de San Marcos Facultad de Ciencias Matematicas I. Complejidad de Problemas 1 1. Complejidad de Problemas Tópicos Clasificación de Problemas Clasificación por su Naturaleza Clasificación

Más detalles

! !

!  ! Programa semanal 1. Introducción a algoritmos: variables, condiciones y repeticiones; pseudocódigo 2. Matemáticas de algoritmos; lógica computacional 3. Modelos formales de computación: autómatas y máquinas

Más detalles

Temas. Objetivo 12:00

Temas. Objetivo 12:00 0 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

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 13: Completitud NP M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción P y NP La clase P (Polinómicamente acotado)

Más detalles

Prof. María Alejandra Quintero. Informática Año

Prof. María Alejandra Quintero. Informática Año Prof. María Alejandra Quintero Informática Año 2014-2015 Es la acción de escribir programas de computación con el objetivo de resolver un determinado problema. Implica escribir instrucciones para indicarle

Más detalles

Complejidad Computacional

Complejidad Computacional Complejidad Computacional Clasificación de Problemas Teoría de la Complejidad Estudia la manera de clasificar algoritmos como buenos o malos. Estudia la manera de clasificar problemas de acuerdo a la dificultad

Más detalles

Programación Introducción al curso

Programación Introducción al curso Programación 2 1 - Introducción al curso Objetivos del curso Presentar y analizar las estructuras de datos y algoritmos que forman la base para la resolución de problemas en computación; Introducir nociones

Más detalles

Programación en Mathematica

Programación en Mathematica UNIVERSIDAD DE JAÉN ESCUELA POLITÉCNICA SUPERIOR Dpto. de Matemáticas (Área de Álgebra) Curso 2004/05 PRÁCTICA Nº3 Programación en Mathematica Mathematica no sólo es un paquete de cálculo simbólico en

Más detalles

Tema: Análisis Léxico

Tema: Análisis Léxico Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Léxico Contenido En esta guía se dará a conocer la manera en que un compilador realiza el análisis

Más detalles

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL 1 TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL TECNOLOGÍA DE LA COMPUTADORA FACILITADOR: PARTICIPANTE: DAVID, CHIRIQUÍ 2015 2 Qué es un programa? Un programa informático es un conjunto

Más detalles

OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION

OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION El sistema de numeración usado habitualmente es el decimal, de base 10, que no es adecuado para ser manejado por el ordenador, fundamentalmente

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