4. TABLAS. Una tabla esta ordenada, si las claves de información de los registros están ordenadas: k j < k j+1 (j=1,2,...)

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

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

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

El nivel Interno. Índice Tema 3

UNIDAD 1: NÚMEROS RACIONALES OBJETIVOS

1. (F, +) es un grupo abeliano, denominado el grupo aditivo del campo.

MATEMÁTICAS PARA LA COMPUTACIÓN CAPÍTULO 1. SISTEMAS NUMÉRICOS

CAPÍTULO II SISTEMAS NUMÉRICOS. Este método de representar los números se llama sistema de numeración decimal, donde 10 es la base del sistema.

Diseño de Conjuntos y Diccionarios con Hashing

UNIDAD DE APRENDIZAJE I

MatemáticaDiscreta&Lógica 1

Aritmética de Enteros

como les va con las practicas?

Instructivo Costo Promedio Ponderado en el software administrativo

Matemáticas Discretas. Oscar Bedoya

1 SISTEMAS DE ECUACIONES LINEALES. MÉTODO DE GAUSS

TEMA 2. CODIFICACIÓN DE LA INFORMACIÓN

INTERVALOS Y SEMIRRECTAS.

NIVEL 14: ESTRUCTURAS DE ACCESO DIRECTO

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

4. NÚMEROS PSEUDOALEATORIOS.

Análisis y Diseño de Algoritmos Tablas de Hash

Ingeniería en Computación

Tablas Hash y árboles binarios

Aritmética modular. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Aritmética modular 1 / 16

(a+b) (a b)=a 2 b 2 OBJETIVOS CONTENIDOS PROCEDIMIENTOS

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

Por qué incorporar el álgebra a las asignaturas?

OBJETIVOS CONTENIDOS PROCEDIMIENTOS

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

PLAN DE REFUERZO NOMBRE ESTUDIANTE: Nº

1. Conjuntos y funciones

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

Representación de números enteros: el convenio exceso Z

Matrices y Sistemas Lineales

Alonso Ramirez Manzanares Computación y Algoritmos 03.05

INSTITUCION EDUCATIVA LA PRESENTACION NOMBRE ALUMNA: AREA :

<tipo> Tipo de dato de los elementos del vector

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco)

Conceptos básicos de bases de datos

Matrices y Sistemas Lineales

5.2. Sistemas de codificación en binario

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

INDICE 1. Introducción: Archivos y Estructuras de Archivos 2. Operaciones Fundamentales para el Procesamiento de Archivos

Introducción al Álgebra

3. ANÁLISIS DE SEÑALES

UNIDAD DE APRENDIZAJE II

Criterios de divisibilidad y Congruencias

MATE EJERCICIOS DE PRACTICA

Productos notables. Se les llama productos notables (también productos especiales) precisamente porque son muy utilizados en los ejercicios.

1, 2, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 2, 1, 1, 4, 1

1 ÁLGEBRA DE MATRICES

RECONOCER EL GRADO, EL TÉRMINO Y LOS COEFICIENTES DE UN POLINOMIO

5 centenas + 2 decenas + 8 unidades, es decir: = 528

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

UNIDAD 1: NÚMEROS NATURALES OBJETIVOS

UNIDAD: NÚMEROS Y PROPORCIONALIDAD. Los elementos del conjunto IN = {1, 2, 3, 4, 5, 6, 7,...} se denominan números

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

Matemáticas 2º E.S.P.A. Pág.1 C.E.P.A. Plus Ultra. Logroño

TEMA V SISTEMAS DE NUMERACIÓN

EXPRESIONES ALGEBRAICAS EXPRESIONES ALGEBRAICAS Y POLINOMIOS

Archivos Hash con resolusión por Cubetas Andrés Arcia

Universidad de Guadalajara Centro universitario de los Altos Licenciatura en Ingeniería en Computación

INSTITUTO POLITECNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE BIOTECNOLOGIA DEPARTAMENTO DE CIENCIAS BASICAS

UNIDAD 8: SUCESIONES Y SERIES

Colegio San Patricio A Incorporado a la Enseñanza Oficial Fundación Educativa San Patricio

Lógica Secuencial y Combinatoria. Dr. Arturo Redondo Galván 1

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

Ejercicios Tema 6. Funciones

Tipos de Datos y Representaciones. Circuitos Digitales, 2º de Ingeniero de Telecomunicación. EITE ULPGC.

Carrera: IFM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Utilizar los productos notables y algunas técnicas de factorización en las operaciones con polinomios.

Contenido. Introducción a los Computadores Conceptos básicos. Sistema de numeración CNM-130

2. Aritmética modular Ejercicios resueltos

TEMA 3. POLINOMIOS Y FRACCIONES ALGEBRAICAS. Ficha 0

Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria

Tablas de dispersión (hash tables)

FICHAS DE TRABAJO REFUERZO

EXPRESIONES ALGEBRAICAS

Sistemas Numéricos Transversal de Programación Básica Proyecto Curricular de Ingeniería de Sistemas

SISTEMAS NUMÉRICOS. Conocer los diferentes sistemas numéricos y su importancia en la informática y la computación

ALGUNOS PROBLEMAS DE ÁLGEBRA PROPUESTOS EN LAS PRUEBAS DE SELECTIVIDAD DE 2015

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Instituto de Matemática. Agosto de ) Encuentre experimentalmente los siguientes valores de su calculadora:

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

Tema 3: Multiplicación y división.

DEPARTAMENTO DE MATEMÁTICAS MATEMÁTICAS 1º DE ESO PRIMER TRIMESTRE

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DIRECCION GENERAL DE ASUNTOS ACADEMICOS PROGRAMA DE ASIGNATURA

(1)Factores, Múltiplos y Divisores. (2) Números compuestos y primos

Aquí encontrará todas las asignaciones del tema de Expresiones Algebraicas y polinomios.

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

Identifica los tipos de datos y funciones. Tipos de Datos: Excel soporta 5 tipos de datos, estos son:

Ficheros Contenido del Tema

1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el pseudocódigo de un programa que lo resuelva:

Capítulo 11. Progresiones aritméticas y geométricas

Aplica la regla Plan de clase (1/3) Escuela: Fecha: Profesor (a):

Prueba de optimalidad con. Métodos de Transporte. Autor : Ing. Germán D. Mendoza R.

UNIVERSIDAD AUTÓNOMA DE AGUASCALIENTES CENTRO DE CIENCIAS BÁSICAS DEPARTAMENTO DE SISTEMAS ELECTRÓNICOS OBJETIVO GENERAL MÉTODOS DIDÁCTICOS EVALUACIÓN

Transcripción:

4. TABLAS Las tablas son agregados de componentes individuales llamados registros. Los registros son una entidad con una colección de datos asociados con nombres para establecer el tipo de información. Los registros en una tabla generalmente tienen asociada una clave y cada registro contiene información asociada con su clave. Así, puede decirse que los registros serían (k 1,I 1 ),(k 2,I 2 ),(k 3,I 3 ),...(k j,i j ), donde I i es la información asociada con la clave k i, para i = 1,2,...j Una utilización de las tablas, es aquella en la cual la información que contiene se refiere a direcciones de cada uno de los nodos de una lista encadenada. Figura 4.1 Utilización de una tabla para una Lista encadenada. Hay muchas maneras para representar la información en una tabla, T, así que operaciones tales como: búsqueda, actualización, inserción, borrado y reportes pueden ser hechos eficiente y convenientemente. Figura 4.2 Ejemplo de una Tabla con varios campos. Muchas veces, la clave del registro esta dada por la posición que ocupe en la tabla. El proceso de buscar en una tabla consiste de un método sistemático para localizar la clave deseada, k r, de la cual deseamos conocer su información asociada. A menudo una tabla es creada en memoria con límites definidos. Una tabla esta ordenada, si las claves de información de los registros están ordenadas: k j < k j+1 (j=1,2,...) Búsqueda secuencial en tablas. BUSSEC() J=1

clave <- dato MQ (~eof) lea registro SI clave = k j TH info <- I j ÉXITO SN j <- j+1 ERROR "la clave a buscar no existe" FBUSSEC() 64 Búsqueda binaria en tabla Sea T una tabla de n entradas, ordenada por un campo que es clave para la información. Se busca en la tabla un campo clave, si está o no. a<= t 1 <t 2 <...<t n <=b. a y b son las fronteras izquierda y derecha (menor y mayor) del intervalo de valores de la clave. BUSBIN() unf <-a sup <- b sw <- 0 clavek <- 1 MQ sw = 0 med = (inf+sup)/2 SI med = clave TH sw =1 SN SI dato < med TH sup = med SI sw = 1 TH "la clave hallada es:", med SN "la clave buscada no esta" FBUSBIN() Búsqueda Multiplicativa BUSMULT() dato <- clave i <- 1 sw <- 0 MQ i<= N & sw = 0 SI dato>t1 TH i <- i*2 SN SI dato<ti TH i <- (i+2)/2 SN SI dato<>ti TH "no existe la clave" sw=1 SN infor <- ti Luis Carlos Torres Soler

