Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert

Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert

Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert

Eksamenssett logo
eksamenssett.noTren målrettet
  • Ungdomsskole/VGS
  • Høyskole
  • Ressurser
  • Privatundervisning
  • Kontakt
  1. Hjem
  2. Høyskole
  3. NTNU
  4. TDT4120
  5. Studieguide
TDT4120 · NTNU

Studieguide for TDT4120 Algoritmer og datastrukturer

Komplett pensumoversikt for algoritmer og datastrukturer ved NTNU — med forklaringer, sentrale begreper, eksamenstips og vanlige fallgruver. Eksamensoptimalisert basert på tidligere eksamener.

Innhold

  • Introduksjon
  • Kompleksitetsanalyse
  • Splitt og hersk
  • Sorteringsalgoritmer
  • Datastrukturer
  • Dynamisk programmering
  • Grådige algoritmer
  • Grafalgoritmer
  • Maksimal flyt
  • NP-fullstendighet
  • Eksamensstrategi
  • Formelark

Introduksjon

TDT4120 Algoritmer og datastrukturer avsluttes med én skriftlig skoleeksamen: 4 timer i Inspera, hjelpemiddelkode E: ingen hjelpemidler, heller ikke kalkulator. Neste eksamen er 9. desember 2026 kl. 15.00. Guiden er bygd på de 22 eksamenssettene fra 2015 til 2025 og NTNUs løsningsforslag til dem. Alle tall er målt deloppgave for deloppgave.

Slik ser eksamen ut nå

Siden desember 2022 har settet bestått av 20 korte oppgaver à 5 % (august 2025: 12 like store). De fleste er korte spørsmål: oppgi en kjøretid, løs en rekurrens, utfør ett steg av en algoritme, si hva som mangler i en formel eller linje med pseudokode, eller vurder en påstand. De siste 2–5 er som regel åpne: «Konstruer og beskriv en algoritme» for et problem du ikke har sett før. I desember 2025 endte 15 av 20 oppgaver med «Forklar kort». I de 8 nyeste settene (2022–2025) fordeler poengene seg slik: forklare 34,4 %, designe en algoritme 15,4 %, regne (kjøretid, rekurrenser) 15,4 %, korte fakta 15,0 %, kjøre en algoritme for hånd 11,2 %, resten er modellering, utfylling og reduksjoner.

Hva som gir poeng

TemaSett (av 22)Andel av poengene
Grafalgoritmer2225,8 %
Sorteringsalgoritmer2112,0 %
Datastrukturer2011,5 %
Maksimal flyt (med matching)2211,3 % (14,0 % i de 8 nyeste)
Splitt og hersk og rekurrenser2010,5 %
NP-fullstendighet219,5 %
Kompleksitetsanalyse188,4 %
Dynamisk programmering207,9 %
Grådige algoritmer103,1 %

Åtte av ni temaer er med i minst 18 av 22 sett, så ingenting kan hoppes over. «Løs rekurrensen» står i 19 av 22 sett. Stabil matching kom inn i 2022 og har vært med i 6 av de 8 nyeste settene. Balanserte søketrær (AVL, rød-svart), tilnærmingsalgoritmer og matroider har 0 treff i de 22 settene og er ikke med i guiden.

Hver seksjon starter med hvordan temaet er prøvd, og har gjennomregnede eksempler i samme form som eksamensoppgavene, med egne tall. Svarene er kontrollert med Python.

Kompleksitetsanalyse

Eksamensrelevant

Kompleksitetsanalyse har egne deloppgaver i 8 av de 8 nyeste TDT4120-settene (10,4 % av poengene). Du må kunne definisjonene av O, Ω og Θ, regne med dem i uttrykk, telle løkker og skille beste, verste, gjennomsnittlig, forventet og amortisert tid.

Oversikt

Kompleksitetsanalyse er språket resten av emnet bruker: nesten hver oppgave ber om en kjøretid, og mange ber deg «oppgi svaret i Θ\ThetaΘ-notasjon». Her handler det om selve notasjonen, om å telle løkker og om de ulike måtene å snakke om kjøretid på. Rekurrenser står under splitt og hersk.

