8.5 Øvingseksamen 3 — designtungt topp-sett
Komplett sett med et vanskeligere toppsjikt: flere åpne designoppgaver og reduksjonsargumenter, der A/B-karakteren skilles.
Dette er et komplett, nyskrevet eksamenssett i samme form som NTNU bruker i
TDT4120. Vi har skrevet det selv og lagt oss tett opp til mønsteret i fagets
egne sett — det er ikke et gjengitt sett fra en tidligere eksamen.
Rammene:
- Fire timer, én sammenhengende skriftlig eksamen.
- 20 kortsvarsoppgaver som teller likt. Hver oppgave er 5 % av karakteren,
og du har rundt 12 minutter per oppgave i snitt.
- Ingen hjelpemidler — det NTNU kaller hjelpemiddelkode E. Alt du
bruker her, skal sitte i hodet.
- Delvis uttelling betyr at et svar som treffer hovedpoenget, men mangler
en detalj, gir en del av poengene. Skriv derfor alltid ned det du er sikker
på, framfor å levere blankt.
Dette settet er designtungt. Fem av de tjue oppgavene er åpne
designoppgaver (sjanger H), og tre er reduksjons- og NP-argumenter (sjanger G).
Til sammen er det åtte oppgaver der du selv må velge verktøyet — mot fem i et
typisk sett. Det er nettopp der A- og B-karakteren avgjøres, og det er derfor
dette settet finnes.
Vær oppmerksom på tidsbudsjettet. Åtte tunge oppgaver på 12 minutter hver
er stramt. Grunnoppgavene 1–12 bør derfor gå raskt: de er ren gjenkalling og
mekanikk, og hvert minutt du sparer der, er et minutt du får bruke bak.
Du kan trygt dele settet over flere kvelder. Det står et naturlig pausepunkt
mellom bolkene. Men minst ett av de tre settene i
kap. 8.3, kap. 8.4 og dette
bør du ta på tid i ett strekk — fire timer med tjue oppgaver er også en
tempoferdighet.
Løsningsforslagene ligger i egne bokser under settet, én per oppgave. Til
slutt følger to modellbesvarelser på oppgave 18 og en selvdiagnose. Løs hele
settet før du åpner noen av dem.
Forkunnskaper
Dette settet trekker på hele boka. De delene som veier tyngst:
- kap. 5.3 og kap. 8.2 —
flytmodellering og designoppskriften med de fem leddene.
- kap. 6.3 — DP-design og rekonstruksjon.
- kap. 7.2 og kap. 7.4 —
reduksjonsretning og NP-argumenter.
- kap. 6.5 — Gale-Shapley og begge orienteringene.
- kap. 1.2, kap. 1.5,
kap. 2.4, kap. 3.3 og
kap. 4.5 — grunnoppgavene.
Har du ikke tatt kap. 8.3 og
kap. 8.4 ennå, ta dem først. Dette settet er det
vanskeligste av de tre.
Oppgave 1–6: asymptotikk, rekurrens og kjøretid (~60 min)
Oppgave 1. (Sjanger A — asymptotisk forenkling, altså at du gir det
strammeste uttrykket og ingenting mer.) Oppgi det strammeste
-uttrykket for
Svar med ett uttrykk.
Oppgave 2. (Sjanger A.) Ranger de fem funksjonene under etter voksende
asymptotisk vekst, og marker eksplisitt hvilke to som vokser like fort:
Skriv svaret som én kjede med og .
Oppgave 3. (Sjanger B — rekurrensløsning med navngitt metode, altså at du
sier hvilken metode du bruker og hva den gir.) Løs rekurrensen
ved iterasjon. Oppgi et eksakt uttrykk for — ikke en asymptotisk
grense.
Oppgave 4. (Sjanger E — kjøretidskunnskap, altså at du oppgir kjøretiden
direkte og velger mellom og med vitende og vilje.) Du kjører førstInsertion-Sort på hele arrayet, og deretter Merge-Sort på resultatet. Oppgi
total kjøretid i verste tilfelle, og oppgi hva totalen ville blitt i motsatt
rekkefølge. Begrunn hver av dem på én linje.
Oppgave 5. (Sjanger E.) Oppgi kjøretiden til Build-Max-Heap, tilHeapsort og til Randomized-Select i verste tilfelle. For hver: si om
grensen er tett eller bare øvre.
Oppgave 6. (Sjanger E.) Radix-Sort sorterer nøkler med siffer
hver, i et tallsystem med grunntall . Oppgi kjøretiden, oppgi hvilken
egenskap delsorteringen må ha, og oppgi under hvilken betingelse Radix-Sort
er asymptotisk raskere enn Merge-Sort.
— naturlig pausepunkt —
Oppgave 7–12: håndkjøring, definisjoner og ja/nei (~65 min)
Oppgave 7. (Sjanger C — håndkjøring, altså at du utfører algoritmen steg
for steg og oppgir bare sluttilstanden.) Sett inn nøklene
54, 29, 73, 16, 41, 66, 88, 35i denne rekkefølgen i et tomt binært søketre. OppgiInorder-Tree-Walk-utskriften og treets høyde.
Oppgave 8. (Sjanger C.) Et flytnett har nodene , , , , ,
og kapasitetene
c(s,a) = 11 c(s,b) = 7 c(a,b) = 3 c(a,c) = 6
c(b,d) = 9 c(c,t) = 8 c(c,d) = 4 c(d,t) = 10Kjør Edmonds-Karp fra nullflyten, med naboene i alfabetisk rekkefølge. Oppgi
maksimal flytverdi og et min-snitt.
Oppgave 9. (Sjanger D — definisjon med egne ord, altså én presis setning med
hovedpoenget først.) Definér restkapasitet og ryggkant, og forklar med
én setning hvorfor ryggkanten er nødvendig.
Oppgave 10. (Sjanger D.) Definér et blokkerende par, og forklar hva det
betyr at en matching er stabil.
Oppgave 11. (Sjanger F — «stemmer dette?», altså at du svarer ja eller nei
først og deretter gir én presis setning.) En kandidat skriver: «Vi brukerDijkstra fordi nettet har noen strekninger med negativ kostnad, ogDijkstra er raskest.» Stemmer resonnementet?
Oppgave 12. (Sjanger F.) Stemmer dette: «Ford-Fulkerson er
pseudopolynomisk, og maks-flyt er derfor sannsynligvis NP-hardt.»
— naturlig pausepunkt —
Oppgave 13–15: reduksjoner og NP-argumenter (~35 min)
Oppgave 13. (Sjanger G — reduksjon og argument om vanskelighet, altså at du
sier hvilken vei argumentet går, hva det viser, og hva det ikke viser.) Du
har vist 3-CNF-SAT RUTEPLAN.
a) Hva forteller det om RUTEPLAN?
b) Hva mangler for at RUTEPLAN skal være NP-komplett, og hvordan vises
det?
Oppgave 14. (Sjanger G.) En kandidat skriver: «Problemet mitt LAGERFLYT kan
oversettes til SUBSET-SUM i lineær tid, og SUBSET-SUM er NP-komplett. Altså er
LAGERFLYT NP-hardt.» Er argumentet gyldig? Svar, og forklar nøyaktig hva som er
galt.
Oppgave 15. (Sjanger G.) Et forskningsmiljø kunngjør at de har funnet en
algoritme som løser VERTEX-COVER i .
a) Hvilken konsekvens har det, hvis kunngjøringen stemmer?
b) Hva ville den samme kunngjøringen om et NP-hardt, men ikke
NP-komplett problem gitt?
Oppgave 16–20: åpen algoritmedesign (~80 min)
Alle fem oppgavene besvares med en kort designskisse: hvilket klassisk
problem det er, hvilket paradigme du bruker, konstruksjonen, hvordan du henter
ut selve løsningen, og kjøretiden. Fem til ti linjer per oppgave.
Oppgave 16. (Sjanger H — åpen algoritmedesign.) En sykehusavdeling har
leger og vaktdøgn. Hver lege har oppgitt hvilke døgn hun kan ta, og kan ta
høyst fire. Hvert vaktdøgn trenger nøyaktig to leger. Beskriv hvordan du
avgjør om alle døgnene kan dekkes, og hvordan du finner en konkret vaktliste.
Oppgave 17. (Sjanger H.) En kommune vil hindre at en skogbrann sprer seg
fra et industriområde til et boligfelt. Kartet er et rutenett; å rydde
brannbelte i en rute koster et oppgitt beløp. Finn den billigste samlingen
ruter som gjør spredning umulig, og oppgi hvilke ruter det er.
Oppgave 18. (Sjanger H.) Et forlag skal dele en manusfil på avsnitt inn
i kapitler. Et kapittel som består av avsnittene til , har en oppgitt
ubalansekostnad som kan slås opp i konstant tid. Summen av
kostnadene skal minimeres. Beskriv en algoritme som finner både den laveste
totalkostnaden og selve kapittelinndelingen.
Oppgave 19. (Sjanger H.) Tre studenter og tre veiledningsgrupper har rangert
hverandre slik:
Aina: Sild, Rev, Torsk Rev: Cato, Bror, Aina
Bror: Sild, Rev, Torsk Sild: Cato, Bror, Aina
Cato: Torsk, Sild, Rev Torsk: Aina, Bror, CatoAina spør om hun kan bli tildelt Sild i en stabil fordeling. Beskriv hvordan du
avgjør det, gjennomfør avgjørelsen, og oppgi svaret.
Oppgave 20. (Sjanger H, den vanskeligste.) Et jernbaneselskap har et nett
med stasjoner og strekninger, hver med en positiv kjøretid. Blant
alle ruter fra hovedstasjonen til endestasjonen som har minst
mulig samlet kjøretid, vil selskapet finne den som har flest
mellomstasjoner — flere stopp gir flere reisende. Beskriv en algoritme, og
oppgi kjøretiden.
Hva skiller de to besvarelsene (~10 min)
Begge kandidatene valgte riktig paradigme, skrev en rekurrens med riktig form,
og fikk kjøretiden riktig. Likevel ligger de et helt karaktertrinn fra
hverandre, og forskjellen er fire setninger:
| Ledd | A | C |
|---|---|---|
| Navngir problemet og paradigmet | ja | halvveis — paradigmet, ikke problemet |
| Definerer delproblemet med ord | ja | nei — «den beste verdien» uten å si for hva |
| Rekurrens med grunntilfelle og indeksgrenser | ja | rekurrensen, men uten grunntilfelle |
| Rekonstruksjon av selve løsningen | ja | nei |
| Kjøretid med begrunnelse | ja | ja |
Det som er verdt å merke seg: ingen av manglene skyldes at C-kandidaten
kunne mindre. Alle fire kan skrives på under et minutt hver, og de krever ingen
ny innsikt — bare at man går gjennom listen før man går videre til neste
oppgave.
Derfor er kontrollen så billig: tell leddene. Fem?
Selvdiagnose (~15 min)
Gå gjennom listen med ditt eget besvarelsesark foran deg. Kryss av det du
faktisk gjorde, ikke det du mente å gjøre.
☐ Oppga du bare det som ble etterspurt, uten å legge til en forklaring ingen ba
om?
☐ Er hvert kjøretidssvar det strammeste uttrykket du kan gi — sto det
og ikke i oppgave 1?
☐ Markerte du eksplisitt hvilke to funksjoner som vokser like fort i
oppgave 2?
☐ Ga du et eksakt uttrykk i oppgave 3, og ikke en asymptotisk grense?
☐ Sto ordet «forventet» der det hørte hjemme i oppgave 5, og oppga du
og ikke som verste tilfelle for Randomized-Select?
☐ Er Inorder-Tree-Walk-utskriften i oppgave 7 sortert stigende? Er den ikke
det, er det en regnefeil.
☐ Leverte du både flytverdien og min-snittet i oppgave 8 — og kontrollerte
du at de to tallene er like?
☐ Sto ordet «nei» først i oppgave 11, 12 og 14, før begrunnelsen?
☐ Sa du i oppgave 13 og 14 hva reduksjonen ikke viser, og ikke bare hva den
viser?
☐ Gikk reduksjonen i oppgave 14 fra det kjente vanskelige problemet til
det nye i din rettelse?
☐ Har hvert av de fem designsvarene (16–20) alle fem leddene? Tell dem, ett
svar om gangen.
☐ Rekonstruerte du selve løsningen i oppgave 16, 17, 18 og 20 — vaktlisten,
rutene, kapittelinndelingen og ruten — og ikke bare verdien?
☐ Nevnte du heltallsteoremet i oppgave 16?
☐ Nevnte du nodesplittingen i oppgave 17, og sa du hvorfor den trengs?
☐ Sa du i oppgave 19 hvilken orientering hver kjøring hadde?
☐ Argumenterte du i oppgave 20 for at korteste-vei-grafen er syklusfri?
☐ Oppga du kjøretidene i problemets egne størrelser — hva og er i
din konstruksjon — og ikke bare «»?
Oppgraderingsmenyen for dette settet
Kommer du til bunns i grunnoppgavene 1–12, ligger avstanden opp mot toppen fire
konkrete steder. Alle fire kan trenes, og alle fire koster under et minutt hver
på selve eksamen:
1. Rekonstruksjonen i hvert designsvar. Fire av de fem designoppgavene ber
om selve løsningen. To setninger per oppgave — hva som leses av, og at det
ikke øker kjøretiden.
2. Reduksjonsretningen, tre ganger på rad. Oppgave 13, 14 og 15 tester det
samme fra tre vinkler. Les pilen høyt hver gang.
3. Kjøretid i problemets egne størrelser. « med » er ett
ledd; «» er et halvt.
4. De små forbeholdene. Heltallsteoremet i flytmodelleringen,
syklusfriheten i oppgave 20, kravet om stabil delsortering i oppgave 6. Det
er disse som gjør et riktig svar til et fullstendig svar.
Og et råd om tempo: klarte du ikke alle fem designoppgavene på 80 minutter,
er det ikke kunnskapen som mangler — det er rutinen. Ta
kap. 8.2 en gang til, med klokke.
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 Norges teknisk-naturvitenskapelige universitet. Dette er ikke offisielt studiemateriell. Les mer.