Till KTH:s startsida Till KTH:s startsida

Visa version

Version skapad av Linda Kann 2015-09-28 22:56

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

Laboration 5 del 2

Läsning

Läs i kapitel 4 i kursboken om Hashing.

1. Hashning med Pythons inbyggda dictionary

Minns du hur du i labb 2 gjorde en enklel kö med Pythons lista? Nu ska du göra en egen hashtabell med Pythons 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?

Vill du kunna skriva d[nyckel] istället för d.search[nyckel]? Definiera då metoden __getitem__()

2. En egen implementation av hashtabellen

Nu ska du även göra hashningen själv, i din nya klass Hashtabell. Krav:

  • Noderna måste innehålla både nyckel och värde
  • Hashtabellen ska vara lagom stor
  • Du måste skriva en egen hashfunktion, som ger en bra fördelning över tabellen
  • Någon krockhantering måste ingå, t ex krocklistor eller probning
  • Du ska använda KeyError för att tala om att en nyckel inte finns

Testkörning 1

Prova med datafilen från förra labben.

Testkörning 2

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

Redovisning

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

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.