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

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

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

Transcripción

1 Complejidad Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid Java: Complejidad / 1 Comparación long fib (int n) {if (n<=1) return n; else return fib(n-1)+fib(n-2); } long fibo (int n,x,y) {if (n<=1) return x+y; else return fibo(n-1,y,x+y); } Los dos métodos calculan la función fib correctamente, pero cuál preferiría? El primero es más claro. El segundo es más eficiente. cdk@it.uc3m.es Java: Complejidad / 2 1

2 Cómo medimos? Midiendo el tiempo de ejecución (en función del tamaño de la entrada) No podemos probar con todas las entradas Es necesario implementar el algoritmo Depende del software y el hardware Busquemos otra medida Más abstracta Más fácil de obtener cdk@it.uc3m.es Java: Complejidad / 3 Cómo medimos? Asociamos a cada algoritmo: f(n) Emplearemos el caso peor para caracterizar el tiempo de ejecución Es más fácil de calcular Interesa la velocidad de crecimiento del tiempo de ejecución en función del tamaño de la entrada Comportamiento asintótico Tamaño de la entrada cdk@it.uc3m.es Java: Complejidad / 4 2

3 Cómo medimos? Asociamos a cada operación primitiva un tiempo de ejecución constante: Asignación Llamada a método Operación aritmética, etc. Indexación en array Seguir una referencia Volver de un método Etc. cdk@it.uc3m.es Java: Complejidad / 5 Ejemplo (en pseudocódigo) Hallar el máximo de un array Entrada: un array A con n enteros Salida: el elemento mayor de A Algoritmo: arraymax(a,n) current=a[0] for i=1 to n-1 do if current<a[i] then current=a[i] return current cdk@it.uc3m.es Java: Complejidad / 6 3

4 Ejemplo (en pseudocódigo) current=a[0] for i=1 to n-1 do if current<a[i] then current=a[i] return current Mínimo núm. de operaciones (si es A[0]): 2+1+n+4(n-1)+1=5n Máximo núm. de operaciones (si A creciente): 2+1+n+6(n-1)+1=7n-3 cdk@it.uc3m.es Java: Complejidad / 7 Notación O c g(n) f(n) n 0 f(n) es O(g(n)) sii f(n) c g(n) para n n 0 cdk@it.uc3m.es Java: Complejidad / 8 4

5 Notación O 7n-3 es O(n) c=7, n 0 =1 7n-3 7n 20n 3 +10n log n+5 es O(n 3 ) 3 log n + log log n es O(log n) es O(1) 5/n es O(1/n) cdk@it.uc3m.es Java: Complejidad / 9 Crecimiento de funciones log n n n n log n n 2 n 3 2 n 1 1, , , , , , ,8 * , ,4 * cdk@it.uc3m.es Java: Complejidad / 10 5

6 Crecimiento de funciones Java: Complejidad / 11 Tamaño máximo de un problema Tiempo de ejecución 1 segundo 1 minuto 1 hora 400n n log n n n n cdk@it.uc3m.es Java: Complejidad / 12 6

7 Ejemplo Dado un array A de n números Calcular otro array B, tal que: i j=0 A[j] B[i]= i+1 cdk@it.uc3m.es Java: Complejidad / 13 Solución 1 for i=0 to n-1 do a=0 for j=0 to i do a=a+a[j] B[i]=a/(i+1) return B cdk@it.uc3m.es Java: Complejidad / 14 7

8 Solución 1: Análisis Partes: Inicializar y devolver array B: O(n) Bucle i: se ejecuta n veces Bucle j: se ejecuta n=n(n+1)/2 veces: O(n 2 ) Total: O(n)+O(n)+O(n 2 )= O(n 2 ) Orden cuadrático cdk@it.uc3m.es Java: Complejidad / 15 Optimización B[i]=(A[0]+...+A[i])/(i+1) B[i+1]=(A[0]+...+A[i]+A[i+1])/(i+2) B[i+1]=(B[i]*(i+1)+A[i+1])/(i+2) cdk@it.uc3m.es Java: Complejidad / 16 8

9 Solución 2 s=0 for i=0 to (n-1) do s=s+a[i] B[i]=s/(i+1) return B cdk@it.uc3m.es Java: Complejidad / 17 Solución 2: Análisis Partes: Inicializar y devolver array B: O(n) Inicializar s: O(1) Bucle i: se ejecuta n veces Total: O(n)+O(1)+O(n)=O(n) Orden lineal cdk@it.uc3m.es Java: Complejidad / 18 9

