0% encontró este documento útil (0 votos)
421 vistas7 páginas

Metodos de Busqueda

El documento describe diferentes métodos de búsqueda de información, incluyendo búsqueda secuencial, binaria y por funciones hash. La búsqueda secuencial examina elementos de forma consecutiva hasta encontrar el objetivo o llegar al final, mientras que la búsqueda binaria reduce la lista a examinar a la mitad en cada paso para una búsqueda más eficiente en listas ordenadas. La búsqueda por funciones hash asigna elementos a índices mediante una función para permitir búsquedas rápidas sin ordenar los elementos.

Cargado por

Angel HT
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
421 vistas7 páginas

Metodos de Busqueda

El documento describe diferentes métodos de búsqueda de información, incluyendo búsqueda secuencial, binaria y por funciones hash. La búsqueda secuencial examina elementos de forma consecutiva hasta encontrar el objetivo o llegar al final, mientras que la búsqueda binaria reduce la lista a examinar a la mitad en cada paso para una búsqueda más eficiente en listas ordenadas. La búsqueda por funciones hash asigna elementos a índices mediante una función para permitir búsquedas rápidas sin ordenar los elementos.

Cargado por

Angel HT
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

METODOS DE BUSQUEDA

La recuperación de información es una de las aplicaciones más importantes de las


computadoras. La búsqueda de información está relacionada con las tablas para
consultas. Estas tablas contienen una cantidad de información que se almacenan en
forma de listas de parejas de datos. Por ejemplo un catálogo con una lista de libros de
matemáticas, en donde es necesario buscar con frecuencia elementos en una lista.

La búsqueda es la operación más importante en el procesamiento de información, ya que


permite recuperar datos previamente almacenados. El resultado de una búsqueda puede
ser un éxito, si se encuentra la información o un fracaso, si no la encuentra.

La búsqueda se puede aplicar sobre elementos previamente ordenados o sobre


elementos desordenados, en el primer caso la búsqueda es más fácil, en cambio en el
segundo se dificulta un poco más el proceso, sobre todo cuando de se trata de encontrar
una cantidad de elementos similares.

Los métodos de búsqueda se clasifican en:

Métodos de búsqueda interna

Se denomina búsqueda interna cuando todos los elementos se encuentran en la memoria


principal. Por ejemplo, almacenados en estructuras estáticas (arreglos) o en estructuras
dinámicas (listas ligadas y arboles). El propósito principal de un ordenamiento es el de
facilitar las búsquedas de los miembros del conjunto ordenado.

Métodos de búsqueda externa

Se denomina búsqueda externa cuando todos los elementos se encuentran en memoria


secundaria (archivos almacenados en dispositivos tales como cintas y discos
magnéticos). La búsqueda externa es aquella en la que todos los elementos se
encuentran almacenados en un archivo, el cual se encuentra en un dispositivo de
almacenamiento secundario como un disco duro, una cinta o una memoria USB.

Para que se utilizan los métodos de búsqueda

El propósito principal de un ordenamiento es el de facilitar las búsquedas de los miembros


del conjunto ordenado. Son aquellos en los que los valores a ordenar están en memoria
secundaria (disco, cinta, cilindro magnético, etc.), por lo que se asume que el tiempo que
se requiere para acceder a cualquier elemento depende de la última posición accedida
(posición 1, posición 500, etc.).

6.1 BÚSQUEDA SECUENCIAL


Este tipo de búsqueda consiste en examinar, a partir del primer elemento y de uno en
uno, hasta encontrar el dato buscado o bien llegar al final de la lista que puede estar
almacenada en archivo o arreglo. En este tipo de listas los elementos pueden o no estar
ordenados, ya que se empieza a comparar de uno en uno los elementos de la lista y no
importa su orden o lugar de ubicación para realizar la búsqueda, salvo para el tiempo de
ejecución.

