Tilbake
1.5

1.5 Rekurrenser — iterasjon, substitusjon og splitt-og-hersk

Iterasjonsmetoden for **eksakte** svar, substitusjonsmetoden for induksjonsverifikasjon, og splitt-og-hersk-paradigmet (binærsøk) som gir rekurrensene.

55 min
8 oppgaver
Rekurrenseriterasjonsubstitusjonsplitt-og-hersk
Din fremgang i kapitlet
0 / 8 oppgaver

Forkunnskaper

- kap. 1.4 — masterteoremet. Dette sto der: en rekurrens
på formen T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n) løses ved å sammenligne f(n)f(n) med
nlogban^{\log_b a}, og tilfelle 2 gjelder når f(n)=Θ(nlogbalgkn)f(n) = \Theta(n^{\log_b a}\lg^k n)
med k0k \ge 0. Teoremet gir alltid et asymptotisk svar. Dette kapitlet
handler om de to metodene som tar over der teoremet ikke rekker.
- kap. 1.1 — de asymptotiske symbolene, og at
lgn=log2n\lg n = \log_2 n.

Summeformler brukes i hvert eneste iterasjonssvar. Er de ustøe:
Rekker og summasjon for 1+2++n=n(n+1)/21 + 2 + \dots + n = n(n+1)/2, og
Geometriske følger og rekker for
1+2+4++2n1=2n11 + 2 + 4 + \dots + 2^{n-1} = 2^n - 1.

Induksjon er hele substitusjonsmetoden. Grundig gjennomgang:
Induksjonsbevis. Mykere første møte:
Induksjon.

Er rekursjon som ferdighet fersk, er
Rekursjon — spore og skrive et godt sted å begynne, og
Søking: sekvensielt søk og binærsøk viser binærsøket i
kode før vi analyserer det her.

Notasjons- og pseudokodeliste

Iterasjonsmetoden og de eksakte svarene (~18 min)

Masterteoremet er raskt, men det kan bare to ting: kjenne igjen formen
aT(n/b)+f(n)aT(n/b) + f(n), og gi et asymptotisk svar. Kommer oppgaven med en rekurrens
der størrelsen krymper ved subtraksjonT(n)=T(n1)+noeT(n) = T(n-1) + \text{noe}
faller den utenfor. Og ber oppgaven om et eksakt uttrykk, er masterteoremet
ubrukelig uansett form.

Da bruker du iterasjonsmetoden: du setter rekurrensen inn i seg selv
gjentatte ganger, ser mønsteret, og summerer.

Iterasjonsmetoden
Iterasjonsmetoden løser en rekurrens ved å sette den inn i seg selv igjen
og igjen, til mønsteret er tydelig, og deretter summere leddene.

Framgangsmåten har fire steg: (1) skriv ut de tre–fire første innsettingene,
(2) skriv opp det generelle leddet etter ii innsettinger, (3) finn hvilken ii
som treffer grunntilfellet, og (4) summer.

Metoden gir et eksakt uttrykk, ikke en asymptotisk grense — og det er
nettopp derfor den etterspørres. Svarer du Θ(n2)\Theta(n^2) der oppgaven ba om et
eksakt uttrykk, har du ikke svart på spørsmålet.

✏️Eksempel 1: Et eksakt uttrykk ved teleskopering

Løs T(n)=T(n1)+nT(n) = T(n-1) + n med grunntilfellet T(0)=0T(0) = 0. Finn et eksakt
uttrykk for T(n)T(n).

Steg 1 — sett inn i seg selv.

T(n)=T(n1)+nT(n) = T(n-1) + n
T(n)=(T(n2)+(n1))+n=T(n2)+(n1)+nT(n) = \big(T(n-2) + (n-1)\big) + n = T(n-2) + (n-1) + n
T(n)=T(n3)+(n2)+(n1)+nT(n) = T(n-3) + (n-2) + (n-1) + n

Intuisjon: hver innsetting flytter oss ett hakk nedover og etterlater ett
ledd på gulvet. Leddene som blir liggende igjen, er nettopp tallene nn,
n1n-1, n2n-2 og så videre.