10 Hay un algoritmo para resolver cualquier problema? Se puede resolver cualquier problema por medio de un algoritmo? Cuál es el límite de la computabilidad? Hilbert pensaba que todos los problemas matemáticos eran computables En los años 1930, Gödel, Turing, Church y otros demostraron que no es así cdk@it.uc3m.es Java: Complejidad / 19 Computabilidad Un problema matemático se llama computable, si puede puede ser resuelto en principio por un dispositivo de computación Hay una clasificación de problemas matemáticos en computables y no computables cdk@it.uc3m.es Java: Complejidad / 20 10

11 Dispositivo de computación Cuál es el dispositivo de computación más sencillo, pero que sin embargo entraña la capacidad de todos los ordenadores? Se definieron varios dispositivos (imaginarios) o formalismos matemáticos cdk@it.uc3m.es Java: Complejidad / 21 Definiciones de computabilidad Andrey Markov ( ) Algoritmos de Markov Alonzo Church ( ) Cálculo Kurt Gödel ( ) Funciones recursivas Stephen Kleene ( ) Sistemas formales Alan Turing ( ) Máquinas de Turing cdk@it.uc3m.es Java: Complejidad / 22 11

12 Máquina de Turing Componentes: Control con un nº finito de estados Cabeza lectora/escritora Cinta infinita Funcionamiento: Cabeza lee símbolo de cinta y en función de él y del estado, escribe un símbolo en la cinta, la mueve y pasa a un nuevo estado cdk@it.uc3m.es Java: Complejidad / 23 Máquinas de Turing MT determinista, si para cada combinación (símbolo leído, estado), hay una única continuación (símbolo a escribir, estado, movimiento) MT no-determinista si hay más cdk@it.uc3m.es Java: Complejidad / 24 12

13 Clases de problemas El conjunto de problemas computables se dividen en varias clases: P (polinomial con MT determinista) NP (polinomial con MT no-determinista) etc. cdk@it.uc3m.es Java: Complejidad / 25 Es P = NP? Resolver un sudoku (NP) vs Comprobar si está bien resuelto (P) El Clay Mathematics Institute ofrece US$ 1 millón para el que resuelva si los dos conjuntos son iguales o no cdk@it.uc3m.es Java: Complejidad / 26 13

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

Recursión. Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid. Java: Recursión / 1 Recursión Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid cdk@it.uc3m.es Java: Recursión / 1 Método recursivo Un método recursivo es aquel que (directa o indirectamente) se llama

Más detalles

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

Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid. Java: Recursión / 1 Recursión Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid cdk@it.uc3m.es Java: Recursión / 1 Método recursivo Un método recursivo es aquel que (directa o indirectamente) se llama

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

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

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

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

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

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

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

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

Temas. Objetivo. Que el estudiante logre:

Temas. Objetivo. Que el estudiante logre: 0 Temas Objetivo Que el estudiante logre: 1) Formalizar problemas de decisión. 2) Identificar conceptos constructivos de la Teoría de la Computabilidad. 1 2 TEORÍA DE LA COMPLEJIDAD COMPUTACIONAL TEORÍA

Más detalles

Cálculos en la Naturaleza viva (I)

Cálculos en la Naturaleza viva (I) Cálculos en la Naturaleza viva (I) Mario de J. Pérez Jiménez Grupo de Investigación en Computación Natural Dpto. Ciencias de la Computación e Inteligencia Artificial ETS Ingeniería Informática, Universidad

Más detalles

Análisis de algoritmos. Recursividad