Si el elemento que se está buscando, se encuentra al inicio de la lista, este tiempo, sería
muy corto, pero si se encuentra al final, va a tardar más y si el elemento que se desea
buscar, no se encuentra en la lista, se hizo necesario, recorrer toda la lista, para darse
cuenta que no está en ella. Y si se le aumenta a esto, que el número de elementos en la
lista puede ser del orden de cientos o miles, va a hacer mucho más tardado su ejecución.
Esta búsqueda tiene la ventaja de tener una fácil programación de su algoritmo.

Si el elemento que se está buscando, se encuentra al inicio de la lista, este tiempo, sería
muy corto, pero si se encuentra al final, va a tardar más y si el elemento que se desea
buscar, no se encuentra en la lista, se hizo necesario, recorrer toda la lista, para darse
cuenta que no está en ella. Y si se le aumenta a esto, que el número de elementos en la
lista puede ser del orden de cientos o miles, va a hacer mucho más tardado su ejecución.
Esta búsqueda tiene la ventaja de tener una fácil programación de su algoritmo.

Características

La búsqueda se puede realizar en arreglos desordenados.

El método es totalmente confiable.

El número de comparaciones es significativa si el arreglo es muy grande.

En arreglos desordenados de N componentes puede suceder que el elemento no se


encuentre, por lo tanto se harán N comparaciones al recorrer todo el arreglo

Cantidad mínima de comparaciones es 1.

Cantidad media de comparaciones es (1+N)/2.

Cantidad máxima de comparaciones es N.

Ventajas

Es un método sumamente simple que resulta útil cuando se tiene un conjunto de datos
pequeños (Hasta aproximadamente 500 elementos) Es fácil adaptar la búsqueda
secuencial para que utilice una lista enlazada ordenada, lo que hace la búsqueda más
eficaz. Si los datos buscados no están en orden es el único método que puede emplearse
para hacer dichas búsquedas.

Desventajas

