Till KTH:s startsida Till KTH:s startsida

Visa version

Version skapad av Linda Kann 2015-09-23 23:17

Visa < föregående | nästa >
Jämför < föregående | nästa >

Laboration 5 del 2 (under arbete)

Läsning

Läs i kapitel 4 i kursboken om Hashing.

1. Hashning med Pythons inbyggda dictionary

Skriv en klass DictHash som använder dictionary. Den ska ha metoderna

  • store(nyckel, data)
  • x = search(nyckel)

Prova din dictionary med datafilen från förra labben. Tar det lika lång tid att köra? (se https://docs.python.org/3/reference/datamodel.html#emulating-container-types för att byta ut "search" mot [])

2. En egen implementation av hashtabellen

Nu ska du göra en egen hashtabell! Skriv klassen Hashtabell där du använder en Python-lista för att implementera en egen hashtabell. Krav:

  • Noderna mÃ¥ste innehÃ¥lla bÃ¥de nyckel och värde
  • Hashtabellen ska vara lagom stor
  • NÃ¥gon krockhantering mÃ¥ste ingÃ¥, t ex krocklistor eller probning
  • AnvändKeyError för att tala om att en nyckel inte finns
  • Skriv en egen hashfunktion

Testkörning 1

Prova med datafilen från förra labben.

Testkörning 2

Programmet hashtest.py innehåller data om alla atomer (namn och atomvikt). Lista ut vad det gör och hur det anropar hashtabellen. Modifiera det sedan för att kontrollera om din hashtabell fungerar.

Redovisning

Labben lämnas in på kurswebbsidan (se Inlämningsuppgifter i vänstermenyn) och redovisas muntligt av bägge gruppmedlemmarna.

Vid redovisningen ska du kunna

  • motivera ditt val av hashfunktion, krockhantering och tabellstorlek,
  • skissa hashtabellen,
  • förklara varför hashning ger snabb sökning

Betyg

Denna labb kan endast ge betyg E. Du måste lämna in den och redovisa den i tid för att få göra labbarna för högre betyg i period 2.