Práctica 2 - Ejercicio 2.8

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

Download "Práctica 2 - Ejercicio 2.8"

Transcripción

1 Algoritmos y Estructura de Datos III Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 27 de Marzo de 2013

2 2.8 - Euclides 2.8. a. Escribir el algoritmo de Euclides para calcular el máximo común divisor entre 2 números b y c en forma recursiva y no recursiva. Mostrar que su complejidad es O(min{b,c}). Puede construir un ejemplo (un peor caso) donde esta complejidad efectivamente se alcance? Puede hacerlo para b y c tan grandes como se desee?

3 Euclides - Repaso Regla de euclides Si b,c enteros positivos y b c luego mcd(b, c) = mcd(c, b mod c).

4 Euclides - Repaso Regla de euclides Si b,c enteros positivos y b c luego mcd(b, c) = mcd(c, b mod c). Prueba Basta mostrar que mcd(b, c) = mcd(c, b c).

5 Euclides - Repaso Regla de euclides Si b,c enteros positivos y b c luego mcd(b, c) = mcd(c, b mod c). Prueba Basta mostrar que mcd(b, c) = mcd(c, b c). Si g b y g c g b c: mcd(b, c) mcd(c, b c).

6 Euclides - Repaso Regla de euclides Si b,c enteros positivos y b c luego mcd(b, c) = mcd(c, b mod c). Prueba Basta mostrar que mcd(b, c) = mcd(c, b c). Si g b y g c g b c: mcd(b, c) mcd(c, b c). b = g k 1, c = g k 2, b c = g k 1 g k 2 = g (k 1 k 2 )

7 Euclides - Repaso Regla de euclides Si b,c enteros positivos y b c luego mcd(b, c) = mcd(c, b mod c). Prueba Basta mostrar que mcd(b, c) = mcd(c, b c). Si g b y g c g b c: mcd(b, c) mcd(c, b c). b = g k 1, c = g k 2, b c = g k 1 g k 2 = g (k 1 k 2 ) : Busco el mayor g posible. Sirve para (b, c) sirve para (c, b c), pero talvez haya g > g que divida (c, b c).

8 Euclides - Repaso Regla de euclides Si b,c enteros positivos y b c luego mcd(b, c) = mcd(c, b mod c). Prueba Basta mostrar que mcd(b, c) = mcd(c, b c). Si g b y g c g b c: mcd(b, c) mcd(c, b c). b = g k 1, c = g k 2, b c = g k 1 g k 2 = g (k 1 k 2 ) : Busco el mayor g posible. Sirve para (b, c) sirve para (c, b c), pero talvez haya g > g que divida (c, b c). Si g b c y g c g b : mcd(b, c) mcd(b c, c).

9 2.8. a. Algoritmo recursivo Algorithm 1: Euclides-Recursivo Data: b, c Result: mcd(b, c) if c = 0 then return b else return Euclides-Recursivo(c, b mod c)

10 2.8. a. Algoritmo no recursivo Algorithm 2: Euclides-Iterativo Data: b, c Result: mcd(b, c) while c 0 do t := c c := b mod t b := t return b

11 2.8. a. Complejidad Mostrar que la complejidad temporal está acotada por: O(min{b, c}).

12 2.8. a. Complejidad Mostrar que la complejidad temporal está acotada por: O(min{b, c}). Qué número es menor luego de la primer iteración?

13 2.8. a. Complejidad Mostrar que la complejidad temporal está acotada por: O(min{b, c}). Qué número es menor luego de la primer iteración? (b, c) (c, b mod c)

14 2.8. a. Complejidad Mostrar que la complejidad temporal está acotada por: O(min{b, c}). Qué número es menor luego de la primer iteración? (b, c) (c, b mod c) Comparar c vs b mod c:

15 2.8. a. Complejidad Mostrar que la complejidad temporal está acotada por: O(min{b, c}). Qué número es menor luego de la primer iteración? (b, c) (c, b mod c) Comparar c vs b mod c: b < c c c b > c b b b mod c c c b mod c