Steg 2 — det generelle leddet. Etter ii innsettinger:

T(n)=T(ni)+(ni+1)+(ni+2)++nT(n) = T(n-i) + (n-i+1) + (n-i+2) + \dots + n

Intuisjon: argumentet er sunket med ii, og vi har samlet opp de ii største
tallene opp til nn.

Steg 3 — treff grunntilfellet. Vi vil ha T(ni)=T(0)T(n-i) = T(0), altså i=ni = n. Da
blir

T(n)=T(0)+1+2++n=0+j=1njT(n) = T(0) + 1 + 2 + \dots + n = 0 + \sum_{j=1}^{n} j

Intuisjon: iterasjonen stopper når argumentet når bunnen. Er
grunntilfellet T(0)=0T(0)=0, bidrar det ingenting til summen.

Steg 4 — summer.

T(n)=n(n+1)2T(n) = \frac{n(n+1)}{2}

Svaret oppgaven ber om: T(n)=n(n+1)2T(n) = \dfrac{n(n+1)}{2}.

Kontroll: T(1)=1T(1) = 1, T(2)=3T(2) = 3, T(3)=6T(3) = 6 — og rekurrensen gir
T(1)=T(0)+1=1T(1) = T(0)+1 = 1, T(2)=1+2=3T(2) = 1+2 = 3, T(3)=3+3=6T(3) = 3+3 = 6. Stemmer.

Merk hva som skjer hvis oppgaven i stedet ba om en asymptotisk grense. Da
er svaret Θ(n2)\Theta(n^2), og det er en helt annen svarform. Les spørsmålet.

📝Oppgave 1

(Innstegsoppgave, sjanger B — rekurrensløsning med navngitt metode, altså at du
sier hvilken metode du bruker og oppgir svaret på riktig form.)

Løs T(n)=T(n1)+3T(n) = T(n-1) + 3 med T(0)=5T(0) = 5. Finn et eksakt uttrykk.

✏️Eksempel 2: Når arbeidet dobles nedover

Løs T(n)=T(n1)+2n1T(n) = T(n-1) + 2^{n-1} med T(0)=0T(0) = 0. Finn et eksakt uttrykk.

Steg 1 — sett inn.

T(n)=T(n1)+2n1T(n) = T(n-1) + 2^{n-1}
T(n)=T(n2)+2n2+2n1T(n) = T(n-2) + 2^{n-2} + 2^{n-1}
T(n)=T(n3)+2n3+2n2+2n1T(n) = T(n-3) + 2^{n-3} + 2^{n-2} + 2^{n-1}

Intuisjon: leddene som blir liggende igjen, er potenser av 2 — og de
halveres for hvert hakk nedover.

Steg 2 — det generelle leddet. Etter ii innsettinger:

T(n)=T(ni)+2ni+2ni+1++2n1T(n) = T(n-i) + 2^{n-i} + 2^{n-i+1} + \dots + 2^{n-1}

Steg 3 — treff grunntilfellet. Med i=ni = n får vi T(0)=0T(0) = 0, og summen
blir alle potensene fra 202^0 til 2n12^{n-1}.

Steg 4 — summer den geometriske rekken.

T(n)=j=0n12j=2n1T(n) = \sum_{j=0}^{n-1} 2^{j} = 2^n - 1

Intuisjon: summen av alle potenser opp til 2n12^{n-1} er nøyaktig én mindre
enn den neste potensen — det er den geometriske rekken med kvotient 2.

Svaret oppgaven ber om: T(n)=2n1T(n) = 2^n - 1.

Kontroll: T(1)=1T(1) = 1, T(2)=3T(2) = 3, T(3)=7T(3) = 7, T(4)=15T(4) = 15. Rekurrensen gir
T(1)=0+1=1T(1) = 0 + 1 = 1, T(2)=1+2=3T(2) = 1 + 2 = 3, T(3)=3+4=7T(3) = 3 + 4 = 7, T(4)=7+8=15T(4) = 7+8 = 15.
Stemmer.

