Академический Документы
Профессиональный Документы
Культура Документы
Análisis de Algoritmos
Instituto IACC
15 – 03 - 2018
DESARROLLO
PREGUNTAS:
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):
1.-
Posición Nombre
1 terrestres Perro Guepardo
2 acuáticos Tilapia Tiburón
3 Aéreos Águila Aguilucho
B) En este caso, y según las condiciones planteadas, se usaría un hash encadenado, dado que este
corresponde a una de las técnicas existentes para la solución de las colisiones dentro de las tablas de
hash. Estas colisiones se producen cuando la función de hash retorna el mismo valor para dos datos
distintos. Cuando esto pasa y se está utilizando un hash encadenado, el nuevo elemento se encola
después del elemento que ya existe en la posición del hash.
Esta técnica, si bien es cierto que aumenta la complejidad en la búsqueda de elementos, incluso
esa complejidad sigue siendo menor que almacenar todos los elementos en una lista enlazada: si
demore O(n), para que un hash encadenado demore lo mismo, la función de hash debiera
retornar siempre el mismo índice, lo cual violaría la regla de las funciones de hash que dice que
C) El hashing consta de una función de hash, llamada h(x), que puede ser definida de forma
arbitraria, pero debe utilizarse la misma para la construcción de todo el hash. Para el problema
señalado se tomará la segunda letra del nombre y se pondrá en la posición que le corresponde
del alfabeto.
Posición Nombre
0
1
2
3
4
5 Perro Guepardo
6
7 Águila Aguilucho
8
9 Tilapia Tiburón
D)Un caso promedio de hash encadenado siempre es el cálculo de la función de hash para
ubicarse en la lista correcta, que demora O(1) más el caso que el elemento buscado sea el último
de la lista para ese espacio del hash. Como es búsqueda secuencial, esto demoraría O(k), donde
Para el ejemplo anterior, esto se traduce en que el tiempo en encontrar el elemento “Tiburón”
El largo de la lista que corresponde a la posición 9 es 2, lo que es mucho menor que el conjunto
es:
2.-
El pseudocódigo sería;
int BinarySearch(int x, int v[], int tam) {
int RecursiveBinarySearch(int x, int v[], int i, int m,
int d) {
if (i>d) return 1;
else if ( x == v[m] ) return m;
else if ( x < v[m] ) return RecursiveBinarySearch(x, v,
i, (int)((i+m1)/2), (m1));
else return RecursiveBinarySearch(x, v, (m+1), (int)
((d+m+1)/2), d);
}
int i = 0;
int m = tam/2;
int d = tam;
return RecursiveBinarySearch(x, v, i, m, d);
REFERENCIAS BIBLIOGRÁFICAS