TDT4120 Algoritmer og datastrukturer Interaktivt kompendium · H2026
Fremgang
0/15

Symboler

01 Grunnlag

Symbol Betydning
nn Problemstørrelsen, som regel antall elementer I stavkapping er nn lengden på staven, i LCS lengden av YY og i ryggsekkproblemet antall gjenstander.
T(n)T(n) Kjøretiden som funksjon av nn Står på begge sider i en rekurrens, som T(n)=2T(n/2)+nT(n) = 2T(n/2) + n. For Cut-Rod er T(n)T(n) antall kall.
O(g(n))O(g(n)) Øvre grense: vokser høyst så raskt som g(n)g(n) Som a≤ba \le b for tall. Kan brukes på hvilket som helst tilfelle, også det beste.
Ω(g(n))\Omega(g(n)) Nedre grense: vokser minst så raskt som g(n)g(n) Som a≥ba \ge b for tall.
Θ(g(n))\Theta(g(n)) Stram grense: vokser like raskt som g(n)g(n) Som a=ba = b for tall. Både OO og Ω\Omega: c1 g(n)≤f(n)≤c2 g(n)c_1\,g(n) \le f(n) \le c_2\,g(n) for n≥n0n \ge n_0.
o(g(n))o(g(n)) Øvre grense som ikke er stram: vokser strengt saktere enn g(n)g(n) Som a<ba < b for tall. Ulikheten må holde for enhver c>0c > 0, så f(n)/g(n)f(n)/g(n) går mot null.
ω(g(n))\omega(g(n)) Nedre grense som ikke er stram: vokser strengt raskere enn g(n)g(n) Som a>ba > b for tall. f(n)/g(n)f(n)/g(n) vokser over alle grenser.
f(n), g(n)f(n),\ g(n) Funksjonene som sammenlignes, som i f(n)=O(g(n))f(n) = O(g(n)) I masterteoremet er f(n)f(n) den drivende funksjonen.
c, n0c,\ n_0 Konstantene i definisjonene av grensene f(n)=O(g(n))f(n) = O(g(n)) når 0≤f(n)≤c g(n)0 \le f(n) \le c\,g(n) for alle n≥n0n \ge n_0. Ikke tabellen c[i,j]c[i, j] i LCS.
lg⁡n\lg n Toerlogaritmen, log⁡2n\log_2 n Andre grunntall skrives ut, som log⁡bn\log_b n. lg⁡kn\lg^k n betyr (lg⁡n)k(\lg n)^k.
⌊x⌋, ⌈x⌉\lfloor x \rfloor,\ \lceil x \rceil Tallet xx rundet ned og rundet opp til et heltall Rekurrenser skriver n/2n/2 for ⌊n/2⌋\lfloor n/2 \rfloor. Det endrer ikke den asymptotiske løsningen.
⟨a1,…,an⟩\langle a_1, \ldots, a_n \rangle En sekvens, som instansen ⟨6,8,3,5⟩\langle 6, 8, 3, 5 \rangle I beslutningstreet tester noden i ⁣: ⁣ji\!:\!j om ai≤aja_i \le a_j.
A[i]A[i] Element nummer ii i tabellen AA Læreboka teller fra 1, Python fra 0. Hauger regnes fra 1 i teksten og fra 0 i koden.
A[p..r]A[p .. r] Segmentet A[p],…,A[r]A[p], \ldots, A[r], begge ender med Læreboka og forelesningene skriver A[p:r]A[p : r] for det samme. I Python er slutten ikke med, så segmentet er A[p : r + 1].

02 Datastrukturer

Symbol Betydning
a+b(i−s)a + b(i - s) Adressen til element ii: startadresse aa, elementbredde bb og startindeks ss Ikke aa og bb i masterteoremet.
kk En nøkkel, i hashtabeller og søketrær Ikke eksponenten kk i masterteoremet eller den største verdien kk i Counting-Sort.
h(k)h(k) Hashfunksjonen: plassen nøkkelen kk hører til, en av 0,…,m−10, \ldots, m - 1 Den enkleste er h(k)=k mod mh(k) = k \bmod m. Ikke høyden hh i et tre.
mm Antall plasser i hashtabellen I LCS er mm lengden av XX, og for ryggsekken antall bits i WW.
α\alpha Belastningsfaktoren, n/mn/m Med kjeding og jevn fordeling tar et søk forventet Θ(1+α)\Theta(1 + \alpha).

03 Problemer og reduksjoner

Symbol Betydning
R⊆I×OR \subseteq I \times O Et problem, som relasjonen mellom mengden inputs II og mengden outputs OO OO er her en mengde, ikke OO-notasjonen, og RR er ikke hjelpetabellen i Merge-Sort.
x, yx,\ y En instans og en løsning: (x,y)∈R(x, y) \in R når yy er et riktig svar på xx Et sertifikat er en påstått løsning yy som verifiseres.
X, YX,\ Y To problemer i en reduksjon: XX løses med et orakel for YY Er reduksjonen billig, er YY minst like vanskelig som XX. Ikke sekvensene XX og YY i LCS.
G, kG,\ k Grafen og antall noder i klikken i CLIQUE En klikk er en komplett delgraf.

