Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????

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

Download "Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????"

Transcripción

1 Programación. Tema : Tablas Hash /Mayo/ Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema : Tabla Hash Las tabla hash aparece para conseguir una búsqueda e inserción muy rápidas; para ello se hace uso de un array, con lo que volvemos a la estructura básica de almacenamiento. Sin embargo, hay una diferencia importante que es lo que hace que sea mejor que el array en cuanto a rapidez: a cada dato se le asigna, mediante una fórmula matemática denominada función hash, una posición única en la tabla, con lo que la búsqueda, la inserción y el borrado son inmediatos: O(). Como ocurre siempre, lo que ganamos por un lado, lo perdemos por otro; en el caso de la tabla hash los inconvenientes son: Al tratarse de un array, el tamaño de la tabla está limitado y debe fijarse desde el principio. Como las posiciones ocupadas no tienen por qué ser consecutivas, no se puede recorrer el contenido de una tabla hash. Como la posición de una palabra se calcula de forma matemática, los datos no pueden almacenarse ordenados. Si permitimos datos duplicados se produce lo que se denomina colisión, que consiste en que a dos palabras se les asigna la misma posición en el array. Este es un problema que trataremos de resolver. Función hash: Hasta ahora hemos dicho que a cada palabra se le asigna una determinada posición de la tabla por medio de la función hash, pero todavía no hemos definido esta función. Veamos una primera solución y sus inconvenientes, y las soluciones que nacen a partir de ésta: Solución : Proponemos como una primera función hash la suma del código ASCII de cada una de las letras de la palabra: F( Palabra) = Palabra' Last i= Palabra' First Character' Pos( Palabra( i)) Por ejemplo: F (" alfredo") = =

2 Programación. Tema : Tablas Hash /Mayo/ Colisión : Palabras idénticas. Colisión : Palabras formadas por las mismas letras pero en distinto orden. Colisión : Palabras distintas cuyas letras dan la misma suma. La suma da números muy pequeños. Solución : Suma ponderada o polinómica. Cambiamos la función hash para que el resultado sea mayor; para conseguir esto multiplicamos la posición de cada letra de la palabra por el número de letras del alfabeto () elevado al peso que tiene la letra en la palabra: F n n ( Palabra) = Polinomio( Palabra) = n. + ( n ) Por ejemplo: F (" alfredo") = Los resultados de la función hash salen muy diferentes para cada palabra, con lo que éstas se guardan en posiciones muy separadas de la tabla, desperdiciando de esta forma una gran cantidad de memoria. Si introducimos una palabra muy grande, la posición resultante es demasiado elevada. Por ejemplo, si queremos insertar una palabra de letras, la posición que le corresponde viene dada por Solución : Para evitar que se produzcan resultados demasiado elevados, dividimos el resultado de la función de la solución anterior entre el tamaño de la tabla hash y tomamos como resultado de la nueva función hash el resto de esta división. F ( Palabra) = Polinomio( Palabra) mod Tamaño _ Tabla Se producen muchas colisiones debido a la reducción del resultado de la función hash con el mod. Solución :

3 Programación. Tema : Tablas Hash /Mayo/ Para arreglar el problema de las colisiones hay dos posibles opciones: Usar memoria dinámica: Cada posición de la tabla hash contiene una lista o un árbol. De esta forma, si a dos palabras les corresponde la misma posición de la tabla, lo único que hay que hacer es insertar ambas en la lista o en el árbol, según sea el caso. Si la solución anterior no es viable, hay que buscar otra manera de arreglar las colisiones. Esta solución consistiría en buscar, mediante saltos, otra posición de inserción de la palabra a partir de la posición que le corresponde según la función hash, sólo en el caso de que esta posición esté ocupada, es decir, sólo si se produce una colisión. Hay varias implementaciones de esta solución en función del salto que se utilice:. Salto = Posición + n, con n =,,... De esta forma insertaremos la nueva palabra en la posición no ocupada más próxima a partir de la posición que le correspondería en realidad. Por ejemplo: Queremos insertar, pero la posición que le corresponde (posición ) ya está ocupada, por lo que insertaremos en la posición vacía más próxima a a partir de ésta De la misma forma que antes, vamos a insertar Ahora queremos insertar, pero la posición que le corresponde (posición ) ya está ocupada.