Asymptotisk er dette Θ(2n)\Theta(2^n) — men det var ikke det oppgaven spurte om.

📝Oppgave 2
Eksamensnivå, sjanger B

Løs T(n)=2T(n1)+1T(n) = 2T(n-1) + 1 med T(0)=0T(0) = 0. Finn et eksakt uttrykk, og navngi
metoden.

📝Oppgave 3
Eksamensnivå, sjanger B

En rutine kaller seg selv på et array som er to elementer kortere, og gjør nn
enheter arbeid i hvert kall: T(n)=T(n2)+nT(n) = T(n-2) + n for like nn, med T(0)=0T(0) = 0.

Finn et eksakt uttrykk for like nn.

Substitusjonsmetoden (~15 min)

Den andre metoden svarer på et annet spørsmål. Iterasjon finner et svar;
substitusjon verifiserer et svar du allerede har gjettet.

Det høres bakvendt ut, men det er en fullverdig bevismetode — og det er den
oppgaven ber om når den sier «vis at T(n)=O(nlgn)T(n) = O(n\lg n)».

Substitusjonsmetoden
Substitusjonsmetoden løser en rekurrens i to trekk: gjett formen på
svaret, og bevis det ved induksjon.

Induksjonsbeviset har to deler: grunntilfellet (påstanden holder for de
minste nn-ene, med en passende konstant), og induksjonssteget (antar du at
påstanden holder for alle mindre argumenter, følger den for nn).

Det er induksjonssteget som gir uttelling. Å gjette riktig uten å føre
steget, er et halvt svar.

📜Induksjonssteget, ledd for ledd
Påstanden vi vil vise: T(n)cnlgnT(n) \le c\,n\lg n for en konstant c>0c > 0 og
alle nn0n \ge n_0, gitt rekurrensen T(n)=2T(n/2)+nT(n) = 2T(n/2) + n.

Induksjonshypotesen: anta at påstanden holder for alle argumenter mindre
enn nn, spesielt for n/2n/2:

T(n/2)cn2lgn2T(n/2) \le c\,\frac{n}{2}\lg\frac{n}{2}

Steget:

T(n)=2T(n/2)+n2cn2lgn2+n=cnlgn2+nT(n) = 2T(n/2) + n \le 2c\,\frac{n}{2}\lg\frac{n}{2} + n = c\,n\lg\frac{n}{2} + n

Intuisjon: vi har byttet ut det vi ikke kjenner, T(n/2)T(n/2), med det
hypotesen lover om det. Det er hele trikset.

=cn(lgnlg2)+n=cnlgncn+n= c\,n(\lg n - \lg 2) + n = c\,n\lg n - c\,n + n

Intuisjon: logaritmeregelen lg(n/2)=lgn1\lg(n/2) = \lg n - 1 gjør at det faller ut et
helt ledd cn-c\,n. Det leddet er reserven vår.

cnlgnna˚rcn+n0, altsa˚ na˚c1\le c\,n\lg n \quad\text{når}\quad -c\,n + n \le 0, \text{ altså når } c \ge 1

Intuisjon: vi er i mål så snart reserven cnc\,n er minst like stor som det
ekstra arbeidet nn på dette nivået.

Grunntilfellet: for n=2n = 2 er T(2)=2T(1)+2T(2) = 2T(1) + 2. Med T(1)T(1) konstant kan
vi velge cc stor nok til at T(2)c2lg2=2cT(2) \le c\cdot 2\lg 2 = 2c. Merk at n=1n = 1
ikke duger som grunntilfelle: c1lg1=0c\cdot 1 \cdot \lg 1 = 0, og T(1)>0T(1) > 0.

Konklusjon: T(n)=O(nlgn)T(n) = O(n\lg n).

Numerisk kontroll: for c=2c = 2 og T(1)=1T(1) = 1 er T(n)2nlgnT(n) \le 2n\lg n for alle
nn fra 2 til 4999 — sjekket ved å regne ut begge sider.