16 2.8. a. Complejidad Mostrar que la complejidad temporal está acotada por: O(min{b, c}). Qué número es menor luego de la primer iteración? (b, c) (c, b mod c) Comparar c vs b mod c: b < c c c b > c b b b mod c c c b mod c si b = c?

17 2.8. a. Complejidad Luego de la primer iteración: c := b mod c min{b, c}

18 2.8. a. Complejidad Luego de la primer iteración: c := b mod c min{b, c} En cada iteración c disminuye en al menos una unidad

19 2.8. a. Complejidad Luego de la primer iteración: c := b mod c min{b, c} En cada iteración c disminuye en al menos una unidad El algoritmo termina cuando c = 0

20 2.8. a. Complejidad Luego de la primer iteración: c := b mod c min{b, c} En cada iteración c disminuye en al menos una unidad El algoritmo termina cuando c = 0 Luego de k + 1 iteraciones, el algoritmo termina, donde k = min{b, c}

21 2.8. a. Complejidad Luego de la primer iteración: c := b mod c min{b, c} En cada iteración c disminuye en al menos una unidad El algoritmo termina cuando c = 0 Luego de k + 1 iteraciones, el algoritmo termina, donde k = min{b, c} Ejemplo de un peor caso? Familia de peores casos? Ideas?

22 2.8. b. Analizar el siguiente algoritmo para determinar el máximo común divisor entre dos números b y c, y mostrar que su complejidad también es O(min {b,c}). 1. Poner g = min { b,c } 2. mientras g > 1 3. si b/g y c/g son enteros, informar mcd = g y parar. 4. poner g = g informar mcd = 1 y parar

23 2.8.b - Euclides Es correcto?

24 2.8.b - Euclides Es correcto? Busca ordenadamente el primer g que cumpla la propiedad de ser mcd.

25 2.8.b - Euclides Es correcto? Busca ordenadamente el primer g que cumpla la propiedad de ser mcd. La iteracion recorre: g = min {b,c}.. 1

26 2.8.b - Euclides Es correcto? Busca ordenadamente el primer g que cumpla la propiedad de ser mcd. La iteracion recorre: g = min {b,c}.. 1 Dudas?

27 2.8. c. Las complejidades calculadas para los algoritmos de las partes a. y b. son iguales. Cuál de los dos algoritmos elegiría? Justificar y comentar.

28 2.8.c - Elección de algoritmo Cual prefieren? Por qué?

29 2.8.c - Elección de algoritmo Cual prefieren? Por qué? Factores a tomar en cuenta para decidir qué algoritmo utilizar:

30 2.8.c - Elección de algoritmo Cual prefieren? Por qué? Factores a tomar en cuenta para decidir qué algoritmo utilizar: 1. Teoría: Correctitud, Complejidad temporal, complejidad espacial, etc.

31 2.8.c - Elección de algoritmo Cual prefieren? Por qué? Factores a tomar en cuenta para decidir qué algoritmo utilizar: 1. Teoría: Correctitud, Complejidad temporal, complejidad espacial, etc. 2. Practica: Resultados experimentales, dificultad de la implementación, propenso a errores, etc.

32 2.8.c - Elección de algoritmo Cual prefieren? Por qué? Factores a tomar en cuenta para decidir qué algoritmo utilizar: 1. Teoría: Correctitud, Complejidad temporal, complejidad espacial, etc. 2. Practica: Resultados experimentales, dificultad de la implementación, propenso a errores, etc. Cuando usamos O() para la complejidad temporal damos una garantía de peor caso, pero es una cota superior. Esa cota no es necesariamente ajustada.

