Tilbake
8.3

8.3 Øvingseksamen 2 — håndkjørings- og hashing-tungt sett

Komplett sett med tyngdepunkt på håndkjøring (sjanger E) og hashing/søk, men fortsatt full tredeling.

240 min
0 oppgaver
Øvingseksamen 2håndkjørings-hashing-tungt sett
Din fremgang i kapitlet
0 / 0 oppgaver

Forkunnskaper

OppgaveTemaKapittel
1hashing-, sorterings-, tre- og Huffman-faktakap. 1.4, kap. 3.2
2kjøretid fra kodekap. 1.2, kap. 1.3
3min-heap, Insert og RemoveMinkap. 4.4, kap. 4.5
4lineær probing med lik nøkkel og wraparoundkap. 3.1, kap. 3.3
5AVL-rotasjonerkap. 4.3
6Huffman-kodingkap. 6.4
7stabilitet, in-place og kjøretiderkap. 2.1, kap. 2.2, kap. 2.4
8korteste vei og kjøretid per grafalgoritmekap. 6.2, kap. 6.5
9hash-set som Del 2-verktøykap. 3.2, kap. 3.4
10binærsøk og modifikasjonen av detkap. 3.4
11søk med beskjæring i et binært søketrekap. 4.1, kap. 4.2
12komponenter og traverseringkap. 5.2, kap. 5.3
13drøft to strategierkap. 7.2, kap. 2.3

Strategien bak Del 2-svarene er drillet i kap. 8.1, og
kap. 8.2 er det brede settet du bør ha tatt først.

Oppvarming (2 poeng)

Oppgave 0. Svar med høyst fire setninger på hvert punkt.

a) Hva er en algoritme?
b) Hva er en datastruktur?

Del 1 — auto-rettet (35 poeng)

---

Oppgave 1 (10 poeng). Sant eller usant?

Antigjettings-skalering: blokken har 10 påstander, og poengsummen regnes som
2max(n5, 0)2 \cdot \max(n - 5,\ 0), der nn er antall riktige.

a) I en hashtabell med lukket hashing og lineær probing skal en nøkkel som allerede ligger i tabellen, overskrives i stedet for å settes inn en gang til.
b) Etter en rehashing til dobbelt så stor tabell kan de gamle indeksene gjenbrukes direkte.
c) Load-faktoren er antall lagrede elementer delt på tabellstørrelsen.
d) Et oppslag i en hashtabell er O(1)O(1) i verste tilfelle.
e) Tellesortering kan brukes på hvilke som helst elementer, så lenge de kan sammenlignes.
f) Radix-sortering krever at delsorteringen på hvert siffer er stabil.
g) Haugsortering er stabil.
h) Ethvert AVL-tre kan fargelegges slik at det oppfyller kravene til et rød-svart-tre.
i) En dobbeltrotasjon i et AVL-tre telles som to enkle rotasjoner.
j) I et Huffman-tre får aldri et hyppigere symbol en lengre kode enn et sjeldnere symbol.

I tillegg:

k) Du er sikker på seks av påstandene og gjetter på de fire siste. Hvor mange
poeng kan du forvente?

---

Oppgave 2 (4 poeng). Oppgi kjøretiden.

Svar med det strammeste OO-uttrykket. To poeng per delspørsmål.

a)

Procedure Q1(A)
  Input:  array A med n tall, indeks fra 0
  Output: en telling
  n = A.length
  c = 0
  for i = 0 to n-1:
      j = 1
      while j < n:
          j = j * 3
          c = c + 1
  return c

b)

Procedure Q2(A)
  Input:  array A med n tall, indeks fra 0
  Output: en telling
  n = A.length
  c = 0
  for i = 0 to n*n - 1:
      j = n
      while j > 1:
          j = j / 2
          c = c + 1
  return c

---

Oppgave 3 (4 poeng). Håndkjøring av min-heap.

Sett inn 23, 8, 41, 15, 6, 19 og 3 i denne rekkefølgen i en tom min-heap
(array, indeks fra 0).

a) Oppgi arrayet etter innsettingene.
b) Utfør RemoveMin to ganger. Oppgi arrayet etter hver av dem.

---

Oppgave 4 (3 poeng). Håndkjøring av lineær probing.

En hashtabell har N=11N = 11 plasser og h(k)=kmod11h(k) = k \bmod 11, med lineær probing.

Sett inn 34, 45, 23, 34, 10 og 21 i denne rekkefølgen.