Slik testes dette på eksamen. Kompleksitetsanalyse har minst én egen deloppgave i 18 av 22 sett (2015–2025) og i 8 av de 8 nyeste (2022–2025), og gir 10,4 % av poengene i de nyeste 8. Å forenkle et uttrykk med OOO, Ω\OmegaΩ og Θ\ThetaΘ, eller summen f(n)+g(n)f(n) + g(n)f(n)+g(n), står i 8 av 22 sett og 4 av de 8 nyeste. Løkketelling står i 7 av 22 og 4 av de 8 nyeste. Beste, verste og gjennomsnittlig tilfelle spørres det om i 11 av 22 sett og 5 av de 8 nyeste, ofte knyttet til en bestemt algoritme. Amortisert analyse står i 3 av 22 (2016 des., 2018 des., 2024 aug.).

Notasjonen

  • f(n)=O(g(n))f(n) = O(g(n))f(n)=O(g(n)): f(n)≤c g(n)f(n) \le c\,g(n)f(n)≤cg(n) (og f(n)≥0f(n) \ge 0f(n)≥0) for en konstant c>0c > 0c>0 når n≥n0n \ge n_0n≥n0​. Øvre grense.
  • f(n)=Ω(g(n))f(n) = \Omega(g(n))f(n)=Ω(g(n)): f(n)≥c g(n)≥0f(n) \ge c\,g(n) \ge 0f(n)≥cg(n)≥0 fra en n0n_0n0​. Dette er en nedre grense.
  • f(n)=Θ(g(n))f(n) = \Theta(g(n))f(n)=Θ(g(n)): både OOO og Ω\OmegaΩ. Tett grense.
  • ooo og ω\omegaω er de strenge variantene: f(n)=o(g(n))f(n) = o(g(n))f(n)=o(g(n)) betyr at f(n)/g(n)→0f(n)/g(n) \to 0f(n)/g(n)→0, og ω\omegaω at forholdet går mot uendelig.

Har du vist både O(g)O(g)O(g) og Ω(g)\Omega(g)Ω(g), har du Θ(g)\Theta(g)Θ(g), og Θ\ThetaΘ er da det mest informative svaret. Notasjonen er ikke knyttet til et tilfelle: OOO betyr ikke «verste tilfelle». Beste tilfelle for Insertion-Sort er Θ(n)\Theta(n)Θ(n), og verste er Θ(n2)\Theta(n^2)Θ(n2). Vokserekkefølgen du må kunne:

111 (konstant) ≺lg⁡n≺n≺n≺nlg⁡n≺n2≺n3≺2n≺3n≺n!\prec \lg n \prec \sqrt{n} \prec n \prec n \lg n \prec n^2 \prec n^3 \prec 2^n \prec 3^n \prec n!≺lgn≺n​≺n≺nlgn≺n2≺n3≺2n≺3n≺n!

Grunntallet i logaritmen spiller ingen rolle, men grunntallet i en eksponent gjør det: 3n3^n3n er ikke O(2n)O(2^n)O(2n).

Regning med notasjon

Et ledd som O(n2)O(n^2)O(n2) i et uttrykk står for en ukjent funksjon med den grensen. Summen får den største nedre grensen og den største øvre grensen. Et Ω\OmegaΩ-ledd har ingen øvre grense, så da har heller ikke summen det. Et OOO-ledd kan være 0 og bidrar ikke til den nedre grensen.

UttrykkResultatHvorfor
O(n2)+Θ(nlg⁡n)+Ω(n)O(n^2) + \Theta(n \lg n) + \Omega(\sqrt{n})O(n2)+Θ(nlgn)+Ω(n​)Ω(nlg⁡n)\Omega(n \lg n)Ω(nlgn)Θ\ThetaΘ-leddet gir nedre grense, Ω\OmegaΩ-leddet fjerner øvre
Θ(n3)+O(n4)\Theta(n^3) + O(n^4)Θ(n3)+O(n4)Ω(n3)\Omega(n^3)Ω(n3) og O(n4)O(n^4)O(n4)ingen Θ\ThetaΘ, grensene er ulike
Ω(n4)/O(n)\Omega(n^4) / O(n)Ω(n4)/O(n)Ω(n3)\Omega(n^3)Ω(n3)stor teller, liten nevner
O(n2)⋅Θ(lg⁡n)O(n^2) \cdot \Theta(\lg n)O(n2)⋅Θ(lgn)O(n2lg⁡n)O(n^2 \lg n)O(n2lgn)bare øvre grense overlever