4 Programación. Tema : Tablas Hash /Mayo/ Las palabras tienden a concentrarse en ciertas zonas de la tabla, dejando grandes espacios en blanco entre cada grupo de posiciones ocupadas.. Salto = Posición + n, con n =,,... De esta forma, evitamos el apelotonamiento de datos. Si queremos insertar una palabra y justo las posiciones x +, x +, x +,... están ocupadas, mientras que las que quedan en medio están vacías, va a tardar demasiado en encontrar un hueco libre en la tabla cuando en realidad se ha pasado por alto unos cuantos. Queremos insertar, pero la posición que le corresponde (posición ) ya está ocupada buscamos la posición de inserción: x + = Ya está ocupada. x + = Ya está ocupada. x + = Se sale de la tabla, con lo que contamos a partir del principio: = Ya está ocupada.... Así entraríamos en un bucle sin fin, pues las posiciones se van a repetir y, sin embargo, todavía nos quedan posiciones libres en la tabla.. Salto variable: el valor de este salto no puede ser aleatorio, ya que de ser así, una vez insertada una palabra no seríamos capaces de encontrarla en la tabla, pues no sabríamos cuánto hay que saltar a partir de su posición resultante de la función hash. Una posible solución es calcular este salto por medio de otra función hash que resulte un número más pequeño: Salto = k (( Polinomio( Palabra)) mod k) donde k es el máximo salto que permitimos (lo elegimos nosotros). Algoritmos en Ada: function Posición_Hash ( Palabra : in String; Tamaño_Tabla : in Positive) return Natural is

5 Programación. Tema : Tablas Hash /Mayo/ Posición : Natural := ; begin for I in Palabra Range loop Posición := (Posición + (I * Character Pos(Palabra(I) **I))) mod Tamaño_Tabla; end loop; return Posición; end Posición_Hash; function salto_hash (Palabra : in String) return Integer is begin return Character Pos (Palabra(I)) mod ; end Salto_Hash; Observaciones importantes: Se recomienda fijar el tamaño de la tabla hash como el doble del necesario para almacenar todos los elementos. Si queremos ampliar el tamaño de la tabla, como la función hash depende del tamaño de ésta, hay que recalcular las posiciones de todos lo elementos e insertarlos en estas nuevas posiciones (NO se puede copiar directamente el contenido de una tabla a otra). El tamaño de la tabla debe ser un número primo para evitar bucles infinitos como ocurría en el ejemplo del segundo tipo de salto. Se recomienda no permitir datos duplicados a no ser que vayamos a implementar la tabla hash con listas, ya que si se almacena todo en el array la gestión de la información para insertar y buscar se complica. En caso de que permitiéramos datos duplicados en una tabla implementada con saltos, necesitaríamos introducir un nuevo campo Borrado de tipo boolean en cada posición que nos diga si el dato contenido en esa posición ha sido borrado o todavía no se ha insertado nada en ella. Observación. Esto es así porque, al haber datos duplicados, el segundo elemento que insertemos se irá a colocar en una posición de la tabla que no se corresponde con el resultado de la primera función hash. En caso de que no usásemos la variable boolean, si borrásemos el elemento que había en la primera posición, cuando intentásemos buscar el segundo elemento se elevaría la excepción No_Encontrado pues la posición que le corresponde está vacía. Sin embargo, con el boolean, como al borrar el primer elemento habríamos puesto esta variable a True, al buscar el segundo elemento basta con seguir calculando saltos hasta

6 Programación. Tema : Tablas Hash /Mayo/ que lo encontremos, hasta que en una posición en la que debería estar el elemento el campo Borrado esté puesto a False o hasta que la posición calculada con saltos sea de nuevo igual a la posición de la que partimos. Lo vemos mejor con un ejemplo: Supongamos un array implementado con el primer tipo de salto, es decir, saltos a posiciones consecutivas: Dato : Dato : Dato : Dato : Borramos Borrado : True Dato : Dato : Dato : Dato : Dato : Dato : Dato : Dato : Dato : Si ahora quisiéramos buscar el elemento los pasos que seguiríamos serían:. Posición () = mod =. Comprobamos el campo Borrado de la posición de la tabla. Como está puesto a True, seguimos buscando.. Comprobamos el Borrado de la posición. Como está a False, miramos a ver si el dato coincide con el que estamos buscando. Como no es así, seguimos buscando..... Comprobamos el Borrado de la posición. Como está a False, miramos a ver si el dato coincide con el que estamos buscando. Como esto último se cumple, retornamos True.

