Rodrigo Aguilera-Control 8

Hashing y Recursión dentro de Algoritmos Rodrigo Aguilera Tapia Análisis de Algoritmos Instituto IACC 29 de Diciembre 20

Views 60 Downloads 0 File size 422KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Hashing y Recursión dentro de Algoritmos Rodrigo Aguilera Tapia Análisis de Algoritmos Instituto IACC 29 de Diciembre 2018

Desarrollo PREGUNTAS:

1) Suponga que tiene un conjunto de animales, donde estos se distribuyen uniformemente entre animales acuáticos, animales terrestres y animales aéreos (con la misma cantidad de animales de cada tipo): a) ¿Cómo se clasificarían dentro de un hash? Hashing es una técnica de almacenamiento y de recuperación que utiliza una función para identificar un conjunto de datos, esta función puede ser definida en una serie de caracteres con una longitud fija. Para aplicar El hashing en este ejercicio propuesto lo definiremos con la cuarta letra de cada conjunto de animales, de esta forma nuestra tabla queda de la siguiente forma: Nombre Letra Posición Acuáticos a 1 Terrestres r 18 Aéreos e 5

Almacenamiento en un arreglo Posición 0 1 2 3 4 5 6 …. 18

b) ¿Usaría un hash simple o uno encadenado?

Nombre Acuáticos

Aéreos …. Terrestres

Se utilizaría la técnica de hashing encadenado, ya que para almacenar todos los conjuntos de datos relacionados necesitaremos más de un espacio el cual llamaremos listas enlazadas, esto debido a que no podemos tener dos valores dentro de un espacio, esta técnica nos permitirá resolver colisiones dentro de las tablas, están se producen cuando tenemos un mismo valor para dos datos diferentes, para aplicar el resto de los datos debemos encolarlos después del dato que ya existe, para aplicar esta técnica la definiremos aplicando los conjunto de animales mencionados al comienzo. Posición 0 1 2 3 4 5 6 …. 18

Nombre Acuáticos

Delfín

Tortuga

Aéreos

Colibrí

Loro

…. Terrestres

Elefante

León

c) ¿Cómo sería su función de hash? La función hash es un algoritmo matemático que transforma un bloque arbitrario de datos en una nueva serie de caracteres de longitud fija su valor de salida tendrá siempre la misma longitud, según la tabla mencionada seleccionamos de forma arbitraria el cuarto carácter h(x) d) ¿Cuánto demoraría una búsqueda en su estructura? Según el ejemplo desarrollado la búsqueda según la estructura desarrollada se demoraría en encontrar un elemento como el “León” que es O(1), por lo tanto h (León) = 18 y el tiempo en encontrar a León en la lista es de 3 (Terrestres, Elefante y León), esto quiere decir que el largo de la lista corresponde a la posición 18 es 3, lo que permite acortar los tiempo en comparación con todos los nombre en la tabla. Si el promedio de hash demora 0(1) y su búsqueda secuencial

es O (k), donde k es un número mucho menor a n, podemos decir que el tiempo de búsqueda de un elemento es O (1) + O (k) con k>n

2) Escriba en pseudocódigo el algoritmo de búsqueda binaria de forma recursiva. El seudocódigo definido a continuación permite buscar un elemento x en un vector v de tamaño N el cual ya se encuentra ordenado, esto permite entregar que cualquier subvector w de v tamaño también deberá estar ordenado. El tamaño de N se va reduciendo a la mitad por cada llamada recursiva 1. int BinarySearch(int x, int v[], int tam) { 2. 3.

int RecursiveBinarySearch(int x, int v[], int i, int m, int d) {

4.

if (i>d) return -1;

5.

else if ( x == v[m] ) return m;

6.

else if ( x < v[m] ) return RecursiveBinarySearch(x, v, i, (int)((i+m1)/2), (m-1));

7. 8.

else return RecursiveBinarySearch(x, v, (m+1), (int)((d+m+1)/2), d); }

9. 10.

int i = 0;

11.

int m = tam/2;

12.

int d = tam;

13. 14. 15. 16. }

return RecursiveBinarySearch(x, v, i, m, d);

Bibliografía Contenido de la semana 8 http://web.fi.uba.ar/~ssantisi/works/hash/hash.pdf https://foro.elhacker.net/programacion_cc/c_busqueda_binaria_recursiva-t374647.0.html https://www.fdi.ucm.es/profesor/gmendez/docs/edi0910/_02-Recursion.pdf http://artemisa.unicauca.edu.co/~nediaz/EDDI/cap02.htm http://interactivepython.org/runestone/static/pythoned/SortSearch/LaBusquedaBinaria.html