Løkketelling

Nøstede løkker ganges, løkker etter hverandre legges sammen. Avhenger den indre løkka av den ytre, summerer du: ∑i=1ni=n(n+1)/2\sum_{i=1}^{n} i = n(n+1)/2∑i=1n​i=n(n+1)/2. En variabel som dobles eller halveres, gir lg⁡n\lg nlgn runder. En geometrisk sum domineres av siste ledd: 1+3+9+⋯+3n=(3n+1−1)/2=Θ(3n)1 + 3 + 9 + \dots + 3^n = (3^{n+1} - 1)/2 = \Theta(3^n)1+3+9+⋯+3n=(3n+1−1)/2=Θ(3n). Vi regner i RAM-modellen, der hver enkel operasjon (tilordning, sammenligning, aritmetikk på tall av størrelse O(lg⁡n)O(\lg n)O(lgn) bit) tar konstant tid.

Eksempel 1: Hva blir m?

Hva er verdien av mmm når prosedyren er ferdig? Svar med Θ\ThetaΘ-notasjon, uttrykt ved nnn, og begrunn kort.

Tell(n)
1  m = 0
2  for i = 1 to n       // n runder
3      j = 1
4      while j ≤ i
5          m = m + 1
6          j = 2 · j
7  return m
  1. For fast iii tar jjj verdiene 1,2,4,…1, 2, 4, \dots1,2,4,… så lenge j≤ij \le ij≤i. Det er ⌊lg⁡i⌋+1\lfloor \lg i \rfloor + 1⌊lgi⌋+1 runder.
  2. Totalt: m=∑i=1n(⌊lg⁡i⌋+1)m = \sum_{i=1}^{n} (\lfloor \lg i \rfloor + 1)m=∑i=1n​(⌊lgi⌋+1).
  3. Øvre grense: hvert ledd er høyst lg⁡n+1\lg n + 1lgn+1, så summen er O(nlg⁡n)O(n \lg n)O(nlgn).
  4. Nedre grense: de n/2n/2n/2 siste leddene har i≥n/2i \ge n/2i≥n/2 og gir minst lg⁡(n/2)\lg(n/2)lg(n/2) runder hver, altså minst (n/2)lg⁡(n/2)=Ω(nlg⁡n)(n/2)\lg(n/2) = \Omega(n \lg n)(n/2)lg(n/2)=Ω(nlgn).
  5. Kontroll for n=8n = 8n=8: i=1,…,8i = 1, \dots, 8i=1,…,8 gir rundene 1,2,2,3,3,3,3,41, 2, 2, 3, 3, 3, 3, 41,2,2,3,3,3,3,4, altså m=21m = 21m=21.
Tabell merket runder med indeks i fra 1 til 8 og verdiene 1, 2, 2, 3, 3, 3, 3, 4. Cellene for i = 1, 2, 4 og 8 er markert, og en pil over i = 8 viser j = 1, 2, 4, 8.
Antall runder i while-løkka for i=1,…,8i = 1, \dots, 8i=1,…,8. Tallet øker med 1 hver gang iii når en toerpotens.

Svar: m=Θ(nlg⁡n)m = \Theta(n \lg n)m=Θ(nlgn).

Eksempel 2: Summen av to funksjoner med kjente grenser