33 2.8.c - Elección de algoritmo Cual prefieren? Por qué? Factores a tomar en cuenta para decidir qué algoritmo utilizar: 1. Teoría: Correctitud, Complejidad temporal, complejidad espacial, etc. 2. Practica: Resultados experimentales, dificultad de la implementación, propenso a errores, etc. Cuando usamos O() para la complejidad temporal damos una garantía de peor caso, pero es una cota superior. Esa cota no es necesariamente ajustada. En la vida real, lo ideal es mezclar resultados teoricos y practicos para sacar conclusiones.

34 2.8.c - Elección de algoritmo Cual prefieren? Por qué? Factores a tomar en cuenta para decidir qué algoritmo utilizar: 1. Teoría: Correctitud, Complejidad temporal, complejidad espacial, etc. 2. Practica: Resultados experimentales, dificultad de la implementación, propenso a errores, etc. Cuando usamos O() para la complejidad temporal damos una garantía de peor caso, pero es una cota superior. Esa cota no es necesariamente ajustada. En la vida real, lo ideal es mezclar resultados teoricos y practicos para sacar conclusiones. En este caso, es importante notar la diferencia entre las cotas superiores encontradas para medir la complejidad temporal, una es ajustada y la otra no.

35 2.8. d. Probar que se puede mejorar la complejidad calculada en a. demostrando que el algoritmo de Euclides es en realidad O(log 2 (min{b, c})).

36 2.8.d - Mejorando la complejidad temporal Qué tan rápido decrecen (b, c)?

37 2.8.d - Mejorando la complejidad temporal Qué tan rápido decrecen (b, c)? En una iteración: (b, c) (c, b mod c)

38 2.8.d - Mejorando la complejidad temporal Qué tan rápido decrecen (b, c)? En una iteración: (b, c) (c, b mod c) Hacer ejemplos y pensar hasta que se nos ocurra algo...

39 2.8.d - Mejorando la complejidad temporal Qué tan rápido decrecen (b, c)? En una iteración: (b, c) (c, b mod c) Hacer ejemplos y pensar hasta que se nos ocurra algo...

40 2.8.d - Mejorando la complejidad temporal Lema Si b c b mod c < b 2.

41 2.8.d - Mejorando la complejidad temporal Lema Si b c b mod c < b 2, Caso 1: c b/2 c b/2 c b mod c < c b/2 b/2 b b/2 c c b mod c

42 2.8.d - Mejorando la complejidad temporal Lema Si b c b mod c < b 2 Caso 2: c > b/2 c > b/2 b mod c = b - c < b/2 c b/2 b c b/2 b mod c b

43 2.8.d - Mejorando la complejidad temporal Cada dos iteraciones, b y c disminuyen a la mitad (o más).

44 2.8.d - Mejorando la complejidad temporal Cada dos iteraciones, b y c disminuyen a la mitad (o más). Luego de la primer iteración: b 1 c 1 y b 1 min{b 0, c 0 }