7 Programación. Tema : Tablas Hash /Mayo/

Tema 2.- Ordenación (Parte I)

Tema 2.- Ordenación (Parte I) En la elaboración de estos apuntes han participado los siguientes alumnos: Helena Hernández Obregón (Curso 200/2002), Eduardo Quevedo, Raquel González y Aarón Asencio (Curso 2003/200). Actualizado por

Más detalles

Tema 7: Árbol Binario

Tema 7: Árbol Binario Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema 7: Árbol Binario En el árbol binario se combina lo mejor del array (acceso rápido a elementos,

Más detalles

Tema 3: Listas Enlazadas

Tema 3: Listas Enlazadas Apuntes elaborados por: Eduardo Quevedo/ Raquel López García Revisado por: Javier Miranda el???? Tema 3: Listas Enlazadas En este tema se va a trabajar con memoria de tipo dinámico, organizada por nodos

Más detalles

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el???

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Apuntes elaborados por: Aaron Asencio, duardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Tema 9: rafos Los grafos no son más que la versión general de un árbol, es decir, cualquier nodo de

Más detalles

Hashing (Funciones de Dispersión)

Hashing (Funciones de Dispersión) Hashing características Hashing (Funciones de Dispersión) Mauricio Solar Lorna Figueroa No necesita almacenamiento adicional (índice). Facilita la inserción y eliminación rápida de registros. Encuentra

Más detalles

Tema 5.- Recursividad

Tema 5.- Recursividad Apuntes elaborados por: Raquel López, Eduardo Quevedo y Aaron Asencio Revado por: Javier Miranda el???? Tema 5.- Recursividad NOTA Todos los ejemplos que se exponen en este tema se pueden realizar utilizando

Más detalles

Indexación con lista enlazada

Indexación con lista enlazada Indexación con lista enlazada Estructura de datos Roberto Maestre Martínez Diseño y arquitectura del sistema La nomenclatura utilizada es la siguiente. cvar Indica nombre de clase Var ovar Indica un objeto

Más detalles

Tablas de Dispersión (Hashing Tables)

Tablas de Dispersión (Hashing Tables) Tablas de Dispersión (Hashing Tables) Las tablas de dispersión o hashing tables (en inglés) es una técnica que se utiliza para implementar inserciones, eliminaciones y búsquedas en un tiempo medio constante.

Más detalles

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Función

Más detalles

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa Estructura de Datos y de la Información Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa Laboratorio de Investigación y Desarrollo en Inteligencia Artificial Departamento de Computación

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 4. Técnicas de Dispersión. Definición y Manejo.

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 4. Técnicas de Dispersión. Definición y Manejo. FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 4. Técnicas de Dispersión. Definición y Manejo. 1.- Introducción. 2.- Funciones de Dispersión. 3.- Saturación Progresiva. 4.- Empaquetado

Más detalles

Apuntes elaborados por: Eduardo Quevedo,Raquel López Revisado por: Javier Miranda el 25 de Mayo de 2004

Apuntes elaborados por: Eduardo Quevedo,Raquel López Revisado por: Javier Miranda el 25 de Mayo de 2004 Apuntes elaborados por: Eduardo Quevedo,Raquel López Revisado por: Javier Miranda el 25 de Mayo de 2004 Tema 1: Arrays En este primer tema nos familiarizaremos con la programación mediante objetos con

Más detalles

Esquema básico de una Tabla de Dispersión

Esquema básico de una Tabla de Dispersión 3 Tablas de Dispersión Estructura de datos para gestionar colecciones de elementos donde la búsqueda de un elemento puede hacerse en O(1) en un alto porcentaje de casos - mejora el tiempo de búsqueda en

Más detalles

Tablas de dispersión (hash tables)

Tablas de dispersión (hash tables) Tablas de dispersión (hash tables) La dispersión es una técnica empleada para realizar inserciones, eliminaciones y búsquedas en un tiempo promedio constante. La estructura de datos ideal para la tabla

Más detalles

Tablas (Diccionarios). Modelo matemático

Tablas (Diccionarios). Modelo matemático Tablas (Diccionarios). Modelo matemático Asumimos un conjunto de claves C y un conjunto de valores V. Matemáticamente una tabla es una aplicación t : C V. El grafo de dicha función es un conjunto de pares

Más detalles

SEGUNDA PARTE: TIPOS COMPLEJOS

SEGUNDA PARTE: TIPOS COMPLEJOS SEGUNDA PARTE: TIPOS COMPLEJOS Introducción En la primera parte del tema se vieron los tipos simples de datos que es capaz de almacenar el ordenador: booleanos, caracteres, enteros y reales. Sin embargo,

Más detalles

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

Estructura de datos y de la información Boletín de problemas - Tema 10 Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico

Más detalles

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria Estructura de datos y Algoritmos Tema III Clasificación en memoria secundaria 3.1. Clasificación externa basada en mezcla 3.1.1. Mezcla directa. 3.1.2. Mezcla natural. 3.1.3. Mezcla balanceada múltiple.

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

ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES TEMAS Recorrido de un árbol Máximo y mínimo Búsqueda de un elemento Borrado de un nodo 3 Características ARBOLES - CONCEPTOS Cada elemento del árbol

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Nombre-Apellidos:

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Nombre-Apellidos: Nombre-Apellidos: Nota: 1. Ejercicio (1 punto) Responder a las siguientes preguntas de tipo test, seleccionando sólo una de las respuestas. Se evaluarán sólo las respuestas contestadas con el siguiente

Más detalles

ARBOLES B. Lo que si es cierto es que la letra B no significa "binario", ya que:

ARBOLES B. Lo que si es cierto es que la letra B no significa binario, ya que: ARBOLES B El problema original comienza con la necesidad de mantener índices en almacenamiento externo para acceso a bases de datos, es decir, con el grave problema de la lentitud de estos dispositivos

Más detalles

Divisibilidad y congruencia

Divisibilidad y congruencia Divisibilidad y congruencia Taller de Álgebra I Verano 2017 Algoritmo de la división Teorema Dados a, d Z, d 0, existen únicos q, r Z tales que a = qd + r, 0 r < d. Idea de la demostración: (caso a 0,

Más detalles

Estructura de Datos y de la Información

Estructura de Datos y de la Información Universidad Rey Juan Carlos Curso 2009/10 Ingeniería Técnica en Informática de Gestión Estructura de Datos y de la Información Examen Final Junio 2010 Fecha: 24-6-2010 Soluciones Ejercicio 1. (Puntuación

Más detalles

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

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz

Más detalles

Análisis amortizado El plan:

Análisis amortizado El plan: Análisis amortizado El plan: Conceptos básicos: Método agregado Método contable Método potencial Primer ejemplo: análisis de tablas hash dinámicas Montículos agregables (binomiales y de Fibonacci) Estructuras

Más detalles

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente: ASIGNATURA TITULACIÓN APELLIDOS ESTRUCTURA DE DATOS Y DE LA INFORMACIÓN EJERCICIO 1 (3 PUNTOS) GRUPO CURSO CONVOCATORIA NOMBRE 23 / 24 EXTRAORDINARIA- SEPTIEMBRE CALIFICACIÓN Dado el tipo abstracto de

Más detalles

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios 35. 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

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

Capítulo 3. Clasificación en Memoria Secundaria

Capítulo 3. Clasificación en Memoria Secundaria Capítulo 3. Clasificación en Memoria Secundaria INTRODUCCIÓN Las memorias secundarias (cintas magnéticas, discos duros, ) se caracterizan en general porque el acceso es secuencial. Es decir, en un instante

Más detalles

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Índice general:. Modelo y Aplicación de Lista con Punto de Interés

Más detalles

Razón de ser Computadora Programa Programador Análisis y solución de problemas (Metodología) Algoritmo Diagrama de flujo

Razón de ser Computadora Programa Programador Análisis y solución de problemas (Metodología) Algoritmo Diagrama de flujo ARREGLOS I Razón de ser Computadora Programa Programador Análisis y solución de problemas (Metodología) Algoritmo Diagrama de flujo Investigaron y estudiaron ( comprendieron!) Clasificación de las computadoras

Más detalles

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C)

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C) APRENDERAPROGRAMAR.COM INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

COMPRESIÓN DE MENSAJES

COMPRESIÓN DE MENSAJES COMPRESIÓN DE MENSAJES Codificación por Huffman y Codificación Aritmética. Jose Alberto Benítez Andrades Juan Antonioo Valbuena López 2º Ingeniería Informática Teoría de la Información y Códigos Universidad

Más detalles

Estructuras de datos: Tablas de dispersión

Estructuras de datos: Tablas de dispersión Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge sjorge@udc.es Referencias bibliográficas M. A. Weiss. Dispersión. En Estructuras de datos y algoritmos,

Más detalles

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1 Solución al Ejercicio de Autocomprobación 1 PREGUNTA 1 (1 punto) Señale razonadamente la veracidad o falsedad de las afirmaciones siguientes: A. La diferencia fundamental entre los lenguajes ensamblador

Más detalles

Tema 4- Representación Enlazada

Tema 4- Representación Enlazada Tema 4- Representación Enlazada Tema 4: Representación Enlazada Índice general: 1. Representación Enlazada: Variables referencia Java como enlaces. 2. Listas Enlazadas Genéricas. Operaciones y costes.

Más detalles

Tema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

Tema 8. Listas.  José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz Tema 8. Listas 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 Universitat

Más detalles

Tema 04: TAD Lista. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 04: TAD Lista. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 04: TAD Lista M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido TAD Lista Descripción del TAD Lista

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

Implementación de diccionarios sobre Trie en C++

Implementación de diccionarios sobre Trie en C++ Implementación de diccionarios sobre Trie en C++ Algoritmos y Estructuras de Datos II 2. do cuatrimestre de 2016 Introducción Vamos a implementar una interfaz de diccionario en C++ La representación interna

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

Divisibilidad y congruencia

Divisibilidad y congruencia de los ejercicios de la clase 8 Divisibilidad y congruencia Taller de Álgebra I Segundo cuatrimestre de 2016 Introducción A continuación les presentamos algunas soluciones para los ejercicios de la clase

Más detalles

Tablas Asociativas (Hash) Tablas: filas & columnas de información Especificación algebraica

Tablas Asociativas (Hash) Tablas: filas & columnas de información Especificación algebraica Tablas Asociativas (Hash) Tablas: filas & columnas de información Una tabla tiene varios campos (tipos de información) Una guía telefónica podría tener campos como: nombre, dirección, número de teléfono,

Más detalles

Otras estructuras de datos

Otras estructuras de datos Otras estructuras de datos Programación de Sistemas de Telecomunicación Informática II GSyC Universidad Rey Juan Carlos Noviembre 2016 GSyC - 2016 Otras estructuras de datos 1 c 2016 Grupo de Sistemas

Más detalles

Es común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la

Es común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la Es común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la necesidad de realizar inserciones. Por ejemplo si tenemos

Más detalles

Programación en Visual Basic Ricardo Rodríguez García

Programación en Visual Basic Ricardo Rodríguez García Manual Básico de Programación en Visual Basic 1.- Estructura de un proyecto Visual Basic Los programas o aplicaciones desarrolladas en Visual Basic van a constituir un único paquete que denominaremos proyecto.

Más detalles

Teorema fundamental para la resolución de ecuaciones no lineales.

Teorema fundamental para la resolución de ecuaciones no lineales. Por Bruno Cuevas y Carlos Pérez 1 Tutorial Matlab 2 En este nuevo tutorial, intentaré por una parte explicar la teoría que hemos dado en clase después del primer parcial (es decir: resolución de ecuaciones

Más detalles

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo

Más detalles

Parte I: Programación en Ada

Parte I: Programación en Ada Parte I: Programación en Ada 1. Introducción a los computadores y su programación 2. Elementos básicos del lenguaje 3. Modularidad y programación orientada a objetos 4. Estructuras de datos dinámicas 5.

Más detalles

RESPUESTAS AL EXAMEN DE FUNCIONES 22/05/2001

RESPUESTAS AL EXAMEN DE FUNCIONES 22/05/2001 RESPUESTAS AL EXAMEN DE FUNCIONES /05/001 En lugar de simplemente dar las respuestas me ha parecido conveniente introducir las explicaciones pertinentes sobre el porqué de dichas respuestas Espero que

Más detalles

1 Introducción. 1.2 Estructuras de datos y Tipos de Datos Abstractos. Estructura de Datos y Algoritmos. Tema I Introducción y conceptos fundamentales

1 Introducción. 1.2 Estructuras de datos y Tipos de Datos Abstractos. Estructura de Datos y Algoritmos. Tema I Introducción y conceptos fundamentales 1 Introducción En este capitulo se presentan los conceptos y definiciones fundamentales que acompañarán al alumno a lo largo de toda la asignatura. Es muy importante fijar estos conceptos ya que de ello

Más detalles

Análisis amortizado El plan:

Análisis amortizado El plan: Análisis amortizado El plan: Conceptos básicos: Método agregado Método contable Método potencial Primer ejemplo: análisis de tablas hash dinámicas Montículos agregables (binomiales y de Fibonacc Estructuras

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: NOTA FINAL: Nota Practica (1 punto) + Nota Examen (9 punto) Es indispensable aprobar el examen (4,5 puntos) para aprobar la asignatura (5 puntos) La práctica es opcional Duración:

Más detalles

Estructuras Dinámicas de datos.

Estructuras Dinámicas de datos. Estructuras Dinámicas de datos. Las estructuras dinámicas de datos son estructuras que crecen a medida que ejecuta un programa. Una estructura dinámica de datos es una colección de elementos llamadas nodos

Más detalles

Arreglos y Subrangos

Arreglos y Subrangos Arreglos y Subrangos Programación 1 InCo - FING Programación 1 Arreglos y Subrangos InCo - FING 1 / 27 Tipos de datos definidos por el programador Programación 1 Arreglos y Subrangos InCo - FING 2 / 27

Más detalles

Arreglos y Subrangos

Arreglos y Subrangos Arreglos y Subrangos Programación 1 InCo - FING Contents 1 Tipo subrango 2 1.1 Subrangos de enteros......................... 2 1.2 Subrangos de caracteres....................... 2 1.3 Operaciones con subrangos.....................

Más detalles

DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS

DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación Un dato

Más detalles

Profesor: José Miguel Rubio L.

Profesor: José Miguel Rubio L. Profesor: José Miguel Rubio L. Magíster en Ingeniería Informática Ingeniero Civil en Informática Licenciado en Ciencias de la Ingeniería Técnico en Programación Oficina: 3-20 e-mail 1: jose.rubio.l@ucv.cl

Más detalles

Segundo parcial de Programación 2

Segundo parcial de Programación 2 Generalidades: Segundo parcial de Programación 2 a. La prueba es individual y sin material. b. La duración es 3hs. c. Sólo se contestan dudas acerca de la letra. 8 de Julio de 2016 d. Escriba las hojas

Más detalles

Matemáticas 2ºBachillerato Aplicadas a las Ciencias Sociales

Matemáticas 2ºBachillerato Aplicadas a las Ciencias Sociales Matemáticas 2ºBachillerato Aplicadas a las Ciencias Sociales 1era evaluación. Determinantes DETERMINANTES Se trata de una herramienta matemática que sólo se puede utilizar cuando nos encontremos con matrices

Más detalles

Estructura de Datos. Listas Enlazadas

Estructura de Datos. Listas Enlazadas Estructura de Datos Listas Enlazadas Conceptos de Lista enlazada Una lista enlazada es una secuencia de nodos que se interconectan mediante sus campos de enlace. Nodo: un objeto creado desde una clase

Más detalles

El TAD tabla y las tablas dispersas (o tablas hash) Lección 19

El TAD tabla y las tablas dispersas (o tablas hash) Lección 19 El TAD tabla y las tablas dispersas (o tablas hash) Lección 19 Concepto de Tabla Una tabla es un conjunto o colección de pares c se denomina clave, y v se denomina valor asociado a la clave c En

Más detalles

Diseño de Conjuntos y Diccionarios con Hashing

Diseño de Conjuntos y Diccionarios con Hashing Diseño de Conjuntos y Diccionarios con Hashing Representación de Conjuntos y Diccionarios TAD Diccionario(clave, significado) Observadores básicos def?: dicc(clave, significado) bool obtener: clave c dicc(clave,

Más detalles

Apéndice 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas. . Analizando el

Apéndice 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas. . Analizando el Apéndice 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas Polinomios Dedicaremos este apartado al repaso de los polinomios. Se define Rx a 0 a 1 x a 2 x 2...a n x n a 0,a 1,a 2,...,a

Más detalles

Tema 6. Ordenación, búsqueda e intercalación interna

Tema 6. Ordenación, búsqueda e intercalación interna Fundamentos de Programación I Tema 6. Ordenación, búsqueda e intercalación interna Luís Rodríguez Baena (luis.rodriguez@upsam.net) Universidad Pontificia de Salamanca (campus Madrid) Escuela Superior de

Más detalles

Programación de Videojuegos Tema 15 Tipos de Dato I. 15. Tipos de Dato I

Programación de Videojuegos Tema 15 Tipos de Dato I. 15. Tipos de Dato I 15. Por ahora ya sabemos lo suficiente sobre el muestreo de textos por pantalla, aunque por supuesto a falta de practicar un poco. Vamos a cambiar un poco de temática y vamos a ver otros aspectos avanzados

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

Alonso Ramirez Manzanares Computación y Algoritmos 03.05

Alonso Ramirez Manzanares Computación y Algoritmos 03.05 Tablas de hash (2) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 03.05 Tablas de hash: resolviendo colisiones por encadenamiento cuando el número de elementos en total es proporcional al número

Más detalles

Lista Simple con Puntero al Principio y Puntero al Final

Lista Simple con Puntero al Principio y Puntero al Final Unidad 3 Estructuras de Datos Avanzadas Introducción Hasta el momento se estudiaron las siguientes estructuras estáticas y dinámicas básicas para representar diferentes colecciones de elementos: Arreglo

Más detalles

El nivel Interno. Índice Tema 3

El nivel Interno. Índice Tema 3 El nivel Interno Índice Tema 3 iel nivel Interno...1 Introducción...2 Etapas de acceso a la base de datos...2 Gestor de Disco...3 Gestor de Ficheros...3 Agrupamiento...4 Interactivos...4 Entrearchivos...4

Más detalles

Programación Web Tema 3.2 Java Script Estructura del Lenguaje. Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM

Programación Web Tema 3.2 Java Script Estructura del Lenguaje. Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM Programación Web Tema 3.2 Java Script Estructura del Lenguaje Miguel Ángel Manso Emerson Castañeda Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM Contenido Variables Operadores Estructuras

Más detalles

Unidad 5: Estructuras Estáticas I: Tablas 1 Unidad 5 ESTRUCTURAS ESTÁTICAS I: Tablas Desarrollo de la unidad : 36 h

Unidad 5: Estructuras Estáticas I: Tablas 1 Unidad 5 ESTRUCTURAS ESTÁTICAS I: Tablas Desarrollo de la unidad : 36 h Unidad 5: Estructuras Estáticas I: Tablas 1 Unidad 5 ESTRUCTURAS ESTÁTICAS I: Tablas Desarrollo de la unidad : 36 h Prácticas: Ejercicios: Conceptos: Tablas unidimensionales, vectores, cadenas, modificación,

Más detalles

Estructuras dinámicas lineales (i)

Estructuras dinámicas lineales (i) Estructuras dinámicas lineales (i) Introducción En la lección anterior se explicaron los conceptos de dinámicas y puntero; vimos la forma en que se implementan dichas tanto en la notación algorítmica como

Más detalles

Los Tipos Abstractos de Datos. Estructuras de Datos y Algoritmos 03/04

Los Tipos Abstractos de Datos. Estructuras de Datos y Algoritmos 03/04 Los Tipos Abstractos de Datos Estructuras de Datos y Algoritmos 03/04 Qué son los TAD s? Metodología de programación con TAD s Especificación Algebraica de TAD s Qué son los TAD s? Con los lenguajes de

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

Más detalles

2.1 Introducción. Propiedades.

2.1 Introducción. Propiedades. 19 2 MATRICES II: DETERMINANTES En este segundo capítulo de matrices, aprenderemos a utilizar una herramienta muy importante como son los determinantes Gracias a ellos, podremos calcular la inversa de

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión X Colecciones... 6 Interfaz List... 15 ArrayList... 17 Recorrido Colecciones... 22 Iteradores en

Más detalles

Conocimientos previos

Conocimientos previos Ficha de aprendizaje Tema: Datos, variables y Operaciones n 6 Logro Reconoce las partes de un programa y comprende su estructura. Reconoce la diferencia entre los tipos de datos. Asigna datos a las variables

Más detalles

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010 Estructura de Datos Árboles Binarios de Búsqueda ABB Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 20 1 Arboles de Búsqueda Binaria El árbol binario de búsqueda (ABB) toma su nombre del

Más detalles

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados

Más detalles

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos Algoritmos y structuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. omplejidad de los

Más detalles

INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C)

INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C) APRENDERAPROGRAMAR.COM INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

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

Introducción: una simple colección

Introducción: una simple colección Introducción: una simple colección Implemente una clase denominada Lista. La clase deberá mantener una colección de números y proveer los siguientes i métodos: Listas dinámicas simplemente enlazadas Franco

Más detalles

Versión Iterativa de recuperar en un. Ejercicios Tema 11. Implementa una versión del método recuperar iterativa con la siguiente especificación:

Versión Iterativa de recuperar en un. Ejercicios Tema 11. Implementa una versión del método recuperar iterativa con la siguiente especificación: Versión Iterativa de recuperar en un ABB Ejercicios Tema 11 Ejercicios Adaptados de Apuntes y Exámenes de EDA Germán Moltó Martínez gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica

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 edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Árbol binario de

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: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz

Más detalles

Algorítmica y Complejidad. Tema 3 Ordenación.

Algorítmica y Complejidad. Tema 3 Ordenación. Algorítmica y Complejidad Tema . Introducción.. Algoritmo de inserción.. Algoritmo de selección.. Algoritmo de la burbuja.. Algoritmo heapsort.. Algoritmo quicksort. 7. Algoritmo countingsort.. Algoritmo

Más detalles

B) Contestar Verdadero o Falso a las siguientes preguntas, justificando la respuesta:

B) Contestar Verdadero o Falso a las siguientes preguntas, justificando la respuesta: ASIGNATURA CURSO CALIFICACIÓN ESTRUCTURA DE DATOS Y DE LA INFORMACIÓN 2005 / 2006 TITULACIÓN GRUPO CONVOCATORIA EXTRAORDINARIA - DIC B) Contestar Verdadero o Falso a las siguientes preguntas, justificando