a) Oppgi hele tabellen, med _ for tomme plasser.
b) Hvor mange nøkler ligger i tabellen til slutt?
c) Hvilken innsetting brukte wraparound?

---

Oppgave 5 (3 poeng). Håndkjøring av AVL-tre.

Sett inn 9, 18, 27, 36, 45 og 22 i denne rekkefølgen i et tomt AVL-tre.

a) Hvor mange enkle rotasjoner utføres totalt?
b) Hva er rotverdien til slutt?
c) Er resultatet et gyldig AVL-tre?

---

Oppgave 6 (3 poeng). Huffman-koding.

Seks symboler har frekvensene EE 21, TT 13, AA 8, RR 5, SS 3 og KK 2.

a) Oppgi kodelengden til hvert symbol.
b) Hvor mange bits trengs for å kode hele teksten?
c) Hvor mange bits ville en fastlengdekode med like mange bits per symbol
brukt på den samme teksten?

---

Oppgave 7 (4 poeng). Sorteringsegenskaper.

Fyll inn tabellen. Ett poeng per rad.

AlgoritmeStabil?På stedet?Verste kjøretid
innsettingssortering???
utvalgssortering???
flettesortering???
kvikksortering???

---
Oppgave 8 (4 poeng). Grafalgoritmer: valg og kjøretid.
a) For hver situasjon: hvilken algoritme finner korteste vei fra én kilde
raskest?
1. Et t-banenett der alle strekninger regnes som like lange.

2. Et veinett med kjøretider i minutter, alle positive.

3. En rettet asyklisk graf av arbeidsprosesser med varighet på hver kant.

b) Oppgi kjøretiden for hver av disse fire, med binær prioritetskø der det er
relevant:

1. dybde-først-søk over hele grafen
2. Kahns topologiske sortering
3. Prims algoritme

4. Bellman-Fords algoritme

Del 2 — pseudokode og resonnement (46 poeng)

Navngi problemet, oppgi antagelser om representasjon, gi algoritmen, og oppgi
kjøretiden med nn (eller V|V| og E|E|) definert. Pseudokode og klar tekst gir
like mye uttelling.

---

Oppgave 9 (10 poeng). En avisredaksjon vil finne det første ordet som
gjentas
i en artikkel — altså det ordet som først forekommer for andre gang
når du leser teksten fra begynnelsen. Teksten er gitt som et array T med nn
ord i den rekkefølgen de står.

a) Skriv algoritmen. Oppgi antagelser og kjøretid.
b) En kandidat foreslår å sortere ordene og se etter to like ved siden av
hverandre. Hvorfor løser ikke det oppgaven?
c) Sett opp poengtrappen for oppgaven.

---

Oppgave 10 (8 poeng). Et sortert array A inneholder nn måleverdier, og
samme verdi kan forekomme flere ganger. Du skal finne den laveste indeksen
der verdien xx står, eller melde at xx ikke finnes.

a) Skriv algoritmen, og si eksplisitt hva du har endret i forhold til
binærsøket slik det står i pensum.
b) Oppgi kjøretiden.
c) Kjør algoritmen for hånd på
A = 4, 4, 9, 12, 12, 12, 17, 21, 21, 30 med x=12x = 12. Vis lav, hoy og
midt for hvert steg.

---

Oppgave 11 (10 poeng). Et lagersystem lagrer varenumre i et binært søketre.
Når en kunde spør etter et varenummer som ikke finnes, skal systemet foreslå det
nærmeste varenummeret i treet — altså det tallet med minst absolutt
differanse fra det etterspurte.

a) Skriv algoritmen. Oppgi antagelser og kjøretid.
b) En kandidat foreslår å traversere hele treet og holde det beste tallet
underveis. Hva er kjøretiden for det, og hvor mye mindre uttelling gir det?
c) Treet er bygget ved å sette inn 55, 28, 74, 13, 39, 66, 88, 21, 33 og 47.
Hvilke noder besøker algoritmen din når kunden spør etter 42, og hva foreslår
den?

---

Oppgave 12 (10 poeng). Et driftsmiljø har tretten servere. Nettverkskablene
mellom dem er gitt som en urettet graf:

A: B, C
B: A, C
C: A, B
D: E, G
E: D, F
F: E, G
G: D, F
H: I
I: H
J: K, L
K: J, L
L: J, K, M
M: L

Driftsavdelingen vil vite hvor stor den største sammenhengende gruppen av
servere er, altså hvor mange servere som henger sammen i den største klyngen.

