El documento describe las tablas de dispersión, una estructura de datos que permite buscar elementos en tiempo O(1). Consiste en una tabla hash donde cada llave se mapea a una posición mediante una función hash. Esto puede dar lugar a colisiones, que se resuelven mediante encadenamiento o exploración secuencial de posiciones. La función hash debe proporcionar una buena dispersión de las llaves para maximizar la eficiencia.
Este documento introduce conceptos clave de la inteligencia artificial como sistemas expertos y redes neuronales. También describe los sistemas difusos y cómo estos modelan información imprecisa de una manera similar al cerebro humano. Finalmente, explica operaciones básicas entre conjuntos difusos como unión, intersección y complemento.
Este documento trata sobre conceptos avanzados de programación orientada a objetos, incluyendo mapas, pilas, colas y flujos de datos. Explica las características y usos de diferentes tipos de mapas como HashMap, TreeMap y LinkedHashMap. También describe los tipos de datos abstractos de pilas y colas, así como ejemplos de cómo crear y usar estos tipos de datos. Por último, cubre temas relacionados con flujos de datos, incluyendo la lectura y escritura de archivos en Java.
Este documento descreve a história das políticas de saúde no Brasil desde o período colonial até a década de 1930. Aborda os primeiros esforços de organização sanitária no período imperial, o modelo campanhista de Oswaldo Cruz no início do século XX, e o surgimento da previdência social no país após a Primeira Guerra Mundial.
El documento describe las tablas hash, incluyendo su historia, funcionalidad y métodos de resolución de colisiones. Las tablas hash asocian claves con valores y permiten búsquedas rápidas en O(1). Funcionan transformando las claves con una función hash para localizar valores. Los métodos comunes para resolver colisiones son encadenamiento y direccionamiento abierto.
El documento describe la tabla de símbolos, una estructura de datos clave utilizada por los compiladores para almacenar información sobre identificadores como nombres de variables y funciones. Explica que la tabla de símbolos se utiliza para verificar declaraciones, tipos y alcances de identificadores, y puede implementarse como una lista ordenada, árbol binario o tabla hash. También cubre métodos para manejar estructuras anidadas como funciones dentro de la tabla de símbolos.
Este documento presenta conceptos básicos sobre dispersión y estructuras de datos hash. Explica protección activa mediante el uso de buenas funciones hash y protección pasiva cuando varios elementos comparten la misma posición en la tabla. Detalla métodos como tablas hash abiertas y cerradas, y técnicas de exploración lineal y cuadrática para buscar posiciones próximas cuando ocurren colisiones. El documento contiene varios ejercicios para ilustrar estos conceptos.
Un hash es el resultado de una función que genera una clave única que representa un documento o dato de forma casi unívoca. Las tablas hash almacenan información en posiciones pseudoaleatorias generadas por una función hash, permitiendo buscar elementos de forma constante en promedio. Para insertar un elemento, se aplica la función hash a su clave para obtener un índice, resolviendo posibles colisiones mediante encadenamiento u otras técnicas.
Este documento describe las tablas hash, incluyendo su definición como una estructura de datos que asocia claves con valores para permitir búsquedas eficientes. Explica dos métodos comunes para resolver colisiones en las tablas hash, el hashing abierto que usa listas enlazadas y el hashing cerrado que almacena elementos directamente en la tabla. También discute factores que afectan el rendimiento de las tablas hash como la función hash, la estrategia para resolver colisiones y el tamaño de la tabla.
Este documento introduce conceptos clave de la inteligencia artificial como sistemas expertos y redes neuronales. También describe los sistemas difusos y cómo estos modelan información imprecisa de una manera similar al cerebro humano. Finalmente, explica operaciones básicas entre conjuntos difusos como unión, intersección y complemento.
Este documento trata sobre conceptos avanzados de programación orientada a objetos, incluyendo mapas, pilas, colas y flujos de datos. Explica las características y usos de diferentes tipos de mapas como HashMap, TreeMap y LinkedHashMap. También describe los tipos de datos abstractos de pilas y colas, así como ejemplos de cómo crear y usar estos tipos de datos. Por último, cubre temas relacionados con flujos de datos, incluyendo la lectura y escritura de archivos en Java.
Este documento descreve a história das políticas de saúde no Brasil desde o período colonial até a década de 1930. Aborda os primeiros esforços de organização sanitária no período imperial, o modelo campanhista de Oswaldo Cruz no início do século XX, e o surgimento da previdência social no país após a Primeira Guerra Mundial.
El documento describe las tablas hash, incluyendo su historia, funcionalidad y métodos de resolución de colisiones. Las tablas hash asocian claves con valores y permiten búsquedas rápidas en O(1). Funcionan transformando las claves con una función hash para localizar valores. Los métodos comunes para resolver colisiones son encadenamiento y direccionamiento abierto.
El documento describe la tabla de símbolos, una estructura de datos clave utilizada por los compiladores para almacenar información sobre identificadores como nombres de variables y funciones. Explica que la tabla de símbolos se utiliza para verificar declaraciones, tipos y alcances de identificadores, y puede implementarse como una lista ordenada, árbol binario o tabla hash. También cubre métodos para manejar estructuras anidadas como funciones dentro de la tabla de símbolos.
Este documento presenta conceptos básicos sobre dispersión y estructuras de datos hash. Explica protección activa mediante el uso de buenas funciones hash y protección pasiva cuando varios elementos comparten la misma posición en la tabla. Detalla métodos como tablas hash abiertas y cerradas, y técnicas de exploración lineal y cuadrática para buscar posiciones próximas cuando ocurren colisiones. El documento contiene varios ejercicios para ilustrar estos conceptos.
Un hash es el resultado de una función que genera una clave única que representa un documento o dato de forma casi unívoca. Las tablas hash almacenan información en posiciones pseudoaleatorias generadas por una función hash, permitiendo buscar elementos de forma constante en promedio. Para insertar un elemento, se aplica la función hash a su clave para obtener un índice, resolviendo posibles colisiones mediante encadenamiento u otras técnicas.
Este documento describe las tablas hash, incluyendo su definición como una estructura de datos que asocia claves con valores para permitir búsquedas eficientes. Explica dos métodos comunes para resolver colisiones en las tablas hash, el hashing abierto que usa listas enlazadas y el hashing cerrado que almacena elementos directamente en la tabla. También discute factores que afectan el rendimiento de las tablas hash como la función hash, la estrategia para resolver colisiones y el tamaño de la tabla.
Este documento presenta un libro sobre la administración avanzada de Windows 7. El libro enseña a los lectores cómo aprovechar al máximo las características y herramientas de Windows 7 para convertirse en administradores profesionales. A través de sus páginas, los lectores aprenderán sobre temas avanzados como la instalación, configuración, seguridad, rendimiento y solución de problemas de Windows 7. El libro también cubre el uso de aplicaciones, redes, hardware y herramientas administrativas.
Este documento resume los contenidos de un libro sobre soluciones a problemas comunes en computadoras. El libro explica cómo resolver fallas en sistemas operativos como Windows Vista y XP, problemas con aplicaciones como Microsoft Office, y dificultades con hardware, imágenes, audio y correo electrónico. Además, ofrece consejos sobre sistemas mixtos, rendimiento, seguridad y almacenamiento.
Este documento proporciona una introducción y resumen del contenido de un libro sobre seguridad informática. Explica que el libro enseña a los lectores a configurar las herramientas de seguridad necesarias para proteger su computadora y red, incluyendo la instalación de antivirus, protección contra spyware y malware, configuración de firewall y red Wi-Fi, y establecimiento de políticas de seguridad y privacidad. El resumen también incluye una lista de los capítulos que cubren estos temas de seguridad paso a paso.
Este documento habla sobre la importancia de la privacidad y la seguridad de los datos en la era digital. Explica que debido al gran volumen de datos personales que se comparten en línea, es crucial que las empresas protejan esta información de manera responsable para mantener la confianza de los clientes.
Este documento presenta un libro sobre robótica que enseña a construir robots desde cero. Explica los conceptos básicos de robótica e inteligencia de robots, así como los componentes necesarios para construir robots autónomos capaces de percibir su entorno y generar movimiento. El libro guía al lector a través de cada paso teórico y práctico para el armado y programación de un robot.
Este documento proporciona una introducción a cómo convertir una PC en un estudio de grabación musical profesional utilizando herramientas gratuitas tanto en Windows como en Linux. Explica cómo diseñar el espacio de trabajo, el proceso de grabación digital, software recomendado como secuenciadores y editores de audio, y consejos sobre hardware, sistemas operativos e instalación. El objetivo final es aprender a grabar, mezclar e incluso masterizar canciones de forma casera.
Este documento presenta un libro sobre la administración avanzada de Windows 7. El libro enseña a los lectores cómo aprovechar al máximo las características y herramientas de Windows 7 para convertirse en administradores profesionales. A través de sus páginas, los lectores aprenderán sobre temas avanzados como la instalación, configuración, seguridad, rendimiento y solución de problemas de Windows 7. El libro también cubre el uso de aplicaciones, redes, hardware y herramientas administrativas.
Este documento resume los contenidos de un libro sobre soluciones a problemas comunes en computadoras. El libro explica cómo resolver fallas en sistemas operativos como Windows Vista y XP, problemas con aplicaciones como Microsoft Office, y dificultades con hardware, imágenes, audio y correo electrónico. Además, ofrece consejos sobre sistemas mixtos, rendimiento, seguridad y almacenamiento.
Este documento proporciona una introducción y resumen del contenido de un libro sobre seguridad informática. Explica que el libro enseña a los lectores a configurar las herramientas de seguridad necesarias para proteger su computadora y red, incluyendo la instalación de antivirus, protección contra spyware y malware, configuración de firewall y red Wi-Fi, y establecimiento de políticas de seguridad y privacidad. El resumen también incluye una lista de los capítulos que cubren estos temas de seguridad paso a paso.
Este documento habla sobre la importancia de la privacidad y la seguridad de los datos en la era digital. Explica que debido al gran volumen de datos personales que se comparten en línea, es crucial que las empresas protejan esta información de manera responsable para mantener la confianza de los clientes.
Este documento presenta un libro sobre robótica que enseña a construir robots desde cero. Explica los conceptos básicos de robótica e inteligencia de robots, así como los componentes necesarios para construir robots autónomos capaces de percibir su entorno y generar movimiento. El libro guía al lector a través de cada paso teórico y práctico para el armado y programación de un robot.
Este documento proporciona una introducción a cómo convertir una PC en un estudio de grabación musical profesional utilizando herramientas gratuitas tanto en Windows como en Linux. Explica cómo diseñar el espacio de trabajo, el proceso de grabación digital, software recomendado como secuenciadores y editores de audio, y consejos sobre hardware, sistemas operativos e instalación. El objetivo final es aprender a grabar, mezclar e incluso masterizar canciones de forma casera.
1. Tema 1. Técnicas de Implementación 3. Tablas 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 listas: O(n) (o O(log n) si la
lista está ordenada)
Constituyen la generalización del concepto de "array"
• asocian cada llave (en array: cada valor del índice)
• con su valor correspondiente (en array: elemento que ocupa la
posición indicada por el índice)
También llamadas tablas hash
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 43
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Esquema básico de una Tabla de Dispersión
Valores
Llaves
Datos de
0 Lolo
"Pedro" hash("Pedro") 3
1 Vacío
Estructura
de acceso
"Lolo" hash("Lolo") 0 aleatorio
Datos de (array)
2 Pepe
"Pepe" hash("Pepe") 2 Datos de
3 Pedro
Vacío
4
hash(): función de dispersión (también llamada “función hash”)
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 44
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Función de dispersión
Función que hace corresponder cada llave con un número entero
• que es el código de dispersión (hashcode) de esa llave
Características de una buena función de dispersión:
• El código de dispersión debe ser un número dentro del rango
de índices del array
- suele utilizarse el operador módulo (% en Java) para lograrlo
• Debe generar una dispersión uniforme de las llaves en el array
• Debe poder computarse de manera muy eficiente
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 45
2. Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Funciones de dispersión cuando la llave es un
número entero
Primer método: función módulo
hash(llave) = llave % max
• donde max es el tamaño de la tabla
Inconvenientes:
-sólo se usa la parte menos significativa de la llave
-puede producir distribuciones muy poco homogéneas
- cuando alguna de las “terminaciones” de las llaves tiende a
repetirse más que otras
Ejemplo: llave=13267456, max=100
13267456 56
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 46
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Funciones de dispersión cuando la llave es un número entero (cont.)
Segundo método: troceado en grupos de cifras
• divide la llave en n grupos de cifras
• el código de dispersión se calcula como el módulo de la suma
de esos grupos
n–1
⎛ ⎞
hash ( llave ) = ⎜ ∑ ⎛ ------------ mod max⎞ ⎟ mod max
llave
-
⎝ i = 0 ⎝ max ⎠⎠
i
+Ventaja: utiliza todas las cifras de la llave
-Inconveniente: es algo más costosa de calcular
Ejemplo: llave=13267456, max=100, n=4
13267456 1 3 + 2 6 + 7 4 + 5 6 %100= 6 9
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 47
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Funciones de dispersión cuando la llave es una
cadena de caracteres
Primer método: suma de los códigos ASCII de los caracteres
length – 1
⎛ ⎞
hash ( llave ) = ⎜ ∑ ascii ( llave i )⎟ % max
⎝ i=0
⎠
+Ventajas: sencilla y eficiente
-Inconveniente: las llaves con los mismos caracteres (aunque
estén en distinto orden) generan el mismo código de dispersión
Ejemplo: llave="hola", max=100
hash("hola") = (ascii(’h’) + ascii(’o’)
+ ascii(’l’) + ascii(’a’)) % 100
= (104 + 111 + 108 + 97) % 100 = 20
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 48
3. Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Funciones de dispersión cuando la llave es una cadena de caracteres (cont.)
Segundo método: suma con pesos de los códigos ASCII de los
caracteres
• al código ASCII de cada carácter se le suma un “peso” que
depende de la posición que ocupa en la llave
length – 1
⎛ i ⎞
hash ( llave ) = ⎜ ∑ ascii ( ( llave i ) × peso )⎟ % max
⎝ i=0
⎠
+Ventaja: el código depende de los caracteres que forman la
llave y también del orden que ocupan dichos caracteres
-Inconveniente: más costosa de calcular
Ejemplo: llave="hola", max=100, peso=37
hash("hola") =
(ascii(’h’)*373 + ascii(’o’)*372
+ ascii(’l’)*371 + ascii(’a’)*370) % 100
= (104*50653 + 111*1369 + 108*37 + 97) % 100 = 64
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 49
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Funciones de dispersión cuando la llave es una cadena de caracteres (cont.)
Es posible simplificar el cálculo utilizando la siguiente propiedad:
3 2 1 0
A 3 X + A 2 X + A 1 X + A 0 X = ( ( ( A 3 )X + A 2 )X + A 1 )X + A 0
• nos ahorramos calcular Xi
Nos permite representar la función hash mediante la siguiente
expresión recursiva:
⎧ ascii ( llave 0 )
hash ( llave i ) = ⎨
⎩ ( ( ascii ( llave i – 1 ) × max ) + ascii ( llave i ) )
hash ( llave ) = hash ( llave length ) mod max
Para cadenas largas, el resultado obtenido podría superar el valor
máximo almacenable en un entero
• en ese caso se podría obtener un resultado negativo
• si esto ocurre le sumamos max para ponerlo en positivo
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 50
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Funciones de dispersión cuando la llave es una cadena de caracteres (cont.)
Ejemplo: cálculo de la función hash para cadenas de caracteres
public static int hashCode(String s, int max) {
int cod=0;
for (int i=0; i<s.length(); i++) {
cod=(cod*37+ s.charAt(i));
}
cod = cod % max;
if (cod<0) {
cod=cod+max;
}
return cod;
}
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 51
4. Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Problema de las colisiones
Valores
Llaves
Datos de
0 Lolo
"Pedro" hash("Pedro") 3
1 Vacío
"Lolo" hash("Lolo") 0
Datos de
2 Pepe
"Pepe" hash("Pepe") 2 Datos de
3 Pedro
"Antonio" hash("Antonio") 3
¡Colisión! Vacío
4
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 52
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Métodos para la resolución de colisiones
Métodos:
• encadenamiento o dispersión abierta
• por exploración o dispersión cerrada
- exploración lineal
- exploración cuadrática
- otras exploraciones
Su eficiencia depende del grado de ocupación de la tabla
• dispersión abierta: se puede funcionar bien con una ocupación
del 100% (pero no conviene que crezca mucho más)
• dispersión cerrada: conviene que nunca se supere el 75% de
ocupación
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 53
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Resolución de colisiones: dispersión abierta
Tabla Hash
0
1
2
3
4
5
6
7
8
9
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 54
5. Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Resolución de colisiones: dispersión abierta (cont.)
Cada elemento de la tabla hash es una lista enlazada
• Cada valor se guarda en la lista correspondiente a su código de
dispersión
Este método sólo es eficiente cuando la cantidad de colisiones es
pequeña, y las listas son cortas
• Para ello se necesita que la tabla tenga un tamaño mayor o igual
que el número de elementos a almacenar
• y que, además, la función hash sea muy homogénea
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 55
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Dispersión abierta: implementación de las
operaciones
• asignaValor: asigna una llave con un valor
- Calcula el código de dispersión de la llave
- Busca si ya hay un valor para esa llave en la lista
correspondiente
- Si le hay, sustituye el viejo valor por el nuevo
- Si no, añade el nuevo valor a la lista, por ejemplo al principio
(ya que es más eficiente en una lista enlazada simple)
• elimina: elimina el valor asociado a una llave
- Calcula el código de dispersión de la llave
- Busca si hay un valor para esa llave en la lista
correspondiente
- Si le hay, le elimina de la lista
- Si no le hay, informa de que no existe
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 56
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Dispersión abierta: implementación de las operaciones (cont.)
• obtenValor: obtiene el valor asociado a una llave
- Calcula el código de dispersión de la llave
- Busca si hay un valor para esa llave en la lista
correspondiente
- Si le hay, le retorna
- Si no, indica que no existe
• hazNulo: elimina todas las asociaciones
- Vacía (hace nulas) todas las listas de la tabla
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 57
6. Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Resolución de colisiones: dispersión cerrada
La tabla contiene directamente los valores asociados a las llaves
Si se detecta una colisión, se intenta calcular un nuevo código de
dispersión, hasta que se encuentra una posición vacía
hash i ( x ) = ( hash ( x ) + next ( i ) ) mod max
La tabla debe ser bastante mayor que el número de relaciones
• recomendado al menos el 50% de las celdas vacías
La función next(i) es la estrategia de exploración:
• lineal: next(i)=i
• cuadrática: next(i)=i2
• doble dispersión: next(i)=i*hashalt(x)
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 58
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Exploración lineal
hashi(X)=(hash(X) + i) mod max ocupado
hash(X) 3
libre
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
X
• Ocupación de la tabla: λ=celdasOcupadas/totalNumCeldas
• Número medio de intentos para encontrar celda libre=1/(1-λ)
- si están ocupadas la mitad de las celdas (λ=0.5) en promedio
se necesitan 2 intentos
- Si la ocupación es mayor, el número de intentos crece mucho
• Si la función hash no es homogénea la eficiencia empeora
• Tienden a formarse bloques de celdas ocupadas que degradan
la prestaciones
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 59
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Exploración cuadrática
hashi(X)=(hash(X) + i2) mod max ocupado
hash(X) 3 +22
libre
+12
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
X
• Evita en gran medida el agrupamiento de celdas ocupadas que
ocurría con la exploración lineal
• Es preciso que la ocupación siempre sea inferior a la mitad
• El tamaño de la tabla debe ser un número primo
Teorema: Dada una tabla de dispersión que utiliza exploración cuadrática, si su tamaño es un
número primo siempre podremos insertar un nuevo elemento en la tabla si su ocupación es es-
trictamente inferior a 0.5. Además, durante el proceso de inserción, no se visita la misma posi-
ción más de una vez
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 60
7. Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Exploración por doble dispersión
hash i ( x ) = ( hash ( x ) + i × hash alt ( x ) ) mod max
Permite eliminar la agrupación secundaria que se produce en
ocasiones con la exploración cuadrática
hashalt(x) nunca debe dar cero
- ej.: R-(x mod R), siendo R primo
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 61
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Borrado con dispersión cerrada
elimina(C) ocupado
hash(C) 3
libre
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
borrado
A B C D E F
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
A B D E F
Debe usarse la técnica del “borrado perezoso”:
• marcamos la celda como borrada (borrado≠libre)
• al buscar, si encontramos una celda marcada como borrada
continuamos la búsqueda
• al añadir, puede ocuparse una celda marcada como borrada
A veces será necesario “recrear” la tabla
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 62
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Dispersión cerrada: implementación de las
operaciones
• asignaValor: asigna una llave con un valor
- Calcula el código de dispersión de la llave
- Utilizando la estrategia de exploración busca una celda libre
o marcada como borrada
- Asigna el valor a la celda
• elimina: elimina el valor asociado a una llave
- Calcula el código de dispersión de la llave
- Utilizando la estrategia de exploración busca una celda con el
valor de la llave buscado
- si encuentra una celda marcada como borrada, continúa la búsqueda
- Si la encuentra, la marca como borrada
- Si encuentra una celda libre, informa de que no existe ningún
elemento con esa llave en la tabla
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 63
8. Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Dispersión cerrada: implementación de las operaciones (cont.)
• obtenValor: obtiene el valor asociado a una llave
- Calcula el código de dispersión de la llave
- Utilizando la estrategia de exploración busca una celda con el
valor de la llave buscado
- si encuentra una celda marcada como borrada, continúa la búsqueda
- Si la encuentra, retorna el valor
- Si encuentra una celda libre, informa de que no existe ningún
elemento con esa llave en la tabla
• hazNulo: elimina todas las asociaciones
- Marca como libres todas las celdas de la tabla
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 64
Tema 1. Técnicas de Implementación 3. Tablas de Dispersión
Eficiencia de las operaciones
Eficiencia temporal de las operaciones (tanto con dispersión
abierta como con dispersión cerrada):
Operación Array
asignaValor O(≈1)
elimina O(≈1)
obtenValor O(≈1)
hazNulo O(m) (1)
(1)
Donde m es el tamaño del array utilizado para implementar la tabla
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 2/11/11 65