Más detalles

ALGORITMOS Y PROGRAMACIÓN I Unidad 3

ALGORITMOS Y PROGRAMACIÓN I Unidad 3 ALGORITMOS Y PROGRAMACIÓN I Unidad 3 Tipos de Datos Estructurados Prof. Jaime Soto Sección (007) Material original de Prof. AURELY LEAL Introducción a las Estructuras de Datos Una estructura de datos es

Más detalles

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A.

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A. Docente: Albert A. Osiris Sofía 1º Cuatrimestre 2002 Conceptos Básicos Indices Ordenados Arboles Asociación Indexación y Asociación Archivos Indice 1 2 3 1 Archivos Indice Ordenados Asociativos Primario

Más detalles

Programación de sistemas Listas enlazadas

Programación de sistemas Listas enlazadas Programación de sistemas Listas enlazadas Departamento de Ingeniería Telemática 1 Contenidos *** Introducción a los genéricos Estructuras de datos Listas enlazadas La clase Node La clase LinkedList Ventajas

Más detalles

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS Capítulo 3 Estructuras de datos estáticas 1/37 1. INTRODUCCIÓN Las estructuras de datos se utilizan, generalmente, para procesar una colección de valores que están

Más detalles

Programación en Pascal. Memoria dinámica

Programación en Pascal. Memoria dinámica Programación en Pascal. Memoria dinámica Escuela Técnica Superior de Ingeniería de Telecomunicación Universidad Rey Juan Carlos gsyc-profes (arroba) gsyc.urjc.es Diciembre de 2018 GSyC - 2018 Programación

Más detalles