Análisis de algoritmos. Recursividad Análisis de algoritmos Recursividad 1 Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Ésta muñeca, también contiene

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

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

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

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

Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1)

Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1) Tema 3: Características de la programación funcional Sesión 5: El paradigma funcional (1) Referencias Capítulo 1.1.5 SICP: [[http://mitpress.mit.edu/sicp/full-text/book/book-z- H-10.html#%_sec_1.1.5][The

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

Computabilidad y Lenguajes Formales: Introducción

Computabilidad y Lenguajes Formales: Introducción 300CIG007 Computabilidad y Lenguajes Formales: Introducción Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez galvarez@puj.edu.co Introducción 1. De que

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

Maquina de Turing. 5. Fundamentos de algoritmos. Turing TURING TURING 10/08/2010. MI Elizabeth Fonseca Chávez

Maquina de Turing. 5. Fundamentos de algoritmos. Turing TURING TURING 10/08/2010. MI Elizabeth Fonseca Chávez Maquina de Turing 5. Fundamentos de algoritmos MI Elizabeth Fonseca Chávez matemático inglés Alan Turing Turing Definición de algoritmo: conjunto ordenado de operaciones que permite hallar la solución

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

Qué es la recursividad?

Qué es la recursividad? Recursividad 1 Ejemplo Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Esta muñeca, también contiene otra muñeca dentro.

Más detalles

1) Comprender la importancia que tiene la Máquina de Turing para la Ciencia de la Computación.

1) Comprender la importancia que tiene la Máquina de Turing para la Ciencia de la Computación. 0 1 Temas 2 Objetivos 1) Comprender la importancia que tiene la Máquina de Turing para la Ciencia de la Computación. 2) Definir máquinas de Turing unicinta y multicinta, para reconocer lenguajes y para

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

PROGRAMACIÓN II GEB 16:28

PROGRAMACIÓN II GEB 16:28 GEB 1 Temas Problemas demostrablemente irresolubles Problemas resolubles Clase P, NP, NP completa y CO-NP Objetivo Que el estudiante logre entender la clasificación de problemas y su importancia para la

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

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

Multiplicación de matrices simétricas

Multiplicación de matrices simétricas Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =

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

6. COMPLEJIDAD COMPUTACIONAL

6. COMPLEJIDAD COMPUTACIONAL 6. COMPLEJIDAD COMPUTACIONAL Esta sección quiere mostrar la importancia de estimar un algoritmo en términos de los recursos físicos que va a utilizar antes que el algoritmo sea codificado en un lenguaje

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 2015 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y

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

Programación de sistemas Recursión

Programación de sistemas Recursión Programación de sistemas Recursión Departamento de Ingeniería Telemática 1 Contenidos Recursión Tipos de recursión Recursión vs. iteración 2 Recursión Proceso por el cual un método se llama a sí mismo

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

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

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 y Complejidad de Algoritmos. Completitud NP

Análisis y Complejidad de Algoritmos. Completitud NP Análisis y Complejidad de Algoritmos Completitud NP 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

Más detalles

Estructuras de Datos. Clase 3 Análisis de algoritmos recursivos

Estructuras de Datos. Clase 3 Análisis de algoritmos recursivos Clase 3 Análisis de algoritmos recursivos http://cs.uns.edu.ar/~sag Bahía Blanca, Argentina Notación asintótica (Big-Oh) Sean f(n) y g(n) : N R f(n) es O(g(n)) ssiexisten c real con c>0 y n 0 natural con

Más detalles

Programación de sistemas

Programación de sistemas Programación de sistemas Recursión Julio Villena Román MATERIALES BASADOS EN EL TRABAJO DE DIFERENTES AUTORES: Carlos Delgado Kloos, Carlos Alario Hoyos 1 Contenidos Recursión Tipos

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

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

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

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

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

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

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 a las Ciencias de la Computación

Introducción a las Ciencias de la Computación Introducción a las Ciencias de la Computación Colaboratorio de Computación Avanzada (CNCA) 2015 1 / 22 Contenidos 1 Computación e Informática Caracterización Áreas relacionadas 2 Antecedentes Orígenes

Más detalles

Teoría Matemática de la Computación Segundo Problemario Prof. Miguel A. Pizaña 13 de julio de 2016

Teoría Matemática de la Computación Segundo Problemario Prof. Miguel A. Pizaña 13 de julio de 2016 Teoría Matemática de la Computación Segundo Problemario Prof. Miguel A. Pizaña 13 de julio de 2016 I Máquinas de Turing. 1. Qué es un a Máquina de Turing? Cómo se define? Cómo se llaman las teorías que

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

Introducción: historia de las Ciencias de la Computación. Informática Teórica I: Tema 1

Introducción: historia de las Ciencias de la Computación. Informática Teórica I: Tema 1 Introducción: historia de las Ciencias de la Computación Informática Teórica I: Tema 1 Ciencias de la Computación:... Teoría de Lenguajes, Gramáticas, Autómatas, Redes de Neuronas, Complejidad... Informática

