logo
Sett 9
Algoritmer og datastrukturer
IT, Høgskolen i Østfold
AlgDat 12 > Oppgaver > Sett 9

Oppgavesett 9 - Hashing / Dronninger

Oppgavene blir tema på øvingen fredag 30. mars. Innleveringen skal bestå av en pdf-fil med korte kommentarer og dokumentasjon (utskrifter etc.). Legg også ved godt dokumenterte java filer. Alt pakkes i en zipfil, med navn assignment09-*.zip der * er etternavnene til gruppemedlemmene. Javafilene skal tilhøre en pakke med navn package assignment09.

Fristen for innlevering er tirsdag 27.mars 09:00.

Oppgave 1

Anta at vi har en hashtabell på 8 elementer. Vi bruker enkel, lineær prøving ved kollisjoner. Elementene som skal settes inn har en tekststreng som nøkkel. Hashfunksjonen som skal brukes er A(s) % n, der A(s) er summen av ascii-verdiene til de enkelte tegnene i strengen s, og n er 8.

Sett inn følgende nøkler: 1) ANNE, 2) PER, 3) NINA, 4) ANNI, 5) ALI, 6) KAREN, 7) OLA, og 8) SIV. Tegn opp tabellen etter hver innsetting.

Oppgave 2: N-Queens

Her skal du ta utgangspunkt i Queens.java fra forelesningen.

A

Implementer metoden boolean print(int[] perm), som skriver ut et sjakkbrett til System.out med plassering av dronningene representert ved perm. Dokumenter at den virker.

B

Implementer metoden boolean legal(int[] perm), som sjekker om dette er lovlig plassering av dronningene (dvs. at ingen av dronningene står på samme diagonal. Beskriv metoden, og dokumenter at den virker.

C

Implementer ferdig koden slik at den finner alle lovlig plasseringer for en gitt størrelse på brettet. Dokumenter at den virker.

D

Bruk koden til å lage et plott som viser antallet lovlige løsninger for økende brettstørrelser.

*E

Man kan effektivisere koden ved å ikke generere alle mulige permutasjoner. Dette gjøres ved å avskjære genereringen av en permutasjon hvis den på et punkt gir en ulovlig løsning. Beskriv denne teknikken nærmere, og implementer den. Bruk den til å lage et plott der y-aksen viser antall rekursive kall, og der x-aksen viser størrelsene på brettene.

Gunnar Misund, 13.jun.2012