Estructuras de Datos FBUSMULT() sw = 1 65 El almacenamiento secuencial y/o ordenado, en general es muy deficiente, porque en muchos casos debe consultarse la totalidad de la tabla, y cuando la tabla es muy grande, el tiempo de proceso es demasiado. El almacenamiento se realiza al asignarle a cada clave del registro una posición especifica en la tabla, para almacenar cada valor clave en una única posición se requiere que la tabla sea tan grande como el mismo rango de las claves. Pero en general, el número total de claves no es muy amplio, entonces la posición se halla por transformaciones de las claves a una posición en la tabla, técnica que se llama hash. Se dice que la posición que ocupa la clave en la tabla es el Hash. Hashing Dada una tabla de tamaño N, y un conjunto S ( S<=N) de claves con un rango M (N << M); la posición de una clave particular se determina transformando la clave en un entero que se halle entre 1 y N. El proceso de transformación se llama Hashing y una transformación particular se llama hash. El hash de una clave es la posición que dicha clave va a ocupar en la tabla. Funciones. La organización de datos en tablas busca una correspondencia entre la clave del registro y la dirección física donde este se almacena. En este caso, la función hashing de la clave, define la posición del registro en la tabla. La función hashing es una transformación que sirve como base para obtener una dirección. Hay varias técnicas para la determinación de dichas direcciones, las más comunes son: Congruencia el tamaño de la tabla. En este caso, cada clave se divide por el tamaño de la tabla, el residuo se toma como la posición. H(Clave) Clave mod N 1 Siendo N el tamaño de la tabla. Ejemplo. NOTA. Es aconsejable que el tamaño de la tabla, N, sea un número primo. 1 Según la numeración que tenga la tabla, en algunos casos es necesario al valor dado en la formula, o en otras formulas posteriores, sumarle 1. Facultad de Ingeniería

66 De acuerdo al tamaño de la tabla, algunas veces es necesario adecuar un multiplicador para estandarizar al tamaño de la misma tabla. Dígitos Centrales. Consiste en elevar al cuadrado la clave y tomar los dígitos centrales como dirección. El número de dígitos a tomar queda determinado por el tamaño de la tabla. Sea K la clave a insertar o buscar, la función hashing queda definida por la siguiente formula: H(K) = digitos_centrales(k 2 ) Ejemplo. Clave Cuadrado centro hash 13452 180 95 6304 95 95 93624 8765 45 3376 45 45 76171 5802 02 1241 02 02 48315 2334 33 9225 33 33 01372 1 88 2384 88 88 Nuevamente, cuando el tamaño de la tabla es menor que el rango a darse con los dígitos centrales tomados, se considera el hash con respecto al módulo de la tabla o a un multiplicador adecuado. es decir, H(K) [digitos_centrales(k 2 )]mod N Sea N=17, de los datos anteriores se tiene: Clave Cuadrado centro hash 13452 180 95 6304 95 10 93624 8765 45 3376 45 11 76171 5802 02 1241 02 02 48315 2334 33 9225 33 16 01372 1 88 2384 88 03 Sea tamaño de la tabla M=500, multiplicador = 500/1000, siendo 999 el máximo cuadrado central a hallar en tres cifras. Si clave = 675, 675 2 = 45 562 5, centro = 562, 562*.5=281, posición de la clave en la tabla es la 281. Si clave = 873, 873 2 = 76 212 9, centro = 212, 212*.5=106, posición en la tabla de la clave es 106. Luis Carlos Torres Soler

Estructuras de Datos Truncamiento. Consiste en tomar algunos dígitos de la clave, operar con ellos y luego hallar la posición respectiva. Sea K la clave, K esta formada por los dígitos d 1,d 2,d 3,...,d n, la función hashing queda definida por: H(K) {operar[elegir_digitos(d 1,d 2,d 3,...,d n )]} mod N. La elección de los dígitos es arbitraria, pero uniforme en el mismo proceso. Defazamiento. Si la clave tiene un gran número de caracteres y puede dividirse en tres partes iguales (algunas veces se consideran partes de distinto tamaño), como por ejemplo 375962143 o 453620170, esta técnica consiste es defazar cada parte de los extremos de la clave sobre el centro y sumarlos entre si (en si realizar alguna operación con las partes) 375 962 143 453 620 170 3759 2143 962 620 3759 375 453 2143 143 170 Se suman las partes y se halla el módulo con respecto al tamaño de la tabla, o se utiliza el multiplicador adecuado. 962 + 375 + 143 = 1480, 620 + 453 + 170 = 1243, 3759 + 2143 = 5902 Si N=1000, por módulo le corresponde posición 480, 243 o 902 Si N=500, por multiplicador.5, les corresponde 1480*.5=740 *.5=370 1243*.5=621 *.5=310 5942*.5=2971 *.5=1485 *.5=742 *.5=371 Doblaje. Al igual que el defazamiento, debe la clave se divide en tres partes, y en esta técnica se hace un doblaje de los extremos sobre el centro, como lo dice el nombre y se suman. Ejemplo. 375 962 143 453 620 170 3759 2143 962 620 3759 573 354 3412 341 071 962 + 573 + 341 = 1876, 620 + 354 + 071 = 1045, Facultad de Ingeniería 67