04 Splitt og hersk

Symbol Betydning
aa Antall rekursive kall i T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n) Nivå ii i rekursjonstreet har aia^i noder av størrelse n/bin/b^i.
bb Faktoren instansen krymper med: hvert kall får n/bn/b Masterteoremet krever konstanter a≥1a \ge 1 og b>1b > 1, så T(n−1)T(n - 1) er ikke på formen.
f(n)f(n) Den drivende funksjonen, arbeidet med å dele og kombinere
nlog⁡ban^{\log_b a} Vannskillefunksjonen, antall løvnoder i rekursjonstreet Kjøretiden avgjøres av om f(n)f(n) er polynomisk større, lik opp til en faktor lg⁡kn\lg^k n med k≥0k \ge 0 eller polynomisk mindre. Andre f(n)f(n) dekkes ikke av masterteoremet.
kk Eksponenten til lg⁡n\lg n i tilfelle 2 av masterteoremet, en konstant k≥0k \ge 0 Gir Θ(nlog⁡balg⁡k+1n)\Theta(n^{\log_b a} \lg^{k+1} n). I simuleringen av rekursjonstreet er eksponenten i f(n)=ndf(n) = n^d en annen størrelse, dd.
ϵ\epsilon Avstanden i tilfelle 1 og 3: f(n)f(n) skiller seg fra nlog⁡ban^{\log_b a} med en faktor nϵn^\epsilon En konstant ϵ>0\epsilon > 0. Tilfelle 3 krever i tillegg af(n/b)≤cf(n)a f(n/b) \le c f(n) for en konstant c<1c < 1.
xx Pivoten, elementet segmentet deles rundt Partition bruker det siste elementet, x=A[r]x = A[r]. I Select er xx medianen av gruppemedianene.
qq Plassen segmentet deles ved: midten, eller pivotens endelige plass etter Partition
L, RL,\ R Venstre og høyre halvdel, kopiert ut før flettingen i Merge-Sort Ikke relasjonen RR i et problem.
∞\infty Vaktposten bakerst i LL og RR, så ingen av halvdelene går tom −∞-\infty markerer en delinstans som ikke er løst i memo-tabellen rr, og er nøkkelen et nytt element får i Max-Heap-Insert før den økes.

05 Rangering i lineær tid

Symbol Betydning
n!n! Antall rekkefølger av nn elementer, og dermed det minste antallet løvnoder i beslutningstreet Høyden, antall sammenligninger i verste tilfelle, er minst lg⁡n!=Ω(nlg⁡n)\lg n! = \Omega(n \lg n).
ii Rangen som søkes: det ii-ende minste elementet Rang 1 er minimum og rang nn maksimum. Medianen har rang ⌊(n+1)/2⌋\lfloor (n+1)/2 \rfloor.
kk Rangen til pivoten i segmentet, q−p+1q - p + 1 Er i<ki < k, søkes rang ii blant de små, ellers rang i−ki - k blant de store.
kk Den største verdien i Counting-Sort: inputen er heltall i 0..k0 .. k I Radix-Sort har hvert siffer k+1k + 1 mulige verdier, k=9k = 9 for desimale siffer.
C[v]C[v] Antall elementer lik vv, og etter den kumulative summen antall ≤v\le v Den sorterte outputen legges i BB.
dd Antall siffer i Radix-Sort

06 Rotfaste trestrukturer

Symbol Betydning
hh Høyden til et tre, den største dybden Operasjonene i et binært søketre koster O(h)O(h), og en haug har h=⌊lg⁡n⌋h = \lfloor \lg n \rfloor. Ikke hashfunksjonen h(k)h(k).
x, y, zx,\ y,\ z Noder i et binært søketre Tree-Insert setter inn zz og lar yy gå ett steg bak xx, så yy blir forelderen.
Left(i)\text{Left}(i) Venstre barn til node ii i en haug, 2i2i Rota er A[1]A[1]. Med indekser fra 0, som i Python, er rota A[0]A[0] og venstre barn 2i+12i + 1.
Right(i)\text{Right}(i) Høyre barn til node ii i en haug, 2i+12i + 1 Med indekser fra 0 er høyre barn 2i+22i + 2.
Parent(i)\text{Parent}(i) Forelderen til node ii i en haug, ⌊i/2⌋\lfloor i/2 \rfloor Med indekser fra 0 er forelderen ⌊(i−1)/2⌋\lfloor (i - 1)/2 \rfloor. Haugegenskapen er A[Parent(i)]≥A[i]A[\text{Parent}(i)] \ge A[i].

07 Dynamisk programmering

