Tilbake
8.2

8.2 Øvingseksamen 1 — bredt ordinært sett (epoke 3)

Komplett firetimers hjelpemiddelfritt sett etter tredelingsmalen (oppvarming + Del 1 sant/usant + Del 2 pseudokode) som speiler et typisk epoke-3-sett.

240 min
0 oppgaver
Øvingseksamen 1bredt ordinært sett (epoke 3)
Din fremgang i kapitlet
0 / 0 oppgaver

Forkunnskaper

Settet dekker hele boka. Er du usikker på et område mens du retter, går du hit:

OppgaveTemaKapittel
1kjøretids-, sorterings-, heap- og graf-faktakap. 1.4, kap. 2.4
2kjøretid fra kode ved løkketellingkap. 1.2, kap. 1.3
3håndkjøring av min-heap, indeks fra 0kap. 4.4, kap. 4.5
4lineær probingkap. 3.1, kap. 3.3
5korteste-avstander-matrisenkap. 6.2, kap. 6.5
6grafegenskaper og representasjonkap. 5.1
7tre-algoritmer i pseudokodekap. 4.1, kap. 4.2
8hashing og søk i pseudokodekap. 3.2, kap. 3.4
9traversering, komponenter og syklerkap. 5.2, kap. 5.3
10topologisk sorteringkap. 6.1
11sterkt sammenhengende komponenterkap. 5.4
12drøft to strategierkap. 7.2

Strategien bak svarene — «velg lavest mulig kjøretid, og skriv svaret i fire
ledd» — er drillet i kap. 8.1.

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 (28 poeng)

Del 1 rettes maskinelt. Svarene er sant/usant, korte uttrykk, tabeller og
avkryssinger. Ingen begrunnelse kreves — men skriv gjerne én for deg selv, slik
at du kan sjekke om du kunne det eller gjettet.

---

Oppgave 1 (12 poeng). Sant eller usant?

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

a) Flettesortering er O(nlogn)O(n \log n) også i verste tilfelle.
b) Kvikksortering er O(nlogn)O(n \log n) i verste tilfelle.
c) Et vilkårlig array med nn elementer kan gjøres om til en heap i O(n)O(n).
d) Du kan finne det største elementet i en min-heap med nn elementer i O(logn)O(\log n).
e) Innsettingssortering er stabil.
f) Utvalgssortering garanterer færrest mulige bytter av alle de tre kvadratiske sorteringene.
g) Bredde-først-søk finner korteste vei målt i antall kanter i en uvektet graf.
h) Et dybde-først-søk startet i én node er O(V+E)O(|V| + |E|).
i) Dijkstras algoritme kan brukes på grafer med negative kantvekter, så lenge det ikke finnes en negativ sykel.
j) Komponentgrafen til en rettet graf er alltid asyklisk.
k) PNPP \subseteq NP.
l) Det er bevist at PNPP \neq NP.

I tillegg, som en del av samme oppgave:

m) Du kan tolv av påstandene sikkert og treffer ni riktige. Hvor mange poeng
gir blokken? Og hvor mange riktige må du minst ha for å få ett eneste poeng?

---

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

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

a)

Procedure P1(A)
  Input:  array A med n tall, indeks fra 0
  Output: en telling
  n = A.length
  c = 0
  for i = 0 to n-1:
      for j = 0 to n-1:
          for k = 0 to 49:
              c = c + 1
  return c

b)

Procedure P2(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 = n
      while j > 1:
          j = j / 2
          c = c + 1
  for i = 0 to n-1:
      for j = 0 to n-1:
          c = c + 1
  return c

c)

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

---

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

Sett inn 31, 17, 26, 9, 40, 12 og 5 i denne rekkefølgen i en tom min-heap som
ligger i et array med indeks fra 0.

a) Oppgi arrayet etter innsettingene.
b) Utfør deretter RemoveMin én gang, og oppgi arrayet etterpå.

---

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

En hashtabell har N=13N = 13 plasser og hashfunksjonen h(k)=kmod13h(k) = k \bmod 13.
Kollisjoner løses med lineær probing.

Sett inn 25, 38, 12, 7, 20 og 51 i denne rekkefølgen, og oppgi hele tabellen.
Bruk _ for tomme plasser.

