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.
Dette er et komplett øvingssett bygget etter den malen IN2010 har fulgt
siden 2021. Det er nyskrevet for denne boka: ingen oppgavetekst er hentet fra et
reelt sett.
Formen du trener på: én digital skoleeksamen i Inspera, som er UiOs
digitale eksamenssystem, på fire timer, med ingen hjelpemidler.
Karakterskalaen er A til F, og eksamen teller 100 prosent. Alt skrives inn i
Inspera — også pseudokoden. Det finnes ingen mulighet for å laste opp
håndskrevne ark.
Settet har 82 poeng og tre deler:
| Del | Innhold | Poeng | Anbefalt tid |
|---|---|---|---|
| Oppvarming | to korte definisjonsspørsmål | 2 | 5 min |
| Del 1 | auto-rettede sant/usant, kode til O, håndkjøring, matrise | 28 | 70 min |
| Del 2 | seks pseudokode- og resonnementsoppgaver | 52 | 145 min |
Legg merke til at de anbefalte tidene summerer til 5 + 70 + 145 = 220 minutter, ikke 240.
De tjue som er til overs, er bevisst buffer: å lese gjennom hele settet før
du begynner, å komme tilbake til en oppgave du hoppet over, og å lese gjennom
svarene til slutt. Bruker du dem opp på den første oppgaven som setter seg fast,
har du ingen igjen til den siste.
Del 2 avgjør karakteren. Del 1 er poeng du enten har eller ikke har når du
går inn i lokalet; Del 2 er der du kan flytte deg mens du sitter der. Fordel
tiden deretter, og la aldri en Del 2-oppgave stå blank fordi du ikke fant den
raskeste løsningen — den trege gir også poeng.
Antigjettings-skaleringen på sant/usant-blokken står oppgitt i oppgave 1, og
du skal regne den ut selv i deloppgave b). Kort repetert: blankt og feil
teller likt, så det koster ingenting å svare — men skaleringen er satt slik at
ren gjetting i snitt gir null, så bare påstander du kan sikkert blir til
poeng. På de vanlige korte svarene (et uttrykk, et tall, en tabell) er det ingen
skalering: der svarer du alltid.
Slik bør du bruke settet: sett klokka på fire timer, legg bort boka, og ta
hele settet i ett strekk uten oppslag. Løsningsforslagene ligger i lukkede bokser
etter oppgavene — åpne dem først når du er ferdig. Rekker du ikke fire timer i
strekk, er den nest beste bruken å ta Del 1 én kveld og Del 2 en annen.
Forkunnskaper
Settet dekker hele boka. Er du usikker på et område mens du retter, går du hit:
| Oppgave | Tema | Kapittel |
|---|---|---|
| 1 | kjøretids-, sorterings-, heap- og graf-fakta | kap. 1.4, kap. 2.4 |
| 2 | kjøretid fra kode ved løkketelling | kap. 1.2, kap. 1.3 |
| 3 | håndkjøring av min-heap, indeks fra 0 | kap. 4.4, kap. 4.5 |
| 4 | lineær probing | kap. 3.1, kap. 3.3 |
| 5 | korteste-avstander-matrisen | kap. 6.2, kap. 6.5 |
| 6 | grafegenskaper og representasjon | kap. 5.1 |
| 7 | tre-algoritmer i pseudokode | kap. 4.1, kap. 4.2 |
| 8 | hashing og søk i pseudokode | kap. 3.2, kap. 3.4 |
| 9 | traversering, komponenter og sykler | kap. 5.2, kap. 5.3 |
| 10 | topologisk sortering | kap. 6.1 |
| 11 | sterkt sammenhengende komponenter | kap. 5.4 |
| 12 | drøft to strategier | kap. 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
, der er antall riktige.
a) Flettesortering er også i verste tilfelle.
b) Kvikksortering er i verste tilfelle.
c) Et vilkårlig array med elementer kan gjøres om til en heap i .
d) Du kan finne det største elementet i en min-heap med elementer i .
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 .
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) .
l) Det er bevist at .
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 -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 cb)
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 cc)
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 plasser og hashfunksjonen .
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 … | Algoritme | Kjø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: EGraf 2
P: Q, R
Q: P, R
R: P, Q, S
S: R, T
T: SGraf 3
X: Y
Y: X
Z: W
W: ZKryss 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 (eller og ) 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 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 til betyr at
må være ferdig før kan begynne:
A: C, D
B: D
C: E, I
D: E, F
E: G
F: G
G: H
H: (ingen)
I: HHvert 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 til
betyr at side lenker til side ; lenkene er enveis:
A: B
B: C
C: A, D
D: E
E: D, F
F: G
G: F
H: A, I
I: D, HRedaksjonen 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 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 .
Under ligger løsningsforslag med poengfordeling — én lukket boks per oppgave.
De er skrevet for denne boka, ikke hentet fra noe reelt sett eller fra noen
studentbesvarelse.
Har du tatt settet på tid, retter du nå. Har du ikke tatt det ennå, er dette
stedet å legge boka fra deg.
Etter den siste boksen ligger en midtnivåbesvarelse som er ærlig merket, en
poengoversikt og en selvdiagnose-liste du kan krysse av i.
Poengoversikt og selvdiagnose
| Del | Oppgave | Poeng |
|---|---|---|
| Oppvarming | 0 | 2 |
| Del 1 | 1 sant/usant (skalert) | 12 |
| Del 1 | 2 kjøretid fra kode | 6 |
| Del 1 | 3 min-heap | 2 |
| Del 1 | 4 lineær probing | 2 |
| Del 1 | 5 korteste-vei-matrisen | 4 |
| Del 1 | 6 grafegenskaper | 2 |
| Del 2 | 7 nest største i søketre | 8 |
| Del 2 | 8 misbrukte billettnumre | 8 |
| Del 2 | 9 er nettet et tre? | 8 |
| Del 2 | 10 monteringsplanen | 10 |
| Del 2 | 11 felles bunnpunkt | 10 |
| Del 2 | 12 hashmap mot AVL | 8 |
| Sum | 82 |
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 atbarnet 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 (eller og ) 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.