Symbol Betydning
u→vu \to v En kant i delinstansgrafen: svaret for vv bygger på svaret for uu Læreboka tegner kantene motsatt vei.
pip_i Prisen for en bit med lengde ii p1,…,p8=1,5,8,9,10,17,17,20p_1, \ldots, p_8 = 1, 5, 8, 9, 10, 17, 17, 20 i eksemplene. I Python er p[0] en ubrukt plassholder.
rnr_n Den største totalprisen for en stav med lengde nn Lagres i tabellen r[0..n]r[0 .. n]. Ikke segmentgrensen rr i A[p..r]A[p .. r].
s[j]s[j] Lengden på den første biten i en optimal kapping av lengde jj Kappingen leses av bakfra: skriv ut s[n]s[n], trekk den fra nn og gjenta.
X, YX,\ Y Sekvensene i LCS, ⟨x1,…,xm⟩\langle x_1, \ldots, x_m \rangle og ⟨y1,…,yn⟩\langle y_1, \ldots, y_n \rangle Ikke problemene XX og YY i en reduksjon.
Xi, YjX_i,\ Y_j Prefiksene ⟨x1,…,xi⟩\langle x_1, \ldots, x_i \rangle og ⟨y1,…,yj⟩\langle y_1, \ldots, y_j \rangle, delinstansene i LCS
c[i,j]c[i, j] Lengden av en LCS av XiX_i og YjY_j Ikke konstanten cc i asymptotisk notasjon.
b[i,j]b[i, j] Pilen som viser hvilken celle c[i,j]c[i, j] fikk verdien fra Print-LCS følger pilene bakfra fra b[m,n]b[m, n].
vi, wiv_i,\ w_i Verdien og vekten til gjenstand ii
WW Kapasiteten til ryggsekken Θ(nW)\Theta(nW) er polynomisk i tallet WW, men ikke i antall bits.
K[i,j]K[i, j] Den største verdien med gjenstandene 1,…,i1, \ldots, i og kapasitet jj Tabellen har (n+1)(W+1)(n + 1)(W + 1) celler.
mm Antall bits i WW, ⌊lg⁡W⌋+1\lfloor \lg W \rfloor + 1 Θ(nW)=Θ(n2m)\Theta(nW) = \Theta(n 2^m), som er eksponentielt i mm.

08 Grådighet

Symbol Betydning
vi/wiv_i / w_i Kiloprisen til gjenstand ii, verdi per vektenhet Den grådige algoritmen fyller sekken etter synkende kilopris.
[si,fi)[s_i, f_i) Aktivitet aia_i: starttiden sis_i og sluttiden fif_i, et halvåpent intervall Aktivitetene er sortert etter fif_i. Den tenkte a0a_0 har f0=0f_0 = 0. Ikke funksjonen f(n)f(n).
kk Indeksen til den sist valgte aktiviteten En ny aktivitet ama_m tas med når sm≥fks_m \ge f_k.
CC Alfabetet: tegnene som skal kodes Ikke tellertabellen CC i Counting-Sort.
c.freqc.\mathit{freq} Frekvensen til tegnet cc: hvor mange ganger det står i teksten En indre node i et huffmantre har summen av frekvensene under seg.
dT(c)d_T(c) Dybden til løvnoden for cc i kodetreet TT, som er lengden av kodeordet
B(T)B(T) Kostnaden til kodetreet TT: antall bits i den kodede teksten
x, y, zx,\ y,\ z I Huffman: de to trærne med lavest frekvens, og den nye noden som blir forelderen deres zz får frekvensen x.freq+y.freqx.\mathit{freq} + y.\mathit{freq}. Ikke nodene i et binært søketre.

09 Traversering av grafer

Symbol Betydning
G=(V,E)G = (V, E) En graf med nodene VV og kantene EE Inne i asymptotisk notasjon står VV og EE for antall noder og kanter, som i O(V+E)O(V + E).
G.Adj[u]G.\mathit{Adj}[u] Nabolista til uu: ut-naboene
auva_{uv} Elementet i rad uu, kolonne vv i nabomatrisen: 1 når (u,v)(u, v) er en kant, ellers 0
ss Startnoden i en traversering Ikke starttiden sis_i til en aktivitet.
u.du.d I DFS: starttiden, da uu ble oppdaget og grå I BFS er u.du.d avstanden fra startnoden.
u.fu.f I DFS: sluttiden, da uu ble ferdig og svart Ikke sluttiden fif_i til en aktivitet eller funksjonen f(n)f(n).
u.du.d I BFS: avstanden fra startnoden ss til uu ∞\infty til uu er oppdaget.
u.πu.\pi Forgjengeren til uu: noden uu ble oppdaget fra nil for startnoden og for røttene i en dybde-først-skog.
δ(s,v)\delta(s, v) Avstanden fra ss til vv: det minste antallet kanter på en sti ∞\infty når vv ikke kan nås fra ss.
GTG^{\mathrm T} Den transponerte grafen: GG med alle kantene snudd