---

Oppgave 5 (4 poeng). Korteste vei fra én kilde.

For hver graftype: oppgi den raskeste korrekte algoritmen og dens kjøretid.

Grafen er …AlgoritmeKjøretid
a) uvektet??
b) vektet og asyklisk??
c) vektet, alle vekter positive??
d) vektet med noen negative kanter, men ingen negativ sykel??

---
Oppgave 6 (2 poeng). Grafegenskaper.
Tre urettede grafer er gitt som nabolister.
Graf 1
A: B
B: A, C, E
C: B, D
D: C
E: B, F
F: E

Graf 2

P: Q, R
Q: P, R
R: P, Q, S
S: R, T
T: S

Graf 3

X: Y
Y: X
Z: W
W: Z

Kryss av for hver graf: er den sammenhengende? inneholder den en sykel?

er den et tre?

Del 2 — pseudokode og resonnement (52 poeng)

Her skal du konstruere algoritmen og skrive den ned. Pseudokode og klar
forklaring i naturlig språk gir like mye uttelling; kravet er at svaret er
entydig og presist nok til at algoritmen kan implementeres direkte fra det.

For hver oppgave: navngi problemet, oppgi antagelsene dine om representasjon,
gi algoritmen, og oppgi kjøretiden — med nn (eller V|V| og E|E|) definert.

---

Oppgave 7 (8 poeng). Et biblioteksystem lagrer utlånsnumre i et binært
søketre. Systemet skal finne det nest største utlånsnummeret i treet.

a) Skriv en algoritme som finner det nest største tallet. Oppgi antagelser
og kjøretid.
b) En kandidat foreslår å skrive ut treet i sortert rekkefølge og ta det
nest siste tallet. Hva er kjøretiden for det, og hvorfor gir din løsning mer
uttelling?
c) Treet er bygget ved å sette inn 46, 22, 71, 15, 34, 58, 84 og 63 i denne
rekkefølgen. Hva svarer algoritmen din?

---

Oppgave 8 (8 poeng). En billettkontroll har logget nn billettnumre i et
usortert array. Et nummer regnes som misbrukt hvis det forekommer mer enn
to ganger
.

Skriv en algoritme som avgjør om minst ett nummer er misbrukt. Oppgi antagelser
og kjøretid, og forklar hvorfor kjøretiden er lavest mulig.

---

Oppgave 9 (8 poeng). En urettet graf beskriver et rørnett mellom
pumpestasjoner.

a) Skriv en algoritme som avgjør om nettet er et tre. Oppgi antagelser og
kjøretid.
b) Hvorfor er det ikke nok å telle kantene?

---

Oppgave 10 (10 poeng). Et monteringsverksted har ni arbeidstrinn.
Avhengighetene er gitt som en rettet graf, der en kant fra XX til YY betyr at
XX må være ferdig før YY kan begynne:

A: C, D
B: D
C: E, I
D: E, F
E: G
F: G
G: H
H: (ingen)
I: H

Hvert trinn tar nøyaktig én dag, og ubegrenset mange trinn kan gjøres samtidig
så lenge avhengighetene er oppfylt.

a) Skriv en algoritme som finner hvor mange dager hele monteringen minst
tar. Oppgi antagelser og kjøretid.
b) En kandidat foreslår å kjøre et dybde-først-søk fra hver node og ta den
lengste stien som finnes. Hva er kjøretiden for det?
c) Kjør din algoritme for hånd på grafen over, og oppgi svaret.

---

Oppgave 11 (10 poeng). Et intranett har ni sider. En kant fra XX til YY
betyr at side XX lenker til side YY; lenkene er enveis:

A: B
B: C
C: A, D
D: E
E: D, F
F: G
G: F
H: A, I
I: D, H

Redaksjonen vil vite om det finnes minst én side som kan nås fra alle de
andre
, slik at den kan brukes som felles bunnpunkt.

a) Skriv en algoritme som avgjør dette, og som oppgir sidene hvis de finnes.
Oppgi antagelser og kjøretid.
b) Begrunn hvorfor kriteriet du bruker, er riktig.
c) Kjør algoritmen på grafen over og oppgi svaret.

---

