Algoritmos de Búsqueda

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

Download "Algoritmos de Búsqueda"

Transcripción

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

2 Introducción Para qué buscar? Algoritmo de Búsqueda Definición Es un algoritmo que se utiliza para encontrar un elemento con determinada propiedad dentro de una colección. Por ejemplo: Buscar entre los alumnos de la clase el alumno más alto. Buscar entre las personas del aula aquella con menos pelo. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

3 Búsqueda sobre secuencia Búsqueda lineal Problema Dada una secuencia de números enteros, se debe indicar si un elemento particular x pertenece a la secuencia. Cómo sería la especificación de este problema? problema buscar(x:z, [a:z]) = res: B{ asegura res=( j : Z)(0 j < len(a) a[j] = x) } E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

4 Búsqueda lineal sobre secuencia Algoritmo de búsqueda lineal Recibe una secuencia y una condición booleana sobre sus elementos (por ejemplo, igualdad con algún elemento determinado). Recorre de izquierda a derecha la secuencia mientras no se ha encontrado un elemento que cumpla la condición booleana. Variantes de opciones de resultado: Elemento encontrado Posición del elemento Condición booleana que indica si lo encontramos o no. Es el más ingenuo de los algoritmos de búsqueda. En el peor caso, realiza tantas iteraciones como el tamaño de la secuencia. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

5 Encarando el problema Dada una secuencia a de tamaño n y un elemento buscado x. Buscamos la primer posición que contiene al elemento x. Usaremos una variable numérica (tipo entero) i para recorrer las posiciones de a. La secuencia no se modifica a lo largo del proceso de búsqueda. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

6 Código del algoritmo de búsqueda lineal Pensemos un programa que resuelva lo planteado: problema buscar(x:z, [a:z]) = res: B{ asegura res=( j : Z)(0 j < len(a) a[j] = x) } def buscar ( a, x ) # I n i c i a l i z a c i o n i = 0 # Comienza e l c i c l o while ( i < len ( a ) and a [ i ]!= x ) : i = i + 1 # Devuelvo s i l o encontre return i < len ( a ) Notar que la guarda es una conjunción que nunca se indefine. Es decir, no accede a ningún elemento fuera de rango. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

7 Invariante Definición Es una propiedad matemática que me cuenta qué es lo que voy haciendo en el ciclo. Esta propiedad debe ser verdadera en varias partes del ciclo: Antes de entrar al ciclo. Luego de evaluar la guarda y entrar al ciclo Justo después de terminar la iteración o cuerpo del ciclo. Luego de evaluar la guarda y salir del ciclo. Esta temática se puede profundizar, pero es el foco de la materia Algoritmos y Estructuras de Datos 1. Vamos a dar solo un vistazo. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

8 Veamos un poco qué significa esto def buscar ( a, x ) : # I n i c i a l i z a c i o n i = 0 # Comienza e l c i c l o while ( i < len ( a ) and a [ i ]!= x ) : i = i + 1 # Devuelvo s i l o encontre return i < len ( a ) Informalmente, el invariante de este ciclo nos va a contar qué pasa con las distintas variables involucradas, qué modificaciones les ocurren: Qué sabemos sobre la variable i? El índice i toma el rango de valores entre 0 i len(a). Ojo: notar que potencialmente puede tomar el valor len(a). Qué sabemos de la parte que ya recorrimos? ( k : Z)(0 k < i x a[k]). Qué sabemos de la parte que todavía no revisamos? a = A 0, no modificamos la secuencia de entrada. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

9 Y ahora? Con el invariante, la guarda del ciclo y los formalismos necesarios, se puede demostrar que el ciclo termina y es correcto (i.e. calcula lo que queremos). La palabra clave es demostrar. Se puede obtener una prueba matemáticamente válida de que nuestro programa efectivamente computa lo que nosotros decimos que hace. La función variante: Adicionalmente al invariante, existe la función variante, que es una función que se define usando variables del programa y que en cada iteración del ciclo debe ser estrictamente decreciente... No les parece conocido a lo que vimos en recursión? Cuando llega a una cota pre-establecida (normalmente 0), el ciclo debe terminar. Cuál sería la función variante en el ciclo de búsqueda lineal? Qué les parece len(a) i como función variante? E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