📝Oppgave 4
Eksamensnivå, sjanger B

Vis ved substitusjon at T(n)=T(n1)+nT(n) = T(n-1) + n gir T(n)=O(n2)T(n) = O(n^2).

Før induksjonssteget ferdig.

📝Oppgave 5
Eksamensnivå, sjanger…

En kandidat vil vise at T(n)=2T(n/2)+nT(n) = 2T(n/2) + n gir T(n)=O(n)T(n) = O(n), og skriver:

«Anta T(n/2)c(n/2)T(n/2) \le c\,(n/2). Da er T(n)2c(n/2)+n=cn+n=O(n)T(n) \le 2c(n/2) + n = cn + n = O(n)

Er beviset gyldig? Svar ja eller nei, og forklar nøyaktig hvor det svikter.

Splitt og hersk, og binærsøk (~16 min)

Rekurrensene kommer ikke fra ingenting. De kommer fra en bestemt måte å bygge
algoritmer på, og den er verdt å ha et navn på.

Splitt og hersk
Splitt og hersk er designteknikken der problemet deles i mindre deler av
samme type, delene løses rekursivt, og delløsningene settes sammen til et
svar på det opprinnelige problemet.

De tre stegene heter del, hersk og kombiner. Kjøretiden blir en
rekurrens T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n), der aa er antall delkall, bb er hvor mye
inputen krymper, og f(n)f(n) er del- og kombinasjonsarbeidet.

Delproblemene overlapper ikke — hvert delproblem løses nøyaktig én gang.
Det er dette som skiller teknikken fra dynamisk programmering, der de samme
delproblemene dukker opp igjen og igjen.

📜Pseudokode-kontrakt: `Bisect`
Antagelser om representasjon. Arrayet er A[1..n], indeks fra 1, og det er
sortert stigende. Rutinen er skrevet iterativt med to grenser lo og hi;
den rekursive varianten gjør nøyaktig det samme.

Prebetingelse: A[1..n] er sortert.
Postbetingelse: rutinen returnerer en indeks i med A[i] = v hvis v
finnes i arrayet, og NIL ellers.

Bisect(A, v)
  Input:  sortert array A[1..n] og en verdi v
  Output: en indeks i med A[i] = v, ellers NIL
  lo = 1
  hi = A.length
  while lo <= hi
      mid = floor((lo + hi) / 2)
      if A[mid] == v
          return mid
      else if A[mid] < v
          lo = mid + 1
      else
          hi = mid - 1
  return NIL
  Kjoeretid: Theta(lg n) verste

Invarianten i én setning: hvis v finnes i arrayet, ligger den i
A[lo..hi].

Kjøretid: hver runde halverer intervallet, og arbeidet per runde er
konstant, altså

T(n)=T(n/2)+Θ(1)    T(n)=Θ(lgn)T(n) = T(n/2) + \Theta(1) \;\Rightarrow\; T(n) = \Theta(\lg n)

Her er a=1a = 1 og b=2b = 2, så nlog21=n0=1n^{\log_2 1} = n^0 = 1, og f(n)=Θ(1)=Θ(n0lg0n)f(n) = \Theta(1) = \Theta(n^0\lg^0 n) treffer tilfelle 2 med k=0k = 0. Svaret blir
Θ(lg1n)=Θ(lgn)\Theta(\lg^1 n) = \Theta(\lg n).

Numerisk kontroll: verste antall runder er nøyaktig
lgn+1\lfloor \lg n\rfloor + 1 — kontrollert for alle nn fra 1 til 1999 ved å
regne ut den dypeste stien i søket.

Legg merke til at bare ÉN av de to halvdelene besøkes. Det er derfor
a=1a = 1, og det er derfor binærsøk er logaritmisk mens Merge-Sort, som må
inn i begge halvdelene, er Θ(nlgn)\Theta(n\lg n).

✏️Eksempel 3: Tre splitt-og-hersk-algoritmer, tre rekurrenser