Oppgave 12 (8 poeng). Et medlemsregister med nn medlemmer skal støtte to
operasjoner:

- Finnes(id) — er dette medlemsnummeret registrert?
- SortertListe() — skriv ut alle medlemsnumrene i stigende rekkefølge.

Sammenlign to strategier på kjøretid (verste og forventet) og minne, og
konkludér om når hver av dem lønner seg:

a) et hashmap fra medlemsnummer til medlemsdata
b) et balansert binært søketre (AVL) ordnet på medlemsnummer

Definér nn.

Løsningsforslag — Oppvarming (2 poeng)
Løsningsforslag — Oppgave 1: sant/usant (12 poeng)
Løsningsforslag — Oppgave 2: kjøretid fra kode (6 poeng)
Løsningsforslag — Oppgave 3: min-heap (2 poeng)
Løsningsforslag — Oppgave 4: lineær probing (2 poeng)
Løsningsforslag — Oppgave 5: korteste-vei-matrisen (4 poeng)
Løsningsforslag — Oppgave 6: grafegenskaper (2 poeng)
Løsningsforslag — Oppgave 7: nest største i et søketre (8 poeng)
Løsningsforslag — Oppgave 8: misbrukte billettnumre (8 poeng)
Løsningsforslag — Oppgave 9: er nettet et tre? (8 poeng)
Løsningsforslag — Oppgave 10: monteringsplanen (10 poeng)
Løsningsforslag — Oppgave 11: et felles bunnpunkt (10 poeng)
Løsningsforslag — Oppgave 12: hashmap mot AVL-tre (8 poeng)
Én midtnivåbesvarelse, ærlig merket — hva skiller den fra full pott?

Poengoversikt og selvdiagnose

DelOppgavePoeng
Oppvarming02
Del 11 sant/usant (skalert)12
Del 12 kjøretid fra kode6
Del 13 min-heap2
Del 14 lineær probing2
Del 15 korteste-vei-matrisen4
Del 16 grafegenskaper2
Del 27 nest største i søketre8
Del 28 misbrukte billettnumre8
Del 29 er nettet et tre?8
Del 210 monteringsplanen10
Del 211 felles bunnpunkt10
Del 212 hashmap mot AVL8
Sum82

Slik leser du din egen poengsum. Karaktergrensene settes for hvert sett og er
ikke faste, men et grovt bilde: rundt 40 prosent er vanligvis nok til å bestå,
rundt 60 prosent ligger i midtsjiktet, og over 80 prosent er toppsjikt. Legg
merke til hvor poengene dine kom fra. Full Del 1 uten Del 2 rekker sjelden mer
enn til bestått; det er de seks siste oppgavene som flytter karakteren.
---

Selvdiagnose


Kryss av. Hvert punkt som ikke er avkrysset, peker på et kapittel.
☐ Svarte du på alle punktene i sant/usant-blokken, også dem du var usikker
på? (Blankt og feil teller likt — det koster ingenting å svare.)
☐ Regnet du ut terskelen i skaleringen, eller gjettet du på hvor mange du
trengte?
☐ Oppga du hele hashtabellen i oppgave 4, med _ for de tomme plassene?
☐ Sank elementet i RemoveMin mot det minste barnet, og sjekket du at
barnet finnes før du sammenlignet?

☐ Oppga du kjøretid på hver Del 2-oppgave?
☐ Matcher hver kjøretid den algoritmen du faktisk skrev — ikke den du hadde
tenkt å skrive?
☐ Definerte du hva nn (eller V|V| og E|E|) er, hver gang du brukte det?
☐ Skrev du ned antagelsene dine om representasjon, minst én linje per oppgave?

☐ Stilte du spørsmålet «kan dette gjøres raskere?» på alle de seks

Del 2-oppgavene, eller leverte du den første løsningen du kom på?

☐ Meldte algoritmen din fra om sykel i oppgave 10, i stedet for å levere et tall

uansett?
☐ Er det noen oppgave du lot stå helt blank? (Den naive løsningen er alltid

verdt poeng.)
Neste steg: kap. 8.3 er et håndkjørings- og

hashing-tungt sett, og kap. 8.4 er et grafmodellerings-tungt

topp-sett. Ta dem på hver sin kveld, ikke etter hverandre.

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.