Você está na página 1de 7

Búsqueda de Datos

Estructura de Datos

Instituto IACC

10 de Noviembre 2013
Desarrollo

1. Defina con sus propias palabras, qué se entiende por “colisiones” en el tratamiento de los

datos mediante Tablas Hash y explique cuáles son las medidas que podemos utilizar para

tratarlas.

Se entiende por colisiones cuando dos o más elementos diferentes se asignan a un mismo índice,

es decir cuando el algoritmo empieza a buscar un cierto parámetro o valor entonces el índice está

conformado por. Ver Figura N°1

Figura N°1

INDICE.

1 2 3 4
ARREGLO

1 2 3 4

Entonces como un breve ejemplo en el índice existe una colisión cuando se le asigna a dos o más

elementos a la misma posición del índice. Ver Figura N°2

Figura N°2

INDICE.

1 2 3 4
ARREGLO

1 2 3 4

Que sucede con esto en simples palabras retarda la búsqueda, ya que no se puede determinar la

posición exacta del dato. ¿Cómo podemos dar una solución a las colisiones?; podemos dar una

solución con tres posibilidades existentes en el tratamiento de las colisiones.


La primera de ella, se puede aplicar cuando se encuentra ocupado el índice

correspondiente a un elemento determinado, es decir se procederá a asignar el primer índice libre

a partir de esta posición un ejemplo seria. Ver figura N°3

Figura N°3

INDICE.

1 2 3 4 5 6
ARREGLO

1 2 3 4

Como el índice 4 está ocupado se le asignara la primera posición libre en este caso sería en modo

ascendente y podríamos decir que es la 5ta del índice la que se encuentra en color verde. Ver

Figura N°4

Figura N°4

5 6

Aunque este método es poco eficaz, ya que pudiese que al nuevo elemento se le podría asignar

un índice que estuviera ocupado por un elemento anterior y así conformando una nueva colisión

y retardando la búsqueda, ya que no se podría encontrar la posición exacta de los elementos

buscados.

Ahora veremos el segundo en el cual podemos reservar una cantidad determinada de espacios

libres al final del arreglo para colocar las colisiones allí pero solamente cuando se produzcan

durante el proceso de búsqueda, pero tenemos que pensar lo siguiente ¿Cuántos espacios

tenemos que reservar para dejar las nuevas colisiones que se generen?, esto queda en evidencia

si aún conocemos N o la cantidad de elementos que se generaran en el arreglo. Pero esto puede

aumentar la lentitud o el tiempo de respuesta en la búsqueda.


Y el ultimo que revisaremos es probablemente lo más efectivo es crear un arreglo de los punteros,

en vez de hacer un arreglo con números, cada uno de estos punteros señalará de esta manera un

inicio de una lista cualquiera enlazada. Con esta modalidad cada elemento se enlaza con un

determinado índice y este se coloca el último lugar del el índice mencionado. Al aplicar este

tratamiento puede reducir el tiempo de búsqueda considerablemente, obviamente no se aplica

considerar las restricciones del tamaño del arreglo (N), ya que se pueden añadir nodos en una

forma dinámica al final de la lista.

Ahora el tratamiento que le podemos dar a las tablas hash en las cuales el comportamiento puede

ser en forma de restas sucesivas, aritmética modular, mitad del cuadrado, truncamiento y

plegamiento.

Ahora si analizamos brevemente una a una seria de la siguiente manera:

Restas sucesivas:

En esta función se emplean claves numéricas en las que pueden existir espacios libres y por

tamaño conocido, realizando así direcciones consecutivas.

Aritmética Modular:

Este es un caso particular en donde el índice de un número dentro del arreglo. En este caso

particular el índice de un número es el resto de la división entre un factor X que se prefija con un

número primo y el número propio.

Mitad del Cuadrado:

Esta función consiste en elevar al cuadrado cualquier clave y tomar como índice las cifras

centrales del producto, pero esta manera es la mayormente presenta problemas de colisión.

Truncamiento: Este consiste en desestimar una parte del número que se usa como índice a todos

los elementos restantes.


Plegamiento:

Simplemente este método consiste en dividir un número en diferentes partes y realizar

operaciones entre ellas generalmente suma o multiplicaciones.

2. Defina con sus propias palabras los siguientes términos e indique brevemente cómo

trabajan sus algoritmos básicos. Indique para cada uno de ellos de qué orden es el tiempo

de ejecución esperado de dichos algoritmos:

a. Búsqueda Secuencial:

Este método consiste en recorrer en una forma completa un arreglo, el cual procede a examinar

cada uno de los elementos hasta encontrar el que está buscando, o en otro caso hasta que sea

examinado todos los elementos que contenga el arreglo.

Se representa de la siguiente manera para el caso que sea optimizado para buscar algún elemento

dentro del arreglo

For (i=a=0; array[i]==elementobuscado; i++)

En el caso que necesitemos de conocer solamente el primer registro se utiliza de esta manera

For (i=0; i<N; i++)

If (array[i] == elementobuscado)

Break;
b. Búsqueda Binaria:

El requisito fundamental de este algoritmo tiene como petición que todo el arreglo haya sido

ordenando previamente.

Este tipo de algoritmo divide el arreglo, en varios sus arreglos menores para así poder comparar

el mismo elemento buscado. Si existiera una coincidencia la búsqueda finaliza ahí, pero en el

caso contrario el elemento buscado se seguirá buscando.

La forma que tiene para dividir es separar en dos dejando un elemento central para realizar la

comparación. Seria

{1, 2, 3,4} -5- {6, 7, 8, 9, 10}

Ejemplo tomado de contenido de la semana N°2, IACC 2013

Cuando busca el número por dar un ejemplo el 6 verifica que el numero encontrado sea mayor

que el numero central en caso de encontrar el arreglo termina.


Bibliografía

IACC 2013

Contenido de la semana N°2