2
PIMO - Grupo 1 Hashing y Grafos 26 de abril de 2016 - Prof: Rodrigo L´ opez Suponga que, como resultado de las pruebas de la funci´ on de hashing del ejercicio de la semana anterior, se concluye que para una lista espec´ ıfica de 49 ciudades se van a utilizar el hash code y compress, con los par´ ametros (N, a, b, p) = (37, 67, 59, 73) Es decir, la tabla ser´ a de tama˜ no 37 y los factores empleados en la funci´ on compress son 67, 59 y 73. Ahora, dado un archivo de datos (como se describe m´ as adelante) hay que hacer lo siguiente: Almacenar la informaci´ on de cada ciudad en una tabla de hashing que se acceder´ a a partir de las coordenadas de la ciudad. Las colisiones se manejar´ an con la estrategia de Encadenamiento Separado. Es decir, cada bucket de la tabla contiene una lista de ciudades a las que les corresponde el mismo valor de hashing. Utilizar la misma tabla de hashing para a˜ nadir a cada ciudad la informaci´ on de las ciudades con las que est´ a directamente conectada. Es decir, la tabla de hashing se podr´ a utilizar como la represen- taci´ on de un grafo mediante lista de adyacencias. En el archivo de datos hay un rengl´ on por cada ciudad, con formato siguiente: Inicia con los datos de la ciudad, como en el laboratorio anterior; es decir, nombre, latitud,longitud,poblaci´ on y religi´ on, separados por coma. A continuaci´ on, si la ciudad tiene conexiones directas aparecen dos puntos seguidos de una o m´ as parejas de la forma (latitud-longitud), correspondientes a las coorde- nadas de las ciudades con las cuales est´ a directamente conectada. Un trozo de este archivo puede ser: Tad-Dwieli,35|53/04@N,14|28/35@E,6314,Budistas Zen Tad-Duluri,35|53/16@N,14|29/26@E,5296,Evangelicos Tad-Dawl,35|51/03@N,14|28/20@E,3246,Testigos de Jeova: (35|53/04@N-14|28/35@E) Tac-Cawla,35|51/25@N,14|29/22@E,3647,Budistas: (35|53/16@N-14|29/26@E) Ta’ Xbiex,35|53/57@N,14|29/40@E,4585,Bahas: (35|51/25@N-14|29/22@E) Ta’ Sardina,36|02/45@N,14|17/04@E,1941,Bahas: (35|51/25@N-14|29/22@E) (35|51/03@N-14|28/20@E) (35|53/16@N-14|29/26@E) Todas las conexiones son bidireccionales pero en el archivo solamente aparece una direcci´ on, por lo que en la representaci´ on en la tabla de adyacencias hay que completar la direcci´ on faltante. Finalmente, su programa debe incluir la funci´ on def path(coord1,coord2): en la que coord1 y coord2 son tuplas de la forma (latitud,longitud), con el formato de latitud y longitud utilizado en este ejercicio. Una invocaci´ on t´ ıpica ser´ ıa path((’35|53/57@N’,’14|29/40@E’),(’35|51/03@N’,’14|28/20@E’)}. Como resultado de path(coord1,coord2): 1

Labo Hash Parte2

Embed Size (px)

DESCRIPTION

hashtable

Citation preview

Page 1: Labo Hash Parte2

PIMO - Grupo 1Hashing y Grafos

26 de abril de 2016 - Prof: Rodrigo Lopez

Suponga que, como resultado de las pruebas de la funcion de hashing del ejercicio de la semana anterior,se concluye que para una lista especıfica de 49 ciudades se van a utilizar el hash code y compress, conlos parametros

(N, a, b, p) = (37, 67, 59, 73)

Es decir, la tabla sera de tamano 37 y los factores empleados en la funcion compress son 67, 59 y 73.

Ahora, dado un archivo de datos (como se describe mas adelante) hay que hacer lo siguiente:

Almacenar la informacion de cada ciudad en una tabla de hashing que se accedera a partir de lascoordenadas de la ciudad.

� Las colisiones se manejaran con la estrategia de Encadenamiento Separado. Es decir, cadabucket de la tabla contiene una lista de ciudades a las que les corresponde el mismo valor dehashing.

Utilizar la misma tabla de hashing para anadir a cada ciudad la informacion de las ciudades con lasque esta directamente conectada. Es decir, la tabla de hashing se podra utilizar como la represen-tacion de un grafo mediante lista de adyacencias.

En el archivo de datos hay un renglon por cada ciudad, con formato siguiente:

Inicia con los datos de la ciudad, como en el laboratorio anterior; es decir, nombre, latitud,longitud,poblaciony religion, separados por coma. A continuacion, si la ciudad tiene conexiones directas aparecen dospuntos seguidos de una o mas parejas de la forma (latitud-longitud), correspondientes a las coorde-nadas de las ciudades con las cuales esta directamente conectada.

Un trozo de este archivo puede ser:

Tad-Dwieli,35|53/04@N,14|28/35@E,6314,Budistas Zen

Tad-Duluri,35|53/16@N,14|29/26@E,5296,Evangelicos

Tad-Dawl,35|51/03@N,14|28/20@E,3246,Testigos de Jeova: (35|53/04@N-14|28/35@E)

Tac-Cawla,35|51/25@N,14|29/22@E,3647,Budistas: (35|53/16@N-14|29/26@E)

Ta’ Xbiex,35|53/57@N,14|29/40@E,4585,Bahas: (35|51/25@N-14|29/22@E)

Ta’ Sardina,36|02/45@N,14|17/04@E,1941,Bahas: (35|51/25@N-14|29/22@E) (35|51/03@N-14|28/20@E) (35|53/16@N-14|29/26@E) (35|53/04@N-14|28/35@E)

Todas las conexiones son bidireccionales pero en el archivo solamente aparece una direccion, por lo queen la representacion en la tabla de adyacencias hay que completar la direccion faltante.

Finalmente, su programa debe incluir la funcion

def path(coord1,coord2):

en la que coord1 y coord2 son tuplas de la forma (latitud,longitud), con el formato de latitud y longitudutilizado en este ejercicio. Una invocacion tıpica serıa

path((’35|53/57@N’,’14|29/40@E’),(’35|51/03@N’,’14|28/20@E’)}.

Como resultado de path(coord1,coord2):

1

Page 2: Labo Hash Parte2

Si hay un camino entre coord1 y coord2, este se imprime como la sucesion de nombres de lasciudades separados por coma.

Si no hay una ciudad en coord1 se imprime: "No hay ciudad en coord1" (sin las dobles comillas).

Si no hay camino, se imprime el mensaje "No hay camino" (sin las dobles comillas).

Para calcular el camino se debe utilizar el algoritmo de busqueda por amplitud en el grafo, a partir decoord1.

Condiciones de entrega

Esta tarea se puede desarrollar por grupos de hasta 2 personas y tendra sustentacion.

2