For hver av de tre: sett opp rekurrensen og løs den. Oppgi metoden.

a) Binærsøk i et sortert array: én halvdel besøkes, konstant arbeid per
nivå.
b) Merge-Sort: begge halvdelene besøkes, lineær fletting.
c) En rutine som deler inputen i fire like deler, løser alle fire
rekursivt, og bruker lineær tid på å sette sammen.

a) T(n)=T(n/2)+Θ(1)T(n) = T(n/2) + \Theta(1).

Metode: masterteoremet. a=1a = 1, b=2b = 2, nlog21=1n^{\log_2 1} = 1, og
f(n)=Θ(1)f(n) = \Theta(1) — tilfelle 2 med k=0k = 0.

T(n)=Θ(lgn)T(n) = \Theta(\lg n)

b) T(n)=2T(n/2)+Θ(n)T(n) = 2T(n/2) + \Theta(n).

Metode: masterteoremet. a=2a = 2, b=2b = 2, nlog22=nn^{\log_2 2} = n, og
f(n)=Θ(n)f(n) = \Theta(n) — tilfelle 2 med k=0k = 0.

T(n)=Θ(nlgn)T(n) = \Theta(n\lg n)

c) T(n)=4T(n/4)+Θ(n)T(n) = 4T(n/4) + \Theta(n).

Metode: masterteoremet. a=4a = 4, b=4b = 4, nlog44=nn^{\log_4 4} = n, og
f(n)=Θ(n)f(n) = \Theta(n) — tilfelle 2 med k=0k = 0.

T(n)=Θ(nlgn)T(n) = \Theta(n\lg n)

Det som er verdt å legge merke til: b) og c) gir samme svar. Å dele i fire
i stedet for to endrer bare konstanten, ikke veksten. Det som virkelig
skiller a) fra de to andre, er at a) besøker én del i stedet for alle — og
det ser du på aa, ikke på bb.

Svarformen på eksamen: rekurrensen, metodenavnet, tilfellet og svaret. Fire
korte linjer per deloppgave.

📝Oppgave 6
Eksamensnivå, sjanger B

En rutine deler inputen i to halvdeler, går rekursivt inn i begge, og
bruker Θ(n2)\Theta(n^2) på å kombinere.

a) Sett opp rekurrensen.
b) Løs den med masterteoremet, og oppgi tilfellet.

📝Oppgave 7
Eksamensnivå, sjanger H

Et sortert array A[1..n] inneholder nn forskjellige heltall, som kan
være både negative og positive. Du skal avgjøre om det finnes en indeks ii
med A[i] = i, og i så fall oppgi en slik indeks.

Beskriv en algoritme som bruker O(lgn)O(\lg n) tid.

Antall nivåer, og hvilken metode når (~6 min)

Et fast delspørsmål er «hvor mange nivåer har rekursjonstreet?» — eller, i
noen formuleringer, «hvor mange ganger kalles rutinen på hverandre før den
stopper?»

Antall nivåer i rekursjonstreet

Dybden i rekursjonstreet til T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n) er Θ(logbn)\Theta(\log_b n):
det er hvor mange ganger nn kan deles på bb før du er nede på en konstant.

Tallet avhenger bare av bb, ikke av aa. Antall delkall aa styrer hvor
bredt treet blir — antall løvnoder er nlogban^{\log_b a} — men ikke hvor dypt.

For rekurrenser som krymper ved subtraksjon er dybden i stedet
Θ(n)\Theta(n): T(n)=T(n1)+f(n)T(n) = T(n-1) + f(n) trenger nn nivåer for å komme ned.

📝Oppgave 8
Eksamensnivå, sjanger B

For hver rekurrens: hvor mange nivåer har rekursjonstreet, og hvilken metode
ville du valgt for å løse den?

a) T(n)=3T(n/3)+nT(n) = 3T(n/3) + n
b) T(n)=T(n1)+lgnT(n) = T(n-1) + \lg n
c) T(n)=2T(n/4)+1T(n) = 2T(n/4) + 1