10 Complejidad Complejidad de un algoritmo La complejidad temporal T (n) de un algoritmo es la máxima cantidad de operaciones que va a ejecutar. Se la define como función del tamaño de la entrada n. Para dar cotas superiores de la complejidad se usa la notación asimptótica O grande. T (n) es O(f(n)) sii c, n 0 n n 0 T (n) c f(n) Es decir, T (n) es del orden de f(n) cuando T (n) es a lo sumo una constante por f(n), excepto para valores pequeños de n. Nos interesa ver cómo crece la complejidad cuando crece la estructura o entrada. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

11 Complejidad Complejidad de la búsqueda lineal def buscar ( a, x ) # I n i c i a l i z a c i o n i = 0 # Comienza e l c i c l o while ( i < len ( a ) and a [ i ]!= x ) : i = i + 1 # Devuelvo s i l o encontre return i < len ( a ) Cuándo hace la máxima cantidad de operaciones? Cuando el elemento no está en la secuencia. Cuántas operaciones son? El algoritmo ejecuta tantas iteraciones como la longitud o tamaño de la secuencia. La cantidad de operaciones es la cantidad de iteraciones por una constante. Notemos que en nuestro programa cada iteración hace 4 operaciones: dos comparaciones, una conjunción y el incremento del índice. El algoritmo de búsqueda lineal tiene complejidad O(n), es decir, tiene complejidad lineal. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

12 Busqueda binaria Mejorando la búsqueda Supongamos un diccionario y queremos buscar una palabra x. 1 Abrimos el diccionario a la mitad 2 Si x está en allí, terminamos. 3 Si x es menor (según el orden de diccionario) que las palabras de la posición actual, x no puede estar en la parte derecha. 4 Si x es mayor (según el orden de diccionario) que las palabras de la posición actual, x no puede estar en la parte izquierda. 5 Seguimos buscando sólo en la parte izquierda o derecha (según sea el caso). Cuándo termina? E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

13 Busqueda binaria Búsqueda binaria Supongamos que en lugar de un diccionario tenemos una secuencia ordenada de números enteros. Buscamos un número entero x. Inicialmente el segmento de búsqueda es toda la secuencia. Si el número que buscamos es menor que el primer elemento o mayor que el último, entonces seguro que no está. Revisaremos sólo algunas posiciones del arreglo: en cada iteración descartaremos la mitad del segmento actual de búsqueda. Termina cuando encuentro el elemento en la posición que reviso, o bien, cuando el segmento de búsqueda tiene menos que tres elementos (no tiene medio). Es decir, tiene uno o dos elementos. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

14 Busqueda binaria Búsqueda binaria Búsqueda binaria del elemento 22 teniendo como entrada una secuencia ordenada de 15 elementos. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

15 Busqueda binaria Complejidad del algoritmo de búsqueda binaria Cuántas iteraciones hace el algoritmo como máximo? En cada iteración nos quedamos con la mitad del espacio de búsqueda. Termina cuando el segmento de búsqueda tiene longitud 1 o 2. número de iteración longitud del espacio de búsqueda 1 n 2 n/2 3 (n/2)/2 = n/2 2 4 (n/2 2 )/2 = n/2 3. t. n/2 t 1 Para llegar al espacio de búsqueda de tamaño 1 hacemos t iteraciones 1 = n/2 t 1 entonces 2 t 1 = n entonces t = 1 + log 2 n. Luego, la complejidad de la búsqueda binaria es O(log 2 n). Esta cota superior es mucho mejor que la búsqueda lineal, que es O(n). E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

