Este documento describe diferentes métodos de búsqueda y ordenamiento de datos, incluyendo la búsqueda lineal, búsqueda binaria, aritmética modular, función truncamiento y función plegamiento. Explica que la búsqueda binaria es más efectiva para datos ordenados, mientras que la búsqueda lineal es el único método para datos desordenados. Concluye que es importante seleccionar el método de búsqueda más adecuado dependiendo del tipo de datos.
1. SEDE CONCEPCIÓN TALCAHUANO
Métodos de Búsqueda
y Ordenamiento
Asignatura:
Análisis de Algoritmo
Integrantes:
Cristopher Blum
Gonzalo Medina
Edison Sáez Echeverría
Joel Salgado Medina
Docente:
Pilar Pardo H
Fecha:
15/04/2014
3. 3
Introducción
Un algoritmo de búsqueda es aquel que está diseñado para localizar un elemento con ciertas
propiedades dentro de una estructura de datos, por ejemplo, ubicar el registro correspondiente a
cierta persona en una base de datos, o el mejor movimiento en una partida de ajedrez.
A continuación se explican algunos métodos de búsqueda y ordenamiento de claves en arreglos.
4. 4
Aritmética Modular
Cuando dividimos dos enteros tenemos una ecuación que se ve de la siguiente forma:
A / B = Q con residuo R
A es el dividendo
B es el divisor
Q es el cociente
R es el residuo
Algunas veces, solo estamos interesados en el valor del residuo de la división de A entre B.
Para estos casos existe un operador llamado operador modular (abreviado como mod).
Usando las mismas A, B, Q y R anteriores, tendríamos A mod B = R
Diremos esto como "A módulo B es congruente con R". Donde a B se le llama módulo.
Por ejemplo, sabemos que: 13/5 = 2 con un residuo de 3
o
13 mod 5 = 3
Visualiza el módulo con relojes
Observa lo que pasa cuando incrementamos números de uno en uno y luego los dividimos entre 3.
0/3=0 residuo 0
1/3=0 residuo 1
2/3=0 residuo 2
3/3=1 residuo 0
4/3=1 residuo 1
5/3=1 residuo 2
6/3=2 residuo 0
El residuo comienza en 0 e incrementa en 1 cada vez, hasta que el número alcanza uno menos el
número entre el cual estamos dividiendo.
Después de eso, la secuencia se repite.
Al notar esto, podemos visualizar el operador módulo usando círculos.
Escribimos 0 en la parte superior de un círculo y continuamos escribiendo números enteros en la
dirección de las manecillas del reloj, 1, 2,... hasta uno menos que el módulo.
5. 5
Por ejemplo, un reloj con el 12 sustituido por un 0 sería el círculo para un módulo de 12.
Para encontrar el resultado de A mod B =? podemos seguir estos pasos:
1. Construir este reloj de tamaño B
2. Comenzar en 0 y movernos alrededor del reloj en A pasos
3. Dondequiera que aterricemos es nuestra solución.
(Si el número es positivo, damos el paso en sentido de las manecillas del reloj, si es
negativo damos el paso en contra de las manecillas del reloj)
Mitad del cuadrado: consiste en elevar al cuadrado la clave y coger las cifras centrales. Este
método también presenta problemas de colisión:
123*123=15129 --> 51
136*136=18496 --> 84
730*730=532900 --> 29
301*301=90601 --> 06
625*625=390625 --> 06
6. 6
Función Truncamiento
Consiste en tomar algunos dígitos de la clave y formar con ellos una dirección. Este método es de
los más sencillos, pero es también de los que ofrecen menos uniformidad en la distribución de las
claves.
La elección de los dígitos es arbitraria. Podrían tomarse los dígitos de las posiciones impares o de
las pares. Luego podría unírseles de izquierda a derecha o de derecha a izquierda. La suma de
una unidad a los dígitos seleccionados es para obtener un valor entre 1 y 100.
Por ejemplo, si un número de 7 cifras se debe ordenar en un arreglo de elementos,
Se pueden tomar el segundo, el cuarto y el sexto para formar un nuevo número:
5700931 »> 703
3498610 »> 481
0056241 »> 064
9134720 »> 142
5174829 »> 142
• Ignora parte de la clave y se utiliza la parte restante directamente como índice
(considerando campos no numéricos y sus códigos numéricos).
• Si las claves, por ejemplo; son enteros de ocho dígitos y la tabla de transformación tiene
mil posiciones, entonces el primero, segundo y quinto dígitos desde la derecha pueden
formar la función de conversión. Ejemplo: 72588495 se convierte en 895. El truncamiento
es un método muy rápido, pero falla para distribuir las claves de modo uniforme.
Función Plegamiento
Consiste en dividir la clave (dígito) en partes iguales. Las operaciones entre los dígitos (partes)
puede ser por medio de suma, resta o multiplicación.
Clave (K) Plegamiento (suma) Dirección
197452 19 | 74 | 52 145
280304 28 | 03 | 04 35
484001 48 | 40 | 01 89
7. 7
Tipos de Busqueda
Búsqueda lineal
Consiste en recorrer y examinar cada uno de los elementos del arreglo hasta encontrar el o los
elementos buscados, o hasta que se han mirado todos los elementos.
Este es el método de búsqueda más lento, pero si nuestra información se encuentra
completamente desordenada es el único que nos podrá ayudar a encontrar el dato que buscamos.
MEJOR CASO: El algoritmo de búsqueda lineal termina tan pronto como encuentra el
elemento buscado en el array. Si tenemos suerte, puede ser que la primera posición
examinada contenga el elemento que buscamos, en cuyo caso el algoritmo informará que
tuvo éxito después de una sola comparación. Por tanto, la complejidad en este caso será O
(1).
PEOR CASO: Sucede cuando encontramos X en la última posición del array. Como se
requieren n ejecuciones del bucle mientras, la cantidad de tiempo es proporcional a la
longitud del array n, más un cierto tiempo para realizar las instrucciones del bucle mientras
y para la llamada al método. Por lo tanto, la cantidad de tiempo es de la forma an + b
(instrucciones del mientras * tamaño del arreglo + llamada al método) para ciertas
constantes a y b, que representan el coste del bucle mientras y el costo de llamar el
método respectivamente.
CASO MEDIO: Supongamos que cada elemento almacenado en el array es igualmente
probable de ser buscado. La media puede calcularse tomando el tiempo total de encontrar
todos los elementos y dividiéndolo por n:
Ejemplo:
8. 8
Búsqueda Binaria
Consiste en reducir paulatinamente el ámbito de búsqueda a la mitad de los elementos, basándose
en comparar el elemento a buscar con el elemento que se encuentra en la mitad del intervalo y en
base a esta comparación de los diferentes casos que pueden darse:
Si el elemento buscado es menor que el elemento medio, entonces sabemos que el
elemento está en la mitad inferior de la tabla.
Si es mayor es porque el elemento está en la mitad superior.
Si es igual se finaliza con éxito la búsqueda ya que se ha encontrado el elemento.
Este método puede utilizarse en vectores, matrices y árboles.
Ejemplo (código):
9. 9
Conclusión
Como métodos de búsqueda y ordenamiento hay varios, lo importante a la hora de
utilizarlos es saber cuál es el más conveniente, por ejemplo, en arreglo de datos ordenados es más
efectivo utilizar una búsqueda binaria para encontrar un dato que hacerlo de forma lineal.
Es importante saber con qué tipo de arreglo se está trabajando para realizar la búsqueda
más eficiente y rápida.