Informe algoritmos de busqueda

12
Algoritmos de Búsquedas Búsqueda Lineal Concepción-Talcahuano Ingeniería en Informática Análisis de Algoritmos Nombre Alumno (s): Joaquín Contreras. G onzalo Retamal. Nombre Profesor: Pilar Pardo. Fecha: 16/04/2014

Transcript of Informe algoritmos de busqueda

Page 1: Informe algoritmos de busqueda

Algoritmos de BúsquedasBúsqueda Lineal

Concepción-TalcahuanoIngeniería en InformáticaAnálisis de Algoritmos

Nombre Alumno (s): Joaquín

Contreras.

Gonzalo

Retamal.

Nombre Profesor: Pilar Pardo.

Fecha: 16/04/2014

Page 2: Informe algoritmos de busqueda

INDICE

Indice.....................................................................................................2

1. Introducción.....................................................................................3

2. ALGORITMOS DE BÚSQUEDA......................................................4

2.1 Búsqueda lineal..........................................................................4

2.2 Búsqueda binaria.......................................................................6

2.3 Búsqueda mediante transformación de claves (Hashing)..........8

2.3.1 Truncamiento........................................................................8

2.3.2 Plegamiento..........................................................................8

2.3.3 Aritmética modular................................................................9

2.3.4 Mitad cuadrado.....................................................................9

3. conclusión......................................................................................10

Page 3: Informe algoritmos de busqueda

1. INTRODUCCIÓN

En el siguiente informe se describirán lo tipos de búsqueda de algoritmo lineal, binaria y método hash.La búsqueda lineal consiste en ser la más simple de todas, debido a que trabaja con vectores desordenados buscando desde el primer elemento hasta el último elemento del vector completo. Siendo eficaz en vectores pequeños y búsquedas concisas (un elemento concreto).La búsqueda binaria trabaja en segmentos de manera que divide el vector y compara el valor a buscar con el lado que lo tenga, en caso de identificar el dato en ese lado, va descartando el segmento que no necesita y así sucesivamente.Los métodos hash consisten en transformar claves numéricas y/o alfanuméricas en direcciones o índices de un vector lo que permite aumentar la búsqueda sin necesidad de tener los datos ordenados previamente. Existiendo 4 métodos que son truncamiento, plegamiento, aritmética modular y mitad del cuadrado.

Página 3

Page 4: Informe algoritmos de busqueda

2. ALGORITMOS DE BÚSQUEDA

2.1 Búsqueda lineal

Esta búsqueda es la más sencilla, busca los elementos del array desde el primer elemento hasta el último sin necesidad de que se encuentren ordenados. Cuando se realiza la búsqueda de manera exitosa se emite un mensaje como “Elemento encontrado” y entrega el índice de la posición del elemento. Para el caso contrario se entrega un mensaje como “Elemento no existente”.Esta búsqueda no requiere ningún requisito por parte del vector, es decir, no necesita que el vector este ordenado o que sea par o impar, siempre se realizara la búsqueda de la misma manera.El único pero de esta búsqueda es que si el array es demasiado grande tomara demasiado tiempo en recorrerla para realizar las búsquedas.

Mejor Caso:

El mejor caso para una búsqueda lineal es cuando nuestro elemento buscado se encuentra al comienzo del array con lo que el tiempo y memoria usados serán las mínimas y se obtendrá un resultado rápido.

Ejemplo:

0 1 2 3 4 5 68 7 17 81 12 99 35

Se busca el elemento “8”

Recorrido de búsqueda:

1.- índice 0 = 8, elemento encontrado, fin de la búsqueda.

Página 4

Page 5: Informe algoritmos de busqueda

Peor Caso:

Este caso de búsqueda es cuando el elemento buscado se encuentra en la última posición del array o que no exista, por tanto se utiliza más tiempo y memoria para su ejecución.Ejemplo:

0 1 …. 8 …. 4040 12 …. 83 …. 77

Se busca elemento “77”

Recorrido de búsqueda:

1. Índice 0 ≠ 772. Índice 1 ≠ 773. …4. Índice 8 ≠ 775. …6. Índice 40 = 77, Elemento existe, fin de la búsqueda en el índice 40.

Caso Promedio:

Esto ocurre cuando el elemento a buscar esta en el medio de la array.

Ejemplo:

0 1 2 3 4 5 633 21 12 19 73 61 15

Se busca elemento “19”

Recorrido de Busqueda:

1.- Indice 0 ≠ 192.- Indice 1 ≠ 193.- Indice 2 ≠ 194.- Indice 3 = 19, termina la búsqueda en la mitad de la raid.

Página 5

Page 6: Informe algoritmos de busqueda