Este método tiende hacer muy lento. Si los valores de la clave no son únicos, para
encontrar todos los elementos con una clave particular, se requiere buscar en todo el
arreglo, lo que hace el proceso muy largo.
6.2 BÚSQUEDA BINARIA
La búsqueda binaria utiliza un método de `divide y vencerás' para localizar el valor
deseado. Con este método se examina primero el elemento central de la lista; si éste es el
elemento buscado, entonces la búsqueda ha terminado.

En caso contrario, se determinar si el elemento buscado será en la primera o la segunda


mitad de la lista y a continuación se repite este proceso, utilizando el elemento central de
esa sub-lista.

La búsqueda binaria es el método, donde si el arreglo o vector está bien ordenado, se


reduce sucesivamente la operación eliminando repetidas veces la mitad de la lista
restante. El proceso comienza comparando el elemento central del arreglo con el
elemento buscado. Si ambos coinciden finaliza la búsqueda. Si no ocurre así, el elemento
buscado será mayor o menor en sentido estricto que el elemento central del arreglo. Si el
elemento buscado es mayor se procede a hacer búsqueda binaria en el sub arreglo
superior, si el elemento buscado es menor que el contenido de la casilla central, se debe
cambiar el segmento a considerar al segmento que está a la izquierda de tal sitio central.

Este método se puede aplicar tanto a datos en listas lineales como en árboles binarios de
búsqueda. Los pre – requisitos para la búsqueda binaria son:

La lista debe estar ordenada, en un orden especifico de acuerdo al valor de la clave.


Debe conocerse el número de elementos.

Si el conjunto de elementos es grande, el tiempo de búsqueda se puede reducir utilizando


el siguiente algoritmo de tipo divide y vencerás:
Se divide el elemento en dos partes.

Se determina la parte que debe contener la clave buscada.

Se repite el proceso en esa parte.

Una forma razonable de dividir el conjunto de elementos es mantener los elementos


ordenados y después utilizar los índices del arreglo ordenado para determinar la parte del
arreglo sobre la que se va a trabajar.

Características

Sirve únicamente para arreglos ordenados.

Es más eficiente que el método de búsqueda secuencial, debido a que el número de


comparaciones se reduce a la mitad por cada iteración del método.

Cantidad mínima de comparaciones es 1.

Cantidad media de comparaciones es (1+log₂(N))/2.

Cantidad máxima de comparaciones es log₂(N).

Ventajas

Se puede aplicar tanto a datos en listas lineales como en árboles binarios de búsqueda.

Es el método más eficiente para encontrar elementos en un arreglo ordenado.

Desventajas

Este método funciona solamente con arreglos ordenados, por lo cual si nos encontramos
con arreglos que no están en orden, este método, no nos ayudaría en nada.
6.3 BÚSQUEDA POR FUNCIONES DE HASH
Es un método de búsqueda que aumenta la velocidad de búsqueda, pero que no requiere
que los elementos estén ordenados. Consiste en asignar a cada elemento un índice
mediante una transformación del elemento. Esta correspondencia se realiza mediante una
función de conversión, llamada función hash. La correspondencia más sencilla es la
identidad, esto es, al número 0 se le asigna el índice 0, al elemento 1 el índice 1, y así
sucesivamente. Pero si los números a almacenar son demasiado grandes esta función es
inservible.

Por ejemplo, se quiere guardar en un array la información de los 1000 usuarios de una
empresa, y se elige el número de DNI como elemento identificativo. Es inviable hacer un
array de 100.000.000 elementos, sobre todo porque se desaprovecha demasiado espacio.
Por eso, se realiza una transformación al número de DNI para que nos dé un número
menor, por ejemplo coger las 3 últimas cifras para guardar a los empleados en un array
de 1000 elementos. Para buscar a uno de ellos, bastaría con realizar la transformación a
su DNI y ver si está o no en el array.

La función de hash ideal debería ser biyectiva, esto es, que a cada elemento le
corresponda un índice, y que a cada índice le corresponda un elemento, pero no siempre
es fácil encontrar esa función, e incluso a veces es inútil, ya que puedes no saber el
número de elementos a almacenar.

La función de hash depende de cada problema y de cada finalidad, y se pueden utilizar


con números o cadenas, pero las más utilizadas son:

Restas sucesivas: esta función se emplea con claves numéricas entre las que existen
huecos de tamaño conocido, obteniéndose direcciones consecutivas.

Aritmética modular: el índice de un número es resto de la división de ese número entre un


número N prefijado, preferentemente primo. Los números se guardarán en las
direcciones de memoria de 0 a N-1. Este método tiene el problema de que cuando hay
N+1 elementos, al menos un índice es señalado por dos elementos (teorema del
palomar). A este fenómeno se le llama colisión, y es tratado más adelante.

Mitad del cuadrado: consiste en elevar al cuadrado la clave y coger las cifras centrales.

Truncamiento: consiste en ignorar parte del número y utilizar los elementos restantes
como índice. También se produce colisión.

Plegamiento: consiste en dividir el número en diferentes partes, y operar con ellas


(normalmente con suma o multiplicación). También se produce colisión.

Ventajas

Una tabla hash tiene como principal ventaja que el acceso a los datos suele ser muy
rápido si se cumplen las siguientes condiciones:
Una razón de ocupación no muy elevada (a partir del 75% de ocupación se producen
demasiadas colisiones y la tabla se vuelve ineficiente).

Una función resumen que distribuya uniformemente las claves. Si la función está mal
diseñada, se producirán muchas colisiones.

Desventajas

Necesidad de ampliar el espacio de la tabla si el volumen de datos almacenados crece.

Se trata de una operación costosa.

Dificultad para recorrer todos los elementos. Se suelen emplear listas para procesar la
totalidad de los elementos.

Desaprovechamiento de la memoria. Si se reserva espacio para todos los posibles


elementos, se consume más memoria de la necesaria; se suele resolver reservando
espacio únicamente para punteros a los elementos.
BLIBLIOGRAFIAS
Alcalde Lancharro, E., & García López, M. I. G. U. E. L. (1992). Metodología de la
programación.

Deitel. P.J. (2008). Como programar en java. Séptima edición. ISBN: 978-970-26-
1190-5. Pearson Educación.

Joyanes. L. (2008). Estructura de datos. Madrid, España: Mc Graw Hill.

También podría gustarte