a) Skriv algoritmen. Oppgi antagelser og kjøretid.
b) En kandidat foreslår å kjøre et bredde-først-søk fra hver server og se
hvilken som når flest. Hva er kjøretiden for det?
c) Kjør algoritmen på grafen over. Hvor mange grupper finnes, og hvor stor
er den største?

---

Oppgave 13 (8 poeng). To ord er anagram hvis det ene kan skrives om til
det andre ved å stokke om bokstavene. Ordene består av små bokstaver fra a til
z.

Sammenlign to strategier for å avgjøre om to ord av lengde nn er anagram:

a) sortér begge ordene og sammenlign dem tegn for tegn
b) tell forekomsten av hver bokstav i begge ordene og sammenlign tellingene

Drøft kjøretid (verste og forventet) og minne, og konkludér om når hver
strategi lønner seg. Definér nn.

Løsningsforslag — Oppvarming (2 poeng)
Løsningsforslag — Oppgave 1: sant/usant (10 poeng)
Løsningsforslag — Oppgave 2: kjøretid fra kode (4 poeng)
Løsningsforslag — Oppgave 3: min-heap (4 poeng)
Løsningsforslag — Oppgave 4: lineær probing (3 poeng)
Løsningsforslag — Oppgave 5: AVL-rotasjoner (3 poeng)
Løsningsforslag — Oppgave 6: Huffman (3 poeng)
Løsningsforslag — Oppgave 7: sorteringsegenskaper (4 poeng)
Løsningsforslag — Oppgave 8: grafalgoritmer (4 poeng)
Løsningsforslag — Oppgave 9: første gjentatte ord (10 poeng)
Løsningsforslag — Oppgave 10: første forekomst med binærsøk (8 poeng)
Løsningsforslag — Oppgave 11: nærmeste varenummer (10 poeng)
Løsningsforslag — Oppgave 12: største servergruppe (10 poeng)
Løsningsforslag — Oppgave 13: anagram, to strategier (8 poeng)
Én midtnivåbesvarelse, ærlig merket — hva skiller den fra full pott?

Poengoversikt og selvdiagnose

DelOppgavePoeng
Oppvarming02
Del 11 sant/usant (skalert)10
Del 12 kjøretid fra kode4
Del 13 min-heap4
Del 14 lineær probing3
Del 15 AVL-rotasjoner3
Del 16 Huffman3
Del 17 sorteringsegenskaper4
Del 18 grafalgoritmer4
Del 29 første gjentatte ord10
Del 210 første forekomst med binærsøk8
Del 211 nærmeste varenummer10
Del 212 største servergruppe10
Del 213 anagram8
Sum83

Merk at Del 1 er tyngre her enn i kap. 8.2: 35 poeng mot
28, og fire av dem er håndkjøringer. Det er bevisst. Håndkjøringene er de
poengene som er helt i din kontroll — de krever ingen idé, bare at du gjør
det samme som strukturen gjør, uten å ta snarveier.
---

Selvdiagnose


☐ Oppga du hele hashtabellen i oppgave 4, med _ for de tomme plassene?
☐ Ble den andre 34-en overskrevet i stedet for lagt til på nytt?
☐ Sank elementet i RemoveMin mot det minste barnet — og sjekket du at
barnet finnes før du sammenlignet?
☐ Telte du dobbeltrotasjonen som to enkle rotasjoner i oppgave 5?
☐ Oppga du kodelengder og ikke kodeord i oppgave 6?
☐ Svarte du «verste» der det sto verste, og ikke «forventet», i oppgave 7?
☐ Skrev du eksplisitt hva du hadde endret i binærsøket i oppgave 10?
☐ Brukte du søketre-egenskapen til å hoppe over et subtre i oppgave 11, eller
traverserte du hele treet?

☐ Oppga du kjøretid på alle fem Del 2-oppgavene, og matcher hver av dem
koden du faktisk skrev?
☐ Sto forbeholdet «forventet» der du skrev O(1)O(1) eller O(n)O(n) om hashing?
☐ Definerte du både nn og KK i oppgave 13, og konkluderte du betinget?

Neste steg: kap. 8.4 er det grafmodellerings-tunge

topp-settet. Ta det på en egen kveld.

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.

Skolesaga er en uavhengig læringsressurs og er ikke tilknyttet eller godkjent av Universitetet i Oslo. Dette er ikke offisielt studiemateriell. Les mer.