2.2 Búsqueda binaria

La mejor forma de definir esta búsqueda es con el concepto “Divide y Vencerás”, ya que la búsqueda binaria se utiliza en arrays unidimensionales los cuales se van dividiendo en partes iguales.Esta búsqueda a diferencia de la linear necesita que los datos estén ordenados.ProcedimientoSe ubica en la posición central del vector, se compara el valor de la posición y si es el valor buscado la búsqueda termina ahí; caso contrario se preguntara si el elemento a buscar es mayor o menor, si es mayor el elemento se seguirá buscando en la segunda mitad del vector, si es menor se buscara en la primera mitad. La mitad del vector que no se utilizara es eliminada.El proceso se repite hasta que el elemento a buscar es encontrado.Ejemplo:Buscar un el elemento “10” dentro de una lista ordenada

2 4 7 10 12 22 23 30 33 41

Realización del procedimiento de dividir el arreglo en mitad y comprar.

Paso 12 4 7 10 12 22 23 30 33 41

Paso 22 4 7 10 12

Paso 37 10 12

Paso 4 10 12

El algoritmo concluye al encontrar el dato buscado (“10”) en el primer elemento de la lista; en este caso quedando 2 resultados 10 y 12, donde 10 es el primer elemento de la lista.Mejor Caso:Se requiere solo una comparación para encontrar el elemento; el tiempo de ejecución óptimo no depende de la cantidad de datos que se tenga.El esfuerzo mínimo es 1.Caso promedio:

Página 6

Page 7: Informe algoritmos de busqueda

Nuestro caso promedio es 1/2 log2n.Peor Caso:Se realiza la búsqueda binaria progresivamente, disminuye el número de elementos sobre el que se va realizando la búsqueda. Tas log2n divisiones se habrá localizado el elemento o se tendrá la seguridad de que no existe.El esfuerzo máximo es log2n.

Página 7

Page 8: Informe algoritmos de busqueda

2.3 Búsqueda mediante transformación de claves (Hashing)

Consiste en transformar claves numéricas y/o alfanuméricas en direcciones o índices de un vector lo que permite aumentar la búsqueda sin necesidad de tener los datos ordenados previamente.Existen 4 métodos de transformación de claves:

- Truncamiento- Plegamiento- Aritmética Modular- Mitad del cuadrado

2.3.1 Truncamiento

Ignora parte de la clave y se utiliza la parte restante directamente como índice.

Ejemplo: Claves de 8 dígitos (números enteros) y la tabla de transformación posee mil posiciones, para el índice se considera el primer, segundo y quinto dígito formando así la función.

Clave: 89512327 → h(clave) = 892

2.3.2 Plegamiento

Esta técnica se basa en dividir la clave en diferentes partes y la combinación de las partes en un modo conveniente para obtener el índice.La clave se divide en varias partes n1, n2, n3,….n∞, donde cada parte tiene el mismo número de dígitos que la dirección especificada (con la única posibilidad de excepción de la última parte).H(x)= n1 + n2 + n3 +…+ x∞Ejemplo.El número de identificación de los empleados es el campo clave de una empresa y consta de cuatro dígitos y las direcciones reales son 100. Se desea calcular las direcciones correspondientes por el método de plegamiento.Claves: 2250, 1935, 3144

Página 8

Page 9: Informe algoritmos de busqueda

H(2250) = 22 + 50 = 72H(1935) = 19 + 35 = 54H(3144) = 31 + 44 = 7

2.3.3 Aritmética modular

Este método convierte la clave a un entero, se divide por el tamaño del rango del índice y toma el resto como resultado. La función que se utiliza es el MOD (módulo o resto de la división entera).

H(x)= x MOD m

Se tiene la clave=234661234 MOD 101 = 56

234661234 MOD 101 = 56

2.3.4 Mitad cuadrado

Este método calcula el cuadrado de la clave que se posee (x).

La función de conversión se define como: H(x)=c

Donde c se obtiene eliminando dígitos a ambos lados de x²

Ejemplo:

En una empresa hay 80 empleados, cada uno tiene un número de identificación de 4 dígitos y las direcciones de memoria van de 0 a 100.

x → 5120

x² → 26214400;  Por lo tanto H(x) = 14

Página 9

Page 10: Informe algoritmos de busqueda

3. CONCLUSIÓN

Este método de búsqueda sirve para los array (vectores) pequeños ya que en los array de mayor tamaño el consumo de recursos se intensifica y el tiempo se va alargando mucho más si el elemento a buscar está en la última posición (peor caso). Recomendable para los sistemas pequeños (empotrados) o redes locales pequeñas.

Página 10