Más detalles

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos Estructura de Datos y Algoritmos Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos 1. Algorimos de ordenación Discutiremos el problema de ordenar un array de elementos. A los efectos de simplificar

Más detalles

Computabilidad y Lenguajes Formales: Teoría de la Computabilidad: Máquinas de Turing

Computabilidad y Lenguajes Formales: Teoría de la Computabilidad: Máquinas de Turing 300CIG007 Computabilidad y Lenguajes Formales: Teoría de la Computabilidad: Máquinas de Turing Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Máquina

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

Enfoques computacionales de la memoria humana: un estado del arte. Renato Garita Figueiredo PROIFED

Enfoques computacionales de la memoria humana: un estado del arte. Renato Garita Figueiredo PROIFED Enfoques computacionales de la memoria humana: un estado del arte Renato Garita Figueiredo PROIFED Revisión bibliográfica En total se revisaron 35 artículos. Categorización: - Aplicaciones de interacción

Más detalles

8. Complejidad Computacional

8. Complejidad Computacional 8. Complejidad Computacional Araceli Sanchis de Miguel Agapito Ledezma Espino José A. Iglesias Mar

Más detalles

Ciencias de la Computación I

Ciencias de la Computación I Ciencias de la Computación I Nociones básicas de Computabilidad Problemas y Lenguajes Un problema se describe con un lenguaje Cuanto más formal el lenguaje, más precisa la formulación del problema Los

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

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

Problemas computacionales, intratabilidad y problemas NP completos. 26 de agosto de Facultad de Ingeniería. Universidad del Valle Complejidad Complejidad, in NP completos Facultad de Ingeniería. Universidad del Valle 26 de agosto de 2014 Contenido Complejidad 1 2 3 Complejidad computacional Complejidad Notación De acuerdo a la complejidad

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

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

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

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

Tema 2 Introducción a la Programación en C.

Tema 2 Introducción a la Programación en C. Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes

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

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

Tema I: Introducción. Computación Natural

Tema I: Introducción. Computación Natural Tema I: Introducción. Computación Natural Planteamiento y resolución de de problemas. Búsqueda de procedimientos sistemáticos. Resolución mecánica de problemas: Transferencia de conocimiento. Apoyo a la

Más detalles

Modelos de Informática Teórica Capítulo 2 - Clases de Complejidad

Modelos de Informática Teórica Capítulo 2 - Clases de Complejidad Modelos de Informática TeóricaCapítulo 2 - Clases de Complejidad p. 1/40 Modelos de Informática Teórica Capítulo 2 - Clases de Complejidad Serafín Moral Callejón Departamento de Ciencias de la Computación

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

Clases de complejidad computacional: P y NP

Clases de complejidad computacional: P y NP 1er cuatrimestre 2006 La teoría de Se aplica a problemas de decisión, o sea problemas que tienen como respuesta SI o NO (aunque es sencillo ver que sus implicancias pueden extenderse a problemas de optimización).

Más detalles

Indice COMPUTABILIDAD Y COMPLEJIDAD. Introducción. Introducción

Indice COMPUTABILIDAD Y COMPLEJIDAD. Introducción. Introducción COMPUTABILIDAD Y COMPLEJIDAD Belén Pérez Lancho Dpto. Informática y Automática 12-Enero-2006 Computabilidad Introducción Modelos de computación Máquinas de Turing Funciones Recursivas Parciales Conclusiones

Más detalles

1. Definiciones previas

1. Definiciones previas Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Matemática MA47A: Optimización Combinatorial Profesor: Roberto Cominetti Auxiliares: Raul Aliaga Diaz, Cristóbal

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

Capítulo 9. Introducción a los lenguajes formales. Continuar

Capítulo 9. Introducción a los lenguajes formales. Continuar Capítulo 9. Introducción a los lenguajes formales Continuar Introducción Un lenguaje es un conjunto de símbolos y métodos para estructurar y combinar dichos símbolos. Un lenguaje también recibe el nombre

Más detalles

Clases 18 y 19:Máquina de Turing. M. en C. Edgardo Adrián Franco Martínez

Clases 18 y 19:Máquina de Turing. M. en C. Edgardo Adrián Franco Martínez Clases 18 y 19:Máquina de Turing M. en C. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom edfranco@ipn.mx 1 Contenido Máquinas de Turing Definición formal de la

Más detalles

