ejercicio 2 /python José A. Mañas 24.2.2017
ejercicio 2 tablas hash programar, probar y medir con listas externas de desbordamiento programar, probar y medir dibujar mejora de tiempos o con hoja de cálculo o con correlator ADSW
patrón como módulo dictionary = None def init(nslots): global dictionary dictionary = dict() def clear(): … def size(): return … def put(key, val): global dictionary … def get(key): return … def remove(key): ADSW
patrón como clase class MyHash: dictionary = None def __init__(self, nslots): … def clear(self): def size(self): return … def put(self, key, val): … def get(self, key): return … def remove(self, key): ADSW
TestDiccionario import unittest probar los métodos from ej2.HashListas import * class DictTest(unittest.TestCase): def test_00(self): mhd = HashListas(5) self.assertEqual(0, mhd.size()) self.assertIsNone(mhd.get('key')) self.assertIsNone(mhd.remove('key')) probar los métodos put() get() remove() size() para casos normales N > 1 casos singulares 0, 1 datos aleatorios ADSW
ejemplo slots List<CV> : { “Lisa Smith”, V } List<CV> : { “John Smith”, V }, { “Sandra Dee”, V } List<CV> : { “Ted Baker”, V } List<CV> : { “Sam Doe”, V } ADSW
tareas implementar la tabla hash poner a punto usando pruebas medir operaciones entregar ADSW
mediciones creamos una tabla con NS slots cargamos ND datos ¿cuánto cuesta leer datos en función de NS? casos de prueba ND = 5.000 NS = 500, 1.000, 1.500, 2.000, 2.500, ..., 20.000 ADSW
entrega package es.upm.dit.adsw.ej2 Gráficas (en PDF) HashListas.java TestDiccionario.java Gráficas (en PDF) ver ejemplos a continuación ADSW
ejemplos ejemplo siguen algunos ejemplos de resultados obtenidos por los profesores úselos a modo de guía de qué tiene que hacer con SUS datos y de lo que tiene que presentar como memoria del ejercicio ADSW
hash + listas ejemplo eje X: NS; eje Y: ops ADSW
NS < ND ejemplo ND = 5000 n = NS ADSW
NS < ND ejemplo ND = 5000 n = NS ADSW
NS > ND ejemplo eje X: NS; eje Y: ops ADSW