3759 + 3412 = 7171 68 Si N=1000, por módulo le corresponde posición 876, 45 o 171 Si N=500, por multiplicador.5, les corresponde 1876*.5=938 *.5=469 1045*.5=522 *.5=261 7171*.5=3585 *.5=1792 *.5=896 *.5=448 En algunos casos, en un conjunto de claves, se puede llegar a dar que para por lo menos dos claves se tenga el mismo hash, entonces ocurre una colisión, el proceso de insertar la segunda (tercera,...) clave con el mismo hash, requiere la búsqueda de una nueva posición en la tabla, a este proceso se le llama rehashing. El rehash, se calcula en general por la formula polinomial 2 3 n H(k) = [ a0+a1 H(k)+ a2 H (k)+a3 h (k)+...+an H (k)] mod(n) Los coeficientes del polinomio, deben ser tales que permitan hallar todas las N posiciones de la tabla antes de tener un ciclo. Ejemplo. Sea que se tiene la siguiente tabla para asignación de valores a caracteres alfabéticos: a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 El hash se hallara al sumar los dígitos correspondientes, hallando congruencia con respecto al tamaño de la tabla que es de N=17 Clave método hash Diana (4+9+1+5+1)mod 17 3 Audrey (1+3+4+1+5+7)mod 17 4 Claudia (3+7+1+3+4+9+1)mod 17 11 Silena (1+9+7+5+5+1)mod 17 11 Patricia (3+1+2+1+9+3+9+1)mod 17 12 Paola (3+1+4+7+1)mod 17 16 Magda (6+1+7+4+1)mod 17 2 Rocío (1+4+3+9+4)mod 17 4 Martha (6+1+1+2+8+1)mod 17 2 Helena (8+5+7+5+5+1)mod 17 14 Elvira (5+7+4+9+1+1)mod 17 10 Teresa (2+5+1+5+1+1)mod 17 15 Ana (1+5+1)mod 17 7 Gina (7+9+5+1)mod 17 5 Shirley (1+8+9+1+7+5+7)mod 17 4 Myriam (6+7+1+9+1+6)mod 17 13 Luis Carlos Torres Soler

Estructuras de Datos Cristi (3+1+9+1+2+9)mod 17 8 69 Para el rehash se va a tomar la función H(k)~=[5+H(K)]mod 17. Condición principal es que debe primar el hash ante el rehashing. Búsqueda utilizando HASH BUSCAR(clave) sw=0 i <-- HASH(clave) SI uso(i) = 0 TH ESCRIBIR(no se halla la clave) MQ sw=0 SI info(i) = clave TH sw=1 SN SI link(i) = -1 TH sw=1 ESCRIBIR(no se halla la clave) SN i <-- link(i) FINBUSCAR() INSERTAR(clave) sw=0 i <-- HASH(clave) SI uso(i) = 0 TH info(i) <-- clave uso(i) <-- 1 link(i) <-- -1 EXITO SN MQ sw=0 j = REHASH(i) SI uso(j) = 0 TH link(i) <-- j info(j) <-- clave uso(j) <-- 1 link(j) <-- -1 sw=1 FININSERTAR() BORRADO(clave) sw=0 i <-- HASH(clave) Facultad de Ingeniería

SI uso(i) = 0 TH ESCRIBIR(no se halla la clave) SN SI info(i) = clave TH SI link(i) = -1 TH uso(i) <--0, EXITO SN info(i) <-- info(link(i)) link(i) <-- link(link(i)) uso(i) <-- 1 uso(link(i)) <-- 0 link(link(i)) <-- -1 FINBORRADO() 70 Ejercicios Sea que se tienen las siguientes claves e información 2 relacionada, y el hash 3 establecido, para ser involucradas en una tabla de tamaño M=13. En caso de colisión, el rehashing a utilizar 4 es: h= 2*h + 7. Clave: mary Luis olga tere josé jair pati tuto gray salo cris Info: past Pust pert mirt casi toto lima buey tria gris fuer Hash: 4 6 8 4 2 11 3 0 7 10 1 Cómo queda la tabla al involucrar esta información? Cuál es el algoritmo para asignación de hash a una clave alfanumérica? Al tener la siguiente expresión aritmética: x=y1 * c3 - ux / fw - y2 + ru / kc * rt - fw + c3 / ux + y2 Escriba claramente la lectura en preorden del árbol (generado por Usted) que la representa. Cómo se representa en una tabla el árbol anterior? Explique en forma concreta. 2 Recuerde que la información son campos adicionales en la tabla. 3 Calculado a partir de algún algoritmo especificado. 4 La falta de viabilidad para aplicarlo debe ser explicada clara y correctamente. Luis Carlos Torres Soler