Metodevalget samlet

Rekurrensens formOppgaven ber omMetodeSvarform
aT(n/b)+f(n)aT(n/b) + f(n)asymptotisk grensemasterteoremetΘ()\Theta(\dots) + tilfellet
T(nc)+f(n)T(n-c) + f(n)asymptotisk eller eksaktiterasjonlukket uttrykk, evt. Θ()\Theta(\dots)
hvilken som helst«finn et eksakt uttrykk»iterasjonlukket uttrykk
hvilken som helst«vis at T(n)=O(g)T(n) = O(g)»substitusjoninduksjonssteget ført ferdig
hvilken som helst«hvor mange nivåer?»rekursjonstreetΘ(logbn)\Theta(\log_b n) eller Θ(n)\Theta(n)

De faste summene du trenger:
1+2++n=n(n+1)2,1+2+4++2n1=2n11 + 2 + \dots + n = \frac{n(n+1)}{2}, \qquad 1 + 2 + 4 + \dots + 2^{n-1} = 2^n - 1
1+12+14++12n<21 + \frac{1}{2} + \frac{1}{4} + \dots + \frac{1}{2^{n}} < 2
Den siste er grunnen til at T(n)=T(n/2)+Θ(n)T(n) = T(n/2) + \Theta(n) blir Θ(n)\Theta(n) og
ikke Θ(nlgn)\Theta(n\lg n): arbeidet halveres nedover, og summen konvergerer.

Begrepsbank

Begrepsbanken er flashcard- og repetisjonsstoff — den gjentar det du nettopp
har lest. Hopp trygt over ved førstegangslesing; tidsanslaget for kapitlet
gjelder kjernestoffet.

Iterasjonsmetoden

løser en rekurrens ved gjentatt innsetting i seg selv, til mønsteret er
tydelig, og summerer så leddene.

Gir et eksakt uttrykk, ikke en asymptotisk grense.

Krever at grunntilfellet tas med — det er en del av det eksakte svaret.

Teleskopering

navnet på at leddene i en iterasjon legger seg på rad slik at summen kan skrives
i lukket form.

T(n)=T(n1)+nT(n) = T(n-1) + n teleskoperer til 1+2++n1 + 2 + \dots + n.

Kjenn igjen summen — er det den aritmetiske eller den geometriske? Det er
det eneste regnetrikset metoden krever.

Substitusjonsmetoden

gjett svaret, og bevis det ved induksjon.

Består av grunntilfelle og induksjonssteg; det er steget som gir uttelling.

Induksjonssteget må ende på nøyaktig den formen du antok. Blir det et
restledd igjen, er gjetningen for optimistisk.

Induksjonshypotesen

antagelsen om at påstanden holder for alle argumenter mindre enn nn.

I substitusjon settes den inn i rekurrensen der det ukjente TT-uttrykket står.

Det er hele trikset: bytt ut det du ikke kjenner med det hypotesen lover om
det.

Splitt og hersk

designteknikken del, hersk og kombiner: problemet deles i mindre deler av samme
type, delene løses rekursivt, og delløsningene settes sammen.

Gir rekurrensen T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n).

Delproblemene overlapper ikke — hvert løses nøyaktig én gang. Det skiller
teknikken fra dynamisk programmering.

`Bisect` (binærsøk)

søker etter en verdi i et sortert array ved å halvere søkeintervallet i
hver runde.

Kjøretid Θ(lgn)\Theta(\lg n) i verste tilfelle; verste antall runder er
lgn+1\lfloor \lg n\rfloor + 1.

Krever at arrayet er sortert. Det er den eneste forutsetningen — og uten
den er svaret verdiløst.

Rekurrensen T(n)=T(n/2)+Θ(1)T(n) = T(n/2) + \Theta(1)

binærsøkets rekurrens: ett rekursivt kall på halve inputen, konstant arbeid per
nivå.

Løsning Θ(lgn)\Theta(\lg n), ved masterteoremets tilfelle 2 med k=0k = 0.