Tema 06: Recursividad

Tema 06: Recursividad Tema 06: Recursividad M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Recursión Recursividad Programación

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

Una (muy) breve introducción a la teoría de la computación

Una (muy) breve introducción a la teoría de la computación Una (muy) breve introducción a la teoría de la computación Marcelo Arenas M. Arenas Una (muy) breve introducción a la teoría de la computación 1 / 48 Ciencia de la computación Cuál es el objeto de estudio

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

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

la máquina de Turing (MT) como sustituto formal del concepto de algoritmo 0 0 r 1

la máquina de Turing (MT) como sustituto formal del concepto de algoritmo 0 0 r 1 la máquina de Turing (MT) como sustituto formal del concepto de algoritmo 0 0 r 1 0 1 1 0 l h 0 1 1 1 0 0 índice de materias fundamentos matemáticos introducción histórica modelos de cálculo lenguajes

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

Problemas fáciles, difíciles e imposibles

Problemas fáciles, difíciles e imposibles Problemas fáciles, difíciles e imposibles La computadora lo resuelve todo? Santiago Figueira Departamento de Computación FCEyN, UBA Semana de la Computación 2015 1 Qué son los métodos efectivos? Intuitivamente

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

13.3. MT para reconocer lenguajes

13.3. MT para reconocer lenguajes 13.3. MT para reconocer lenguajes Gramática equivalente a una MT Sea M=(Γ,Σ,,Q,q 0,f,F) una Máquina de Turing. L(M) es el lenguaje aceptado por la máquina M. A partir de M se puede crear una gramática

Más detalles

PLANIFICACIÓN SEMANAL DE LA ASIGNATURA

PLANIFICACIÓN SEMANAL DE LA ASIGNATURA DENOMINACIÓN ASIGNATURA: TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES CURSO 15-16 GRADO: INGENIERÍA INFORMÁTICA CURSO: 2 La asignatura tiene 29 sesiones que se distribuyen a lo largo de 14 semanas. Los laboratorios

Más detalles

como les va con las practicas?

como les va con las practicas? como les va con las practicas? Problemas NP-completos y Estructuras de datos básicas (representación de datos) mat-151 1 Una maquina de Turing Aceptation state Una maquina de Turing Maquina de Turing Determinística,

Más detalles

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas Arreglos Algoritmos y Estructuras de Datos I Primer cuatrimestre 2007 Teórica de imperativo 3 Algoritmos de búsqueda secuencias de una cantidad fija de variables del mismo tipo se declaran con un nombre,,

Más detalles

Máquinas de Turing, programas y tesis de Turing-Church

Máquinas de Turing, programas y tesis de Turing-Church Máquinas de Turing, programas y tesis de Turing-Church Elvira Mayordomo, Universidad de Zaragoza Ilustraciones: Costas Busch, Rensselaer Polytechnic Institute 1 Máquinas de Turing 2 La jerarquía de lenguajes

Más detalles

Fundamentos de Ciencias de la Computación

Fundamentos de Ciencias de la Computación Fundamentos de Ciencias de la Computación Lenguajes APND Clase 13: Introducción Maquinas de Turing Lenguajes regulares Lenguajes Libres de Contexto Primer Cuatrimestre de 2005 Departamento de Cs. e Ing.

Más detalles

Estrategias de Diseño de Algoritmos

Estrategias de Diseño de Algoritmos Estrategias de Diseño de Algoritmos Introducción A través de los años, los científicos de la computación han identificado diversas técnicas generales que a menudo producen algorit mos eficientes para la

Más detalles

RECURSIVIDAD. Prof. Ing. M.Sc. Fulbia Torres

RECURSIVIDAD. Prof. Ing. M.Sc. Fulbia Torres ESTRUCTURAS DE DATOS 2006 Prof. UNIDAD II ESTRUCTURAS DE DATOS RECURSIVIDAD Definición. Estado base. Estado general. Ejemplos. Ejercicios. DEFINICIÓN Es una técnica de programación muy potente que permite

Más detalles

Recursividad. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Recursividad. Dept. Ciencias de la Computación e I.A. Universidad de Granada TEMA Recursividad Dept. Ciencias de la Computación e I.A. Universidad de Granada Índice Introducción a la recursión Recursividad frente a iteración Eficiencia de los algoritmos recursivos Ejemplos y ejercicios

Más detalles