45 2.8.d - Mejorando la complejidad temporal Cada dos iteraciones, b y c disminuyen a la mitad (o más). Luego de la primer iteración: b 1 c 1 y b 1 min{b 0, c 0 } Concluyo que una cota superior de la complejidad temporal es O(log 2 (min{b, c})

46 2.8.d - Mejorando la complejidad temporal Cada dos iteraciones, b y c disminuyen a la mitad (o más). Luego de la primer iteración: b 1 c 1 y b 1 min{b 0, c 0 } Concluyo que una cota superior de la complejidad temporal es O(log 2 (min{b, c}) Se puede mejorar?

47 Fin DUDAS

Algoritmo de Euclides

Algoritmo de Euclides Algoritmo de Euclides Melanie Sclar Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires AED III Melanie Sclar (UBA) Algoritmo de Euclides AED III 1 / 21 Ejercicio 2.8 de la práctica Ejercicio

Más detalles

El Algoritmo de Euclides

El Algoritmo de Euclides El Algoritmo de Euclides Pablo L. De Nápoli Departamento de Matemática Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 25 de abril de 2014 Pablo L. De Nápoli (Departamento de Matemática

Más detalles

Programación dinámica

Programación dinámica Algoritmos y Estructura de Datos III Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 03 de Abril de 2013 Repaso Aplica a problemas de optimización donde obtenemos una solución utilizando

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

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

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

Un tercer ejemplo: verificación de primalidad

Un tercer ejemplo: verificación de primalidad Un tercer ejemplo: verificación de primalidad Vamos a ver un algoritmo aleatorizado para verificar si un número es primo. I Este algoritmo es más eficiente que los algoritmos sin componentes aleatorias

Más detalles

RSA: Implementación. Ya resolvimos (3), ahora vamos a resolver (2). IIC3242 Complejidad Probabiĺıstica 28 / 77

RSA: Implementación. Ya resolvimos (3), ahora vamos a resolver (2). IIC3242 Complejidad Probabiĺıstica 28 / 77 RSA: Implementación Para poder implementar RSA necesitamos algoritmos eficientes para los siguientes problemas: (1) Generar primos P y Q (2) Generar números e y d tales que e d modφ(n) = 1 (3) Calcular

Más detalles

Aritmética en Haskell

Aritmética en Haskell Aritmética en Haskell Taller de Álgebra I Primer cuatrimestre de 2014 Algoritmo de división Para obtener el cociente y resto entre dos números enteros, tenemos las funciones div y mod, respectivamente.

Más detalles

Algoritmo de Euclides

Algoritmo de Euclides Algoritmo de Euclides No es necesario realizar ensayo y error para determinar el inverso multiplicativo de un entero módulo n. Si el módulo que está siendo usado es pequeño hay algunas pocas posibilidades

Más detalles

Propiedades de números enteros (lista de problemas para examen)

Propiedades de números enteros (lista de problemas para examen) Propiedades de números enteros (lista de problemas para examen) Denotamos por Z al conjunto de los números enteros y por N al conjunto de los números enteros positivos: N = 1, 2, 3,...}. Valor absoluto

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

Programación Dinámica 1

Programación Dinámica 1 Programación Dinámica 1 El método de programación dinámica sirve para resolver problemas combinando las soluciones de subproblemas. Normalmente es usada para resolver problemas de optimización. Al construir

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

EI MT1008 Programación II

EI MT1008 Programación II GRADO EN INGENIERÍA INFORMÁTICA GRADO EN MATEMÁTICA COMPUTACIONAL EI1008 - MT1008 Programación II Curso 2010-2011 Departamento de Lenguajes y Sistemas Informáticos 1. Datos de la asignatura Carácter: Formación

Más detalles

Tema 9. Recursividad

Tema 9. Recursividad Tema 9. Recursividad http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, [email protected] Estructuras de datos y de la información Universitat

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

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda Árboles Árboles Mario Medina C. [email protected] Árboles Estructura recursiva Árbol vacío 0 o más árboles hijos Altura ilimitada Árbol binario A lo más dos hijos: izquierdo y derecho Árboles Árboles

Más detalles

Programación II Recursividad Dr. Mario Rossainz López

Programación II Recursividad Dr. Mario Rossainz López 5. RECURSIVIDAD 5.1. Introducción La recursividad es una técnica en la que una función o método se hace llamadas a sí misma en el proceso de la realización de sus tareas. La recursividad da al programador

Más detalles

6. Estructuras básicas de control 1. Pseudocódigo

6. Estructuras básicas de control 1. Pseudocódigo 6. Estructuras básicas de control 1 Acciones Pseudocódigo Slide 1 Estructuras de control Secuencia Selección simple (si... entonces... ) doble (si... entonces... si no... ) múltiple (según el caso... )

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

Criptografía de clave pública Sistemas basados en el problema de la mochila

Criptografía de clave pública Sistemas basados en el problema de la mochila de la la La Criptografía de clave pública Sistemas basados de la DSIC - UPV (DSIC - UPV) de la 1 / 21 Contenidos del tema de la la La 1 Características de los sistemas de clave pública Principios para

Más detalles

Búsqueda Informada. Algoritmos primero el mejor Algoritmos de búsqueda local

Búsqueda Informada. Algoritmos primero el mejor Algoritmos de búsqueda local Búsqueda Informada Algoritmos primero el mejor Algoritmos de búsqueda local Algoritmos primero el mejor Búsqueda primero el mejor Búsqueda Voraz A* Algoritmos primero el mejor Familia de algoritmos de

Más detalles

Clase 2: Algoritmo de Euclídes

Clase 2: Algoritmo de Euclídes Clase 2: Algoritmo de Euclídes Dr. Daniel A. Jaume, * 8 de agosto de 2011 1. Máximo común divisor Para entender que es el máximo común divisor de un par de enteros (no simultáneamente nulos). Lidearemos

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

Manos a la obra: Recursión, división y listas

Manos a la obra: Recursión, división y listas Manos a la obra: Recursión, división y listas Taller de Álgebra I Cuatrimestre de verano de 2015 Calentando motores La clase pasada vimos ejemplos de definiciones recursivas. Hoy vamos a continuar con

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

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

Introducción a la Matemática Discreta

Introducción a la Matemática Discreta Introducción a la Matemática Discreta Aritmética Entera Luisa María Camacho Camacho Introd. a la Matemática Discreta 1 / 36 Introducción a la Matemática Discreta Temario Tema 1. Teoría de Conjuntos. Tema

Más detalles

Recursividad Definición

Recursividad Definición Recursividad Definición Un procedimiento o función se dice recursivo si durante su ejecución se invoca directa o indirectamente a sí mismo. Esta invocación depende al menos de una condición que actúa como

Más detalles

DIVISIBILIDAD NÚMEROS NATURALES

DIVISIBILIDAD NÚMEROS NATURALES DIVISIBILIDAD NÚMEROS NATURALES MÚLTIPLOS Un número a es múltiplo de otro b cuando es el resultado de multiplicarlo por otro número c. a = b c Ejemplo: 12 es múltiplo de 2, ya que resulta de multiplicar

Más detalles

<tipo> Tipo de dato de los elementos del vector

<tipo> Tipo de dato de los elementos del vector Vectores y matrices Declaración Vector (array unidimiensional): []; Tipo de dato de los elementos del vector Identificador de la variable.

Más detalles

Algorítmica y Lenguajes de Programación. Búsqueda

Algorítmica y Lenguajes de Programación. Búsqueda Algorítmica y Lenguajes de Programación Búsqueda Búsqueda. Introducción Hace dos lecciones se dijo que había tres tratamientos básicos sobre vectores: Recorrido. Ordenación. Búsqueda. Durante las últimas

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

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

Gu ıa Departamento. Matem aticas U.V.

Gu ıa Departamento. Matem aticas U.V. Universidad de Valparaíso Instituto de Matemáticas 1. Determinar el cociente y el residuo de 541 y de -541al dividir por 17 391 y -391 al dividir por 17 Guía de Teoría de Números 2. Sea a Z,n N comparar

Más detalles

Ejercicios de sucesiones.

Ejercicios de sucesiones. Ejercicios de sucesiones. 1.- Cuando escribimos a n queremos decir: término n-ésimo o toda la sucesión? Qué diferencia hay entre a n y (a n )? a).-cuando escribimos a n nos referimos a término enésimo.

Más detalles

Complejidad de Algoritmos

Complejidad de Algoritmos Complejidad de Algoritmos Tema 5 Introducción Un algoritmo es una secuencia de instrucciones que resuelve un problema Puede tener diferentes implementaciones Para comparar las diferentes formas (algoritmos)

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos

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

#include <stdio.h> float cubica(float numero) { float cubica; cubica = numero * numero * numero; return cubica; }

#include <stdio.h> float cubica(float numero) { float cubica; cubica = numero * numero * numero; return cubica; } /*1. Crear una función que calcule el cubo de un número real (float). El resultado deberá ser otro número real. Probar esta función para calcular el cubo de 3.2 y el de 5. */ float cubica(float numero)

Más detalles

1. Recuerdo del algoritmo de KRUSKAL

1. Recuerdo del algoritmo de KRUSKAL MA3705. Algoritmos Combinatoriales. 014. Profesor: José Soto Escriba(s): Manuel Cáceres, Camilo Gómez y Sebastián Muñoz. Fecha: 11 de Agosto 014. Cátedra 5 1. Recuerdo del algoritmo de KRUSKAL La clase

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

Algoritmos y Estructuras de Datos II

Algoritmos y Estructuras de Datos II 27 de mayo de 2013 Clase de hoy 1 Repaso Divide y vencerás Algoritmos voraces 2 3 Divide y vencerás Algoritmos voraces Repaso cómo vs. qué 3 partes 1 análisis de algoritmos 2 tipos de datos 3 técnicas

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

TEORIA DE NUMEROS. Temas: MAXIMO COMUN DIVISOR ALGORITMO MCD(A,B) IDENTIDAD DE BEZOUT ALGORITMO ST(A,B) EL TEOREMA FUNDAMENTAL DE LA ARITMETICA.

TEORIA DE NUMEROS. Temas: MAXIMO COMUN DIVISOR ALGORITMO MCD(A,B) IDENTIDAD DE BEZOUT ALGORITMO ST(A,B) EL TEOREMA FUNDAMENTAL DE LA ARITMETICA. . 1 TEORIA DE NUMEROS Temas: CLASE 2 HS: MAXIMO COMUN DIVISOR ALGORITMO MCD(A,B) IDENTIDAD DE BEZOUT ALGORITMO ST(A,B) CLASE 1:15 H: EL TEOREMA FUNDAMENTAL DE LA ARITMETICA. GENERACION DE LA DESCOMPOSICIÓN

Más detalles

Programación imperativa. Algoritmos y Estructuras de Datos I. Ciclos

Programación imperativa. Algoritmos y Estructuras de Datos I. Ciclos Programación imperativa Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 6 Ciclos y arreglos Entidad fundamental:

Más detalles

Relaciones de orden. Definición 1. Llamamos conjunto ordenado a un par (E, ) donde E es un conjunto y es un orden definido en E

Relaciones de orden. Definición 1. Llamamos conjunto ordenado a un par (E, ) donde E es un conjunto y es un orden definido en E Relaciones de orden Diremos que una relación R es de orden si verifica las propiedades reflexiva, antisimétrica y transitiva. Generalmente usaremos la notación en lugar de R para expresar relaciones de

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 [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Recursión Recursividad Programación

Más detalles

Capítulo IV. Divisibilidad y Primalidad. Algoritmo de la División

Capítulo IV. Divisibilidad y Primalidad. Algoritmo de la División Capítulo IV Divisibilidad y Primalidad IV.1. Algoritmo de la División (Aquí se enuncia con la posibilidad de divisor negativo y la prueba incluye el caso de dividendo negativo.) Teorema 1 Dados m, d Z,

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

Programación Dinámica

Programación Dinámica , Algoritmos y Programación 6 de Abril de 2010 Alejandro Deymonnaz Definiciones Divide and Conquer Deiniciones previas Problema recursivo Un problema recursivo es un problema que se puede resolver en base

Más detalles

TEORIA DE NUMEROS DIVISIBILIDAD Y NUMEROS PRIMOS. PRUEBAS DE PRIMALIDAD. LA CRIBA DE ERATOSTENES. ALGORITMOS. TEOREMA: EXISTENCIA DE INFINITOS PRIMOS.

TEORIA DE NUMEROS DIVISIBILIDAD Y NUMEROS PRIMOS. PRUEBAS DE PRIMALIDAD. LA CRIBA DE ERATOSTENES. ALGORITMOS. TEOREMA: EXISTENCIA DE INFINITOS PRIMOS. . 1 TEORIA DE NUMEROS Temas: DIVISIBILIDAD Y NUMEROS PRIMOS. PRUEBAS DE PRIMALIDAD. LA CRIBA DE ERATOSTENES. ALGORITMOS. TEOREMA: EXISTENCIA DE INFINITOS PRIMOS. (Apuntes de apoyo a clases teóricas) (Tiempo

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

Algoritmos glotones. mat-151

Algoritmos glotones. mat-151 Algoritmos glotones (greedy) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 04.06.2009 Algoritmos glotones Algoritmos utilizados en problemas de optimización. Estos algoritmos siguen típicamente

Más detalles

Geometría. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. Training Camp 2012

Geometría. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. Training Camp 2012 Geometría Leopoldo Taravilse Francisco Roslán Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse, Francisco Roslán (UBA) Geometría TC 2012 1 / 30

Más detalles

Algoritmo de Euclides y ecuaciones de congruencia

Algoritmo de Euclides y ecuaciones de congruencia Algoritmo de Euclides y ecuaciones de congruencia Taller de Álgebra I Primer cuatrimestre de 2017 Algoritmo de Euclides El algoritmo de Euclides calcula el máximo común divisor entre dos números a, b Z.

Más detalles

La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados.

La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados. RECURSIVIDAD La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares

Más detalles

Álgebra y Matemática Discreta

Álgebra y Matemática Discreta Álgebra y Matemática Discreta Sesión de Teoría 1 (c) 2013 Leandro Marín, Francisco J. Vera, Gema M. Díaz 16 Sep 2013-22 Sep 2013 Los Números Enteros El Conjunto Z Vamos a empezar por la aritmética más

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

Tema 5- Diseño Recursivo y. Objetivos Principales. Bibliografía Básica

Tema 5- Diseño Recursivo y. Objetivos Principales. Bibliografía Básica 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

Tema 3. Estructuras de Datos

Tema 3. Estructuras de Datos Tema 3! Estructuras de Datos Estructuras Simples, Doble, Anidada y Múltiple En este tema veremos las sentencias selectivas: IF (Si) IF - Then (Si - Entonces) IF - Then - Else ( Si - Entonces - Sino) Switch

Más detalles

1) Indique los primeros elementos de los siguientes conjuntos numéricos: Números Naturales: IN = {

1) Indique los primeros elementos de los siguientes conjuntos numéricos: Números Naturales: IN = { Clase-04 Temas: Operatoria entre números naturales (IN) y enteros (Z), múltiplos, divisores, mínimo común múltiplo (M.C.M.) y máximo común divisor (M.C.D.). 1) Indique los primeros elementos de los siguientes

Más detalles

Práctica 2. Algoritmos de enfriamiento simulado (simulated annealing)

Práctica 2. Algoritmos de enfriamiento simulado (simulated annealing) PLANIFICACIÓN Y GESTIÓN DE REDES Grado en Ingeniería Telemática Curso 2012-2013 Práctica 2. Algoritmos de enfriamiento simulado (simulated annealing) Autor: Pablo Pavón Mariño 1. Objetivos Los objetivos

Más detalles

Descomposicion en Polígonos Monótonos. comp-420

Descomposicion en Polígonos Monótonos. comp-420 Descomposicion en Polígonos Monótonos comp-420 Triangulación de Polígonos Teorema 1: Todo polígono simple admite una triangulación, y cualquier triangulación de un polígono simple con n vértices consta

Más detalles

Analizadores sintácticos LR(0) y SLR

Analizadores sintácticos LR(0) y SLR Teoría de Lenguajes Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Clase de Hoy Anteriores: Parsing descendente (LL(1), ELL) Recursivos e iterativos Generan árbol de derivación desde

Más detalles

Euclides Extendido y Teorema Chino del Resto

Euclides Extendido y Teorema Chino del Resto Euclides Extendido y Teorema Chino del Resto Taller de Álgebra I Segundo cuatrimestre de 2013 Lema de Bézout Recordemos este lema: Lema (Étienne Bézout) Sean a, b Z, alguno distinto de 0. Entonces existen

Más detalles

Estructura de datos y de la información Boletín de problemas - Tema 9

Estructura de datos y de la información Boletín de problemas - Tema 9 Estructura de datos y de la información Boletín de problemas - Tema 9 1. Dada la siguiente función recursiva: void F(char c) { if (( A

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

Generación de variables aleatorias discretas Método de la Transformada Inversa

Generación de variables aleatorias discretas Método de la Transformada Inversa Generación de variables aleatorias discretas Método de la Transformada Inversa Georgina Flesia FaMAF 9 de abril, 2013 Generación de v.a. discretas Existen diversos métodos para generar v.a. discretas:

Más detalles

4.- Raíces cuadradas.

4.- Raíces cuadradas. 4.- Raíces cuadradas. DEFINICIÓN La raíz cuadrada exacta de un número entero es otro número entero cuyo cuadrado coincide con el primer número, es decir: 2 a = b b = a No todos los enteros tienen raíz

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

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

Recuperación Primer Trimestre Matemáticas 1ºESO

Recuperación Primer Trimestre Matemáticas 1ºESO Recuperación Primer Trimestre Matemáticas 1ºESO TEMA 1: DIVISIBILIDAD 1 Ana tiene 0 libros que quiere colocar en montones de manera que todos ellos tengan el mismo número de libros. De cuántas formas puede

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

Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b.

Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b. El Teorema Maestro Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b c)+f (n) n 1 donde a, b y c son constantes, y f (n) es una

Más detalles

Taller de Programación Dinámica. Definiciones. Caso base. Laboratorio de Algoritmos y Estructuras de Datos III. 10 de Septiembre de 2010

Taller de Programación Dinámica. Definiciones. Caso base. Laboratorio de Algoritmos y Estructuras de Datos III. 10 de Septiembre de 2010 Menú del día Taller de 1 Definiciones Laboratorio de Algoritmos y Estructuras de Datos III Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 10 de Septiembre

Más detalles

Cubiertas convexas II

Cubiertas convexas II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 22 de enero del 2013 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Cubiertas convexas II 22 de enero del 2013 1 / 41 1 Cubiertas convexas II Algoritmo QuickHull

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

Tema 10: Árbol binario de búsqueda

Tema 10: Árbol binario de búsqueda Tema 10: Árbol binario de búsqueda M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Árbol binario de

Más detalles

CI2612: Algoritmos y Estructuras de Datos II. Nociones básicas. Objetivos. Algoritmos. Blai Bonet

CI2612: Algoritmos y Estructuras de Datos II. Nociones básicas. Objetivos. Algoritmos. Blai Bonet CI2612: Algoritmos y Estructuras de Datos II Blai Bonet Nociones básicas Universidad Simón Boĺıvar, Caracas, Venezuela Objetivos Algoritmos Concepto de algoritmo y modelo computacional Complejidad en tiempo

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

UNIDAD 7 Recursividad Concepto. Algoritmos recursivos. Seguimiento de la recursión. Algunos métodos recursivos de búsqueda y ordenación: M-Sort y

UNIDAD 7 Recursividad Concepto. Algoritmos recursivos. Seguimiento de la recursión. Algunos métodos recursivos de búsqueda y ordenación: M-Sort y Recursividad Concepto. Algoritmos recursivos. Seguimiento de la recursión. Algunos métodos recursivos de búsqueda y ordenación: M-Sort y Q-Sort. Comparación de eficiencia en métodos Iterativos vs recursivos

Más detalles