Du vet at f(n)=O(n3)f(n) = O(n^3)f(n)=O(n3) og f(n)=Ω(n2)f(n) = \Omega(n^2)f(n)=Ω(n2), og at g(n)=Θ(nlg⁡n)g(n) = \Theta(n \lg n)g(n)=Θ(nlgn). Uttrykk f(n)+g(n)f(n) + g(n)f(n)+g(n) så presist som mulig med asymptotisk notasjon.

  1. Nedre grense: f(n)≥c1n2f(n) \ge c_1 n^2f(n)≥c1​n2 og g(n)≥0g(n) \ge 0g(n)≥0, så f(n)+g(n)=Ω(n2)f(n) + g(n) = \Omega(n^2)f(n)+g(n)=Ω(n2). Den nedre grensen fra ggg er svakere og forsvinner.
  2. Øvre grense: f(n)≤c2n3f(n) \le c_2 n^3f(n)≤c2​n3 og g(n)≤c3nlg⁡n≤c3n3g(n) \le c_3 n \lg n \le c_3 n^3g(n)≤c3​nlgn≤c3​n3, så summen er O(n3)O(n^3)O(n3).
  3. Ingen Θ\ThetaΘ: både f(n)=n2f(n) = n^2f(n)=n2 og f(n)=n3f(n) = n^3f(n)=n3 oppfyller kravene, og da blir summen Θ(n2)\Theta(n^2)Θ(n2) i det ene tilfellet og Θ(n3)\Theta(n^3)Θ(n3) i det andre.

Svar: f(n)+g(n)=Ω(n2)f(n) + g(n) = \Omega(n^2)f(n)+g(n)=Ω(n2) og f(n)+g(n)=O(n3)f(n) + g(n) = O(n^3)f(n)+g(n)=O(n3). En tett Θ\ThetaΘ-grense kan ikke gis.

Beste, verste og gjennomsnittlig tilfelle

Beste og verste tilfelle er kjøretiden på den gunstigste og den verste input av størrelse nnn. Gjennomsnitt brukes om tre ulike ting:

  • Gjennomsnitt over input (average case): snitt over alle input av størrelse nnn, gitt en fordeling. Insertion-Sort er Θ(n2)\Theta(n^2)Θ(n2) i snitt, likt verste tilfelle, fordi en tilfeldig tabell har omtrent n2/4n^2/4n2/4 par i feil rekkefølge. Et snitt kan altså falle sammen med den ene ytterkanten når konstantene skjules.
  • Forventet tid for en randomisert algoritme: forventning over algoritmens egne tilfeldige valg, for hver input. Randomized-Quicksort er forventet Θ(nlg⁡n)\Theta(n \lg n)Θ(nlgn) på alle input.
  • Amortisert tid: snitt per operasjon over en hel serie operasjoner på samme datastruktur, uten sannsynlighet.

En nedre grense kan også komme fra antall mulige svar: skal du skille mellom NNN muligheter med ja/nei-spørsmål, trengs minst ⌈lg⁡N⌉\lceil \lg N \rceil⌈lgN⌉ spørsmål i verste fall.

Eksempel 3: Amortisert kostnad for Table-Insert

En dynamisk tabell starter med plass til 1 element og dobles når den er full. Hva koster 9 kall til Table-Insert, målt i antall elementer som skrives? Hva er den amortiserte kostnaden per innsetting? Forklar kort.

  1. Hver innsetting skriver det nye elementet: 9 skrivinger.
  2. Tabellen er full ved innsetting 2, 3, 5 og 9 og vokser da til 2, 4, 8 og 16 plasser. Da kopieres 1+2+4+8=151 + 2 + 4 + 8 = 151+2+4+8=15 elementer.
  3. Totalt 9+15=249 + 15 = 249+15=24 skrivinger, under 3⋅9=273 \cdot 9 = 273⋅9=27.
  4. Generelt: kopieringene er 1+2+⋯+2j<2n1 + 2 + \dots + 2^j < 2n1+2+⋯+2j<2n, så nnn innsettinger koster under 3n3n3n. Én enkelt innsetting kan koste Θ(n)\Theta(n)Θ(n), men snittet over serien er Θ(1)\Theta(1)Θ(1).
  5. Vokser tabellen i stedet med et fast antall plasser, kopieres det Θ(n2)\Theta(n^2)Θ(n2) elementer totalt, og da blir amortisert kostnad Θ(n)\Theta(n)Θ(n).
Fem tabeller over hverandre, etter innsetting 1, 2, 3, 5 og 9. Størrelsene er 1, 2, 4, 8 og 16 plasser, med tallene 1 til x fylt inn fra venstre og det sist innsatte elementet markert. Resten av plassene er tomme.
Tabellen etter innsettingene som utløser vekst. Hver dobling kopierer alt som ligger der fra før.