16 Terminando Conclusiones Vimos dos algoritmos de búsqueda para problemas relacionados: 1 Búsqueda lineal. 2 Búsqueda binaria. Requiere que la entrada sea una secuencia ordenada La búsqueda binaria es mucho más eficiente que la búsqueda lineal, porque en el peor caso la búsqueda lineal accede a todos los elementos de la secuencia. Mientras que la búsqueda binaria solamente accede a una cantidad logarítmica del tamaño de la secuencia. Las cotas superiores de complejidad temporal son también cotas inferiores del peor caso. Moraleja: en general, más propiedades en los datos de entrada permiten dar algoritmos más eficientes. E. Mocskos (UBA CONICET) Algoritmos de Búsqueda 11/10/ / 19

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

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

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Algoritmo downsort. Upsort vs downsort

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Algoritmo downsort. Upsort vs downsort Ordenamiento de un arreglo Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 8 Algoritmos de ordenamiento II Tenemos

Más detalles

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Demostración. Cota inferior de complejidad tiempo para sorting

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Demostración. Cota inferior de complejidad tiempo para sorting Ordenamiento de un arreglo Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 12 Algoritmos de ordenamiento, segunda parte Tenemos

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

Búsqueda Binaria. Universidad de Buenos Aires. Universidad Nacional del Comahue. Training Camp 2017

Búsqueda Binaria. Universidad de Buenos Aires. Universidad Nacional del Comahue. Training Camp 2017 Búsqueda Binaria Leopoldo Taravilse 1 Juan Cruz Piñero 2 1 Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 2 Facultad de Informática Universidad Nacional del Comahue Training Camp

Más detalles

Funciones recursivas

Funciones recursivas Introducción a la Computación Funciones recursivas Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 08/04/2014 E. Mocskos (UBA CONICET) Clase 9: Funciones Recursivas

Más detalles

Funciones recursivas

Funciones recursivas Introducción a la Computación Funciones recursivas Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 13/09/2017 E. Mocskos (UBA CONICET) Funciones Recursivas

Más detalles

Especificación de programas. Algoritmos y Estructuras de Datos I. Correctitud de ciclos

Especificación de programas. Algoritmos y Estructuras de Datos I. Correctitud de ciclos Especificación de programas Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Simulacro Coloquio Final - clase 1 Sean dos programas, cada uno recibe

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

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q Esquema Teórica Imperativo 2 Estructuras de control Instrucción de asignación P{v=e Q // estado 1; vale P: true v:=e; // vale Q: v == e@1 && para toda vi: vi == vi@1 Instrucciones de Control de Flujo P

Más detalles

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

Demostrando cotas inferiores: Arboles de decisión

Demostrando cotas inferiores: Arboles de decisión Demostrando cotas inferiores: Arboles de decisión De la misma forma que la técnica basada en la mejor estrategia del adversario, vamos a utilizar los árboles de decisión para establecer una cota inferior

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

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

Verificación de programas. Algoritmos y Estructuras de Datos I. Semánticas formales: Primer cuatrimestre de 2016

Verificación de programas. Algoritmos y Estructuras de Datos I. Semánticas formales: Primer cuatrimestre de 2016 Verificación de programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2016 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 14 Verificación automática de programas

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

Algoritmos para determinar Caminos Mínimos en Grafos

Algoritmos para determinar Caminos Mínimos en Grafos Problemas de camino mínimo Algoritmos para determinar Caminos Mínimos en Grafos Algoritmos y Estructuras de Datos III DC, FCEN, UBA, C 202 Problemas de camino mínimo Dado un grafo orientado G = (V, E)

Más detalles

Introducción a la computación. Charlie

Introducción a la computación. Charlie Introducción a la computación Charlie Estado Se denomina estado en un modelo de cómputo a un punto en la ejecución de un programa en dicho modelo. En el modelo de Von Neumann esto responde al valor de

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

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

Práctica 2 - Ejercicio 2.8

Práctica 2 - Ejercicio 2.8 Algoritmos y Estructura de Datos III Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 27 de Marzo de 2013 2.8 - Euclides 2.8. a. Escribir el algoritmo de Euclides para calcular el

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

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Diseño de algoritmos recursivos 1. Dado un vector de enteros de longitud N,

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

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

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

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

Ordenamiento en Tiempo Lineal - Medianas y Ordenes sticas

Ordenamiento en Tiempo Lineal - Medianas y Ordenes sticas Ordenamiento en Tiempo Lineal - Medianas y Ordenes Estadísticas sticas CLASIFICACIÓN EN TIEMPO LINEAL. 1.- Cota Inferior para Ordenamiento por comparaciones. -árbol de decisión. - limite inferior para

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

Divide & Conquer. Herman Schinca. Clase de Junio de 2011

Divide & Conquer. Herman Schinca. Clase de Junio de 2011 Divide & Conquer Herman Schinca Clase 20 7 de Junio de 2011 Divide y vencerás Idea aplicable a muchas situaciones de la vida. Origen histórico atribuído a Julio César en relación a sus estrategias militares.

Más detalles

Algoritmos de Ordenamiento II

Algoritmos de Ordenamiento II Introducción a la Computación Algoritmos de Ordenamiento II Esteban E. Mocskos Facultad de Ciencias Exactas y Naturales, UBA CONICET 11/05/2016 E. Mocskos (UBA CONICET) Clase 11: Algoritmos de Ordenamiento

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

23. Ordenación de vectores (tablas) Diego Gutiérrez

23. Ordenación de vectores (tablas) Diego Gutiérrez 23. Ordenación de vectores (tablas) 1 O cómo evitar tener que buscar una aguja en un pajar Ordenación 3 Ordenación O cómo evitar tener que buscar una aguja en un pajar Cómo buscamos una palabra en un diccionario?

Más detalles

Aprendizaje Computacional y Extracción de Información

Aprendizaje Computacional y Extracción de Información Aprendizaje Computacional y Extracción de Información Inferencia Gramatical Jose Oncina oncina@dlsi.ua.es Dep. Lenguajes y Sistemas Informáticos Universidad de Alicante 26 de septiembre de 2007 J. Oncina

Más detalles

Algoritmos y Programación Orientada a Objetos I. Contenedoras de tamaño fijo

Algoritmos y Programación Orientada a Objetos I. Contenedoras de tamaño fijo Algoritmos y Programación Orientada a Objetos I Contenedoras de tamaño fijo Agenda Motivación Contenedoras de tamaño fijo Instrucciones repetitivas Agenda Motivación Contenedoras de tamaño fijo Instrucciones

Más detalles

Retículos y Álgebras de Boole

Retículos y Álgebras de Boole Retículos y Álgebras de Boole Laboratorio de Matemática Discreta Jesús Martínez Mateo jmartinez@fi.upm.es Práctica 1. Ordenación topológica A. Herramientas necesarias Para la práctica que vamos a realizar

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

Algoritmos Geométricos. Héctor Navarro. UCV

Algoritmos Geométricos. Héctor Navarro. UCV Algoritmos Geométricos Héctor Navarro. UCV Estructuras de Datos Puntos struct Punto2D{ float x, y; }; struct Punto3D{ float x,y,z; }; Estructuras de Datos Polígonos Punto2D Poly[N]; Rectas struct Recta{

Más detalles

TEMA 1 La eficiencia de los algoritmos

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

Más detalles

Algoritmos Cuánticos

Algoritmos Cuánticos Algoritmos Cuánticos Alfonsa García, Francisco García 1 y Jesús García 1 1 Grupo de investigación en Información y Computación Cuántica (GIICC) Algoritmos cuánticos 1. Introducción 2. Primeros algoritmos

Más detalles

Arreglos. Donde en cada posición del array se puede guardar un elemento. tipo_dato nombre_array[cant_elem];

Arreglos. Donde en cada posición del array se puede guardar un elemento. tipo_dato nombre_array[cant_elem]; Arreglos Los arreglos o arrays son colecciones de datos del mismo tipo. De esta manera, podemos encontrar arrays de números enteros, arrays de números double, arrays de caracteres. Tradicionalmente, la

Más detalles

Programación TADs Colecciones Conjuntos, Diccionarios y Tablas

Programación TADs Colecciones Conjuntos, Diccionarios y Tablas Programación 2 8 - TADs Colecciones Conjuntos, Diccionarios y Tablas 1 El TAD SET (Conjunto) En el diseño de algoritmos, la noción de conjunto es usada como base para la formulación de tipos de datos abstractos

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

Ordenamiento (Sorting)

Ordenamiento (Sorting) Ordenamiento (Sorting) El problema del ordenamiento Ordenar: arreglo[α] arreglo[α], donde α es un tipo tal que está definida la relación < α Uno de los problemas más clásicos, útiles y estudiados de la

Más detalles

Tipos de Datos de python (2ª parte):

Tipos de Datos de python (2ª parte): Tipos de Datos de python (2ª parte): Enteriormente hemos visto algunos de los tipos de datos que maneja python. Vimos: int, float, chr, str, bool También vimos como convertir datos a cada uno de estos

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

Curso de Programación 1

Curso de Programación 1 Curso de Programación 1 Plan 97 Búsqueda y Ordenación Métodos de búsqueda Existen aplicaciones en las cuales es necesario consultar si un elemento se encuentra dentro de un array. A continuación veremos

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

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

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

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

Estructuras Discretas. Conjuntos. Conjuntos & Funciones. Especificación de Conjuntos.

Estructuras Discretas. Conjuntos. Conjuntos & Funciones. Especificación de Conjuntos. Estructuras Discretas Conjuntos Conjuntos & Funciones Claudio Lobos clobos@inf.utfsm.cl niversidad Técnica Federico Santa María Estructuras Discretas INF 152 Definición: conjunto n conjunto es una colección

Más detalles

Manual rápido para evaluación de series en Python

Manual rápido para evaluación de series en Python Manual rápido para evaluación de series en Python Breve introducción Python es un lenguaje de programación interpretado con fines científicos, de educación y para hacer programas de uso rápido. Es la base

Más detalles

Bloque 1. Conceptos y técnicas básicas en programación

Bloque 1. Conceptos y técnicas básicas en programación Bloque 1. Conceptos y técnicas básicas en programación 1. Introducción 2. Datos y expresiones. Especificación de algoritmos 3. Estructuras algorítmicas básicas 4. Iteración y recursión 5. Iteración y recursión

Más detalles

Complejidad computacional (Análisis de Algoritmos)

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

Más detalles

Especificación Clase 2

Especificación Clase 2 Especificación Clase 2 Lenguaje de especificación Departamento de Computación, FCEyN, Universidad de Buenos Aires. 27 de marzo del 2015 Menú del día Especificación Repaso del lenguaje de especificación

Más detalles

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación

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

EDA. Tema 8 Colas de Prioridad: Heaps

EDA. Tema 8 Colas de Prioridad: Heaps EDA. Tema 8 Colas de Prioridad: Heaps Natividad Prieto Sáez. DSIC EDA, T-8. Curso 02/03. N.Prieto p.1/55 Objetivos Estudio de las definiciones asociadas a las Colas de Prioridad: Especificación: operaciones

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

XXVIII OLIMPIADA NACIONAL DE MATEMATICA Nivel Mayor

XXVIII OLIMPIADA NACIONAL DE MATEMATICA Nivel Mayor XXVIII OLIMPIADA NACIONAL DE MATEMATICA Nivel Mayor Prueba única de clasificación, 20 de Agosto de 2016 SOLUCIONES Problema 1. Katia y Mariela juegan al siguiente juego: En cada uno de sus tres turnos,

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

UNIVERSIDAD SIMÓN BOLÍVAR Dept. Computación y Tecnología de la Información Estructuras Discretas II CI de Diciembre de 2013.

UNIVERSIDAD SIMÓN BOLÍVAR Dept. Computación y Tecnología de la Información Estructuras Discretas II CI de Diciembre de 2013. UNIVERSIDAD SIMÓN BOLÍVAR Dept. Computación y Tecnología de la Información Estructuras Discretas II CI 2527 9 de Diciembre de 2013 Practica 10 Nota. Todas las funciones en esta práctica son funciones totales

Más detalles

Programación Dinámica

Programación Dinámica Leopoldo Taravilse Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse (UBA) TC 2012 1 / 34 Contenidos 1 Recursión Principio de Optimalidad Ejemplos

Más detalles

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

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

Más detalles

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

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

Estructuras de datos y algoritmos

Estructuras de datos y algoritmos Estructuras de datos y algoritmos 1. Introducción 2. Estructuras de datos lineales 3. Estructuras de datos jerárquicas 4. Grafos y caminos 5. Implementación de listas, colas, y pilas 6. Implementación

Más detalles

5. ESTRUCTURAS DE REPETICIÓN

5. ESTRUCTURAS DE REPETICIÓN 5. ESTRUCTURAS DE REPETICIÓN Las estructuras de repetición, permiten la ejecución de una lista o secuencia de instrucciones () en varias ocasiones. El número de veces que el bloque

Más detalles

Semana03[1/17] Funciones. 16 de marzo de Funciones

Semana03[1/17] Funciones. 16 de marzo de Funciones Semana03[1/17] 16 de marzo de 2007 Introducción Semana03[2/17] Ya que conocemos el producto cartesiano A B entre dos conjuntos A y B, podemos definir entre ellos algún tipo de correspondencia. Es decir,

Más detalles

Tema 7: Recursividad

Tema 7: Recursividad Tema 7: Recursividad Objetivos: en este tema estudiaremos funciones recursivas; esto es, funciones que se invocan a sí mismas. Estas funciones son equivalentes a estructuras tipo bucle pero permiten especificar

Más detalles

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Práctico 4 Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Clasificación de ejercicios: (I) Imprescindibles (R) Recomendados (C) Complementarios Árboles balanceados (AVL)

Más detalles

Primer Parcial de Programación 3 (1/10/2009)

Primer Parcial de Programación 3 (1/10/2009) Primer Parcial de Programación (/0/009) Instituto de Computación, Facultad de Ingeniería Este parcial dura horas y contiene carillas. El total de puntos es 0. En los enunciados llamamos C* a la extensión

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

Algoritmos y Estructuras de Datos Ingeniería en Informática

Algoritmos y Estructuras de Datos Ingeniería en Informática 2.1.Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas

Más detalles

RESUMEN DE ALGORITMOS PROBABILÍSTICOS

RESUMEN DE ALGORITMOS PROBABILÍSTICOS RESUMEN DE ALGORITMOS PROBABILÍSTICOS En los algoritmos probabilísticos hay ciertas decisiones que se toman al azar bajo condiciones estadísticamente estables como una distribución uniforme. Normalmente

Más detalles

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS 1 ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS Corina Flores Villarroel ORDENAMIENTO EN ARREGLOS Y COLECCIONES Una de las tareas más comunes a la hora de procesar datos es la clasificación u ordenación de los datos.

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

Algoritmos de Ordenamiento

Algoritmos de Ordenamiento Algoritmos de Ordenamiento mat-151 Alonso Ramírez Manzanares Computación y Algoritmos 12.04 Algoritmos de ordenamiento Entrada: secuencia de números. Salida: permutación

Más detalles

Análisis y Diseño de Algoritmos

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

Más detalles

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

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

Algoritmos de Ordenación

Algoritmos de Ordenación Algoritmos de Ordenación Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Algoritmos comunes - Ordenación Ordenación o clasificación es

Más detalles

Teóricas de Análisis Matemático (28) - Práctica 8 - Polinomio de Taylor

Teóricas de Análisis Matemático (28) - Práctica 8 - Polinomio de Taylor Práctica 8 Polinomio de Taylor. Polinomio de Taylor El análisis completo de una función puede resultar muy difícil. Una forma de abordar este problema es aproximar la función por una más sencilla. En este

Más detalles

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica. Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete

Más detalles

1. FUNCIÓN REAL DE VARIABLE REAL

1. FUNCIÓN REAL DE VARIABLE REAL 1. FUNCIÓN REAL DE VARIABLE REAL Una función real de variable real es una aplicación de un subconjunto de los nº reales ( R ) en otro subconjunto de R f : D R R Se representa de la siguiente forma: Una

Más detalles

Analisis de algoritmos

Analisis de algoritmos Analisis de algoritmos Eficiencia Es la capacidad de disponer de un recurso. En el caso de los algoritmos, la eficiencia se logra haciendo el mejor uso posible de los recursos del sistema. Recursos Qué

Más detalles

BUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES

BUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES BUSQUEDA SECUENCIAL Y DIRECTA, MARCELA MARQUEZ REBECA NAVARRO FONSECA GUADALUPE RUIZ ANGULO JONATHAN ALEXIS TOPETE ESTRUCTURA Y OPERACIONES BUSQUEDA Cuando se realizan operaciones de búsqueda es preciso

Más detalles

Ordenamiento - Sorting - Sortin

Ordenamiento - Sorting - Sortin Ordenamiento - Sorting - Sortin Christian Russo Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 13 de Mayo de 2016 Algunas aclaraciones Este tipo de ejercicios

Más detalles

Métodos de ordenamiento y búsqueda para datos en memoria principal

Métodos de ordenamiento y búsqueda para datos en memoria principal Ordenamiento Métodos de ordenamiento y búsqueda para datos en memoria principal Dada una colección que contiene un número elementos, el ordenamiento es el proceso de reacomodar un conjunto de elementos

Más detalles

259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m

259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m 258. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,

Más detalles

Lenguaje de programación S (Davis/Sigal/Weyuker) Lógica y Computabilidad. Ejemplo 1. Ejemplo 2

Lenguaje de programación S (Davis/Sigal/Weyuker) Lógica y Computabilidad. Ejemplo 1. Ejemplo 2 Lógica y Computabilidad Verano 2011 Departamento de Computación - FCEyN - UBA Computabilidad - clase 4 Lenguaje S, estado, descripción instantánea, cómputo, funciones parciales computables, minimización

Más detalles

Desigualdades o inecuaciones lineales en una variable

Desigualdades o inecuaciones lineales en una variable Desigualdades o inecuaciones lineales en una variable Sec 3.5 3.6 Prof. Caroline Rodriguez Departamento de Matemáticas UPR - Arecibo Desigualdades Una desigualdad o inecuación usa símbolos como ,,

Más detalles

Concurrencia Monitores. Guillermo Román Díez

Concurrencia Monitores. Guillermo Román Díez Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de

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

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: 1. Ejercicio (3 puntos) a) Qué estructura de datos utilizarías para transformar la siguiente expresión a su equivalente expresión postfija? Argumenta tu decisión. Ej. entrada:

Más detalles

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que: Instituto Universitario de Tecnología Industrial Rodolfo Loero Arismendi I.U.T.I.R.L.A. ÁRBOLES Sección 3DA Asignatura: Estructura de Datos Lenguaje (C). Ciudad Bolívar _ abril_ 2006. Introducción El siguiente

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

95.12 Algoritmos y Programación II Práctica 7: árboles

95.12 Algoritmos y Programación II Práctica 7: árboles Notas preliminares 95.12 Algoritmos y Programación II Práctica 7: árboles El objetivo de esta práctica es introducir distintas clases de estructuras de datos arbóreas y algoritmos para manipularlas. Los

Más detalles