Algoritmos de Búsqueda
|
|
- Arturo Rubio Díaz
- hace 6 años
- Vistas:
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 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 detallesComplejidad 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 detallesOrdenamiento 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 detallesOrdenamiento 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 detallesProgramació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 detallesBú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 detallesFunciones 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 detallesFunciones 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 detallesEspecificació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 detallesNotació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 detallesEsquema. 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 detallesAlgoritmo 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 detallesDemostrando 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 detallesComplejidad 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 detallesAlgoritmos 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 detallesVerificació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 detallesNOTACIÓ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 detallesAlgoritmos 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 detallesIntroducció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 detallesTema 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 detallesProgramació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 detallesPrá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 detallesAná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 detallesEstructuras 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 detallesEstructuras 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 detallesAná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 detallesAná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 detallesIN34A - 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 detallesOrdenamiento 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 detallesIntroducció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 detallesDivide & 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 detallesAlgoritmos 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 detalles1. 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 detalles23. 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 detallesAprendizaje 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 detallesAlgoritmos 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 detallesRetí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 detallesAná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 detallesAlgoritmos 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 detallesTEMA 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 detallesAlgoritmos 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 detallesArreglos. 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 detallesProgramació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 detalles1. 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 detallesOrdenamiento (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 detallesTipos 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 detallesDiseñ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 detallesCurso 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 detallesCOMPUTACIÓ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 detallesProgramació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 detallesEl 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 detallesCI2612: 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 detallesEstructuras 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 detallesManual 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 detallesBloque 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 detallesComplejidad 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 detallesEspecificació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 detallesTema 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 detallesMultiplicació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 detallesEDA. 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 detallesAná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 detallesXXVIII 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 detallesLa 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 detallesUNIVERSIDAD 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 detallesProgramació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 detallesProgramació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 detallesIntroducció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 detallesTipos 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 detallesEstructuras 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 detalles5. 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 detallesSemana03[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 detallesTema 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)
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 detallesPrimer 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 detallesIntroducció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 detallesAlgoritmos 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 detallesRESUMEN 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 detallesORDENAMIENTO 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 detallesEstructura 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 detallesAlgoritmos 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 detallesAná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 detallesIntroducció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 detallesTiempo 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 detallesAlgoritmos 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 detallesTeó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 detallesClases 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 detalles1. 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 detallesAnalisis 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 detallesBUSQUEDA 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 detallesOrdenamiento - 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 detallesMé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 detalles259. 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 detallesLenguaje 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 detallesDesigualdades 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 detallesConcurrencia 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 detallesProgramació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 detallesESTRUCTURA 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 detallesUn á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 detallesAlgoritmos 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 detalles95.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