Merk a=1a = 1: bare én av de to halvdelene besøkes, og det er det som gjør
søket logaritmisk.

Rekurrensen T(n)=T(n1)+nT(n) = T(n-1) + n

den vanligste subtraksjonsrekurrensen: argumentet krymper med 1, arbeidet er
lineært.

Eksakt løsning n(n+1)/2n(n+1)/2 med T(0)=0T(0) = 0; asymptotisk Θ(n2)\Theta(n^2).

Masterteoremet gjelder ikke — formen er ikke aT(n/b)+f(n)aT(n/b) + f(n).

Rekurrensen T(n)=2T(n1)+1T(n) = 2T(n-1) + 1

dobling i hvert steg: koeffisienten foran TT dobles for hvert hakk nedover.

Eksakt løsning 2n12^n - 1 med T(0)=0T(0) = 0; asymptotisk Θ(2n)\Theta(2^n).

Eksponentiell vekst kommer av a=2a = 2 kombinert med subtraksjon — ikke av
arbeidet per steg, som her bare er 1.

Den aritmetiske summen
1+2+3++n=n(n+1)21 + 2 + 3 + \dots + n = \dfrac{n(n+1)}{2}.

Dukker opp hver gang en iterasjon legger til et ledd som vokser lineært.

Asymptotisk Θ(n2)\Theta(n^2) — men i et eksakt svar skal hele brøken stå.

Den geometriske summen
1+2+4++2n1=2n11 + 2 + 4 + \dots + 2^{n-1} = 2^n - 1, og mer generelt
j=0mrj=rm+11r1\sum_{j=0}^{m} r^j = \dfrac{r^{m+1}-1}{r-1} for r1r \ne 1.

Med kvotient under 1 konvergerer summen: 1+12+14+<21 + \tfrac12 + \tfrac14 + \dots < 2.

Den konvergente varianten er grunnen til at halverende arbeid gir lineær
total, ikke nlgnn\lg n.

Antall nivåer i rekursjonstreet
Θ(logbn)\Theta(\log_b n) for T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n), og Θ(n)\Theta(n) for
T(n)=T(nc)+f(n)T(n) = T(n-c) + f(n).

Avhenger bare av hvor mye argumentet krymper, ikke av antall delkall.

Antall løvnoder er derimot nlogban^{\log_b a}, og der teller aa.

Grunntilfellet i en rekurrens

verdien rekursjonen stopper på, typisk T(1)T(1) eller T(0)T(0).

For asymptotiske svar antas T(k)=Θ(1)T(k) = \Theta(1) for en konstant kk, og den
oppgitte verdien betyr som regel ingenting.

For eksakte svar betyr den alt — den er et ledd i uttrykket.

Eksakt mot asymptotisk svar

et eksakt uttrykk gir verdien til T(n)T(n) for hver nn; en asymptotisk
grense gir bare vekstklassen.

n(n+1)/2n(n+1)/2 er eksakt; Θ(n2)\Theta(n^2) er asymptotisk.

Les oppgaveteksten: ordet «eksakt» eller «lukket uttrykk» styrer hvilken av
de to som er riktig svar.

Felle #5 — feil bruk av masterteoremet

å bruke masterteoremet på en rekurrens som ikke er på formen
aT(n/b)+f(n)aT(n/b) + f(n), eller å velge feil tilfelle.

Typisk: å tvinge teoremet på T(n)=T(n1)+nT(n) = T(n-1) + n, eller å glemme
logaritmefaktoren i tilfelle 2.

Å påpeke at teoremet ikke gjelder, gir uttelling. Å bruke det likevel gir
et svar som ser riktig ut og er galt.

Sjanger B — rekurrensløsning med navngitt metode

oppgavetypen der du får en rekurrens og skal løse den.

Svarformen er metodens navn pluss svaret på riktig form — asymptotisk eller
eksakt — og for masterteoremet også hvilket tilfelle.

Metodenavnet er ett ord, og det er en del av det som gir uttelling.

Repetisjonsoppgaver

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.