Svar: 24 skrivinger. Amortisert kostnad per Table-Insert er Θ(1)\Theta(1)Θ(1), selv om én innsetting i verste fall koster Θ(n)\Theta(n)Θ(n).

Nøkkelformler

  • •f(n)=O(g(n))f(n) = O(g(n))f(n)=O(g(n)): f(n)≤c g(n)f(n) \le c\,g(n)f(n)≤cg(n) når n≥n0n \ge n_0n≥n0​
  • •f(n)=Θ(g(n))f(n) = \Theta(g(n))f(n)=Θ(g(n)) hvis og bare hvis f(n)=O(g(n))f(n) = O(g(n))f(n)=O(g(n)) og f(n)=Ω(g(n))f(n) = \Omega(g(n))f(n)=Ω(g(n))
  • •Sum: største nedre grense og største øvre grense; et Ω\OmegaΩ-ledd fjerner øvre grense
  • •∑i=1ni=n(n+1)/2=Θ(n2)\sum_{i=1}^{n} i = n(n+1)/2 = \Theta(n^2)∑i=1n​i=n(n+1)/2=Θ(n2)
  • •1+2+4+⋯+2k=2k+1−11 + 2 + 4 + \dots + 2^k = 2^{k+1} - 11+2+4+⋯+2k=2k+1−1
  • •Dobling eller halvering av en løkkevariabel gir Θ(lg⁡n)\Theta(\lg n)Θ(lgn) runder
  • •Table-Insert med dobling: under 3n3n3n skrivinger for nnn innsettinger, amortisert Θ(1)\Theta(1)Θ(1)

Vanlige feil

  • ⚠️Å tro at OOO betyr verste tilfelle og Ω\OmegaΩ beste. Alle notasjonene kan brukes om alle tilfellene.
  • ⚠️Å svare bare O(… )O(\dots)O(…) når Θ\ThetaΘ er kjent. Θ\ThetaΘ gir mest informasjon og er det oppgaven vil ha.
  • ⚠️Å gi en øvre grense for en sum som inneholder et Ω\OmegaΩ-ledd. Et slikt ledd kan være vilkårlig stort.
  • ⚠️Å gi Θ\ThetaΘ for f+gf + gf+g når nedre og øvre grense er ulike. Da må svaret være både Ω(… )\Omega(\dots)Ω(…) og O(… )O(\dots)O(…).
  • ⚠️Å gange løkker som står etter hverandre. De skal legges sammen.
  • ⚠️Å blande amortisert og forventet tid. Amortisert tid er et snitt over en serie operasjoner uten sannsynlighet.

Eksamenstips

  • 💡Skriv én setning om hvor mange ganger den innerste linja kjører for hver verdi av den ytre variabelen, og summer.
  • 💡Sjekk et løkkesvar ved å telle for n=8n = 8n=8 for hånd.
  • 💡Ved uttrykk med notasjon: finn nedre og øvre grense hver for seg før du slår dem sammen.
  • 💡Står det «Oppgi svaret i Θ\ThetaΘ-notasjon», kan OOO alene gi trekk.
  • 💡Ved spørsmål om gjennomsnitt: si hva du tar gjennomsnitt over (input, tilfeldige valg eller en serie operasjoner).

Laster...

Laster…
eksamenssett.noTren målrettet

Komplett samling av eksamensoppgaver og løsninger for norsk skole.

Om ossPrivatundervisningPriserSlik bruker du sidenFAQPersonvernVilkårAngrerettKontaktKI-deklarasjon

© 2026 Eksamenssett.no · Alle rettigheter forbeholdt

Innholdet er utviklet med KI og kvalitetssikres kontinuerlig – av modellene, og ved at våre tusenvis av brukere kan melde fra om feil. Slik jobber vi med kvalitet →

Eksamenssett.no eies og drives av Studenthjelp Privatundervisning AS

Org.nr. 913 117 387 (Foretaksregisteret) · Aksel Olsens vei 10B, 1597 Moss · Ikke MVA-registrert