Tilbake
1.4

1.4 Rekurrenser — masterteoremet

Masterteoremet for `T(n)=aT(n/b)+f(n)` — de tre tilfellene, inkludert log-faktor-tilfellet som er den faste fellen.

50 min
8 oppgaver
Rekurrensermasterteoremet
Din fremgang i kapitlet
0 / 8 oppgaver

Forkunnskaper

- Kapittel 1.1, Asymptotisk notasjon — de fem symbolene. Du trenger Θ\Theta,
OO og Ω\Omega, og du må kunne avgjøre hvilken av to funksjoner som vokser
raskest.
- Potenser og logaritmer — regneregler for potenser og logaritmer
fra R1. Masterteoremet bygger helt og holdent på uttrykket nlogban^{\log_b a}, og
du må kunne regne ut logba\log_b a for konkrete tall.

To notasjonspunkter før vi begynner. lgn\lg n betyr log2n\log_2 n — det er
CLRS-konvensjonen, og den brukes i hele boka. Og logba\log_b a er logaritmen til
aa med grunntall bb: det tallet du må opphøye bb i for å få aa. For eksempel
er log28=3\log_2 8 = 3, fordi 23=82^3 = 8.

Notasjons- og pseudokodeliste

Der rekurrensene kommer fra (~8 min)

Et bibliotek får inn en kasse med 800 innleverte bøker som skal settes i hylla i
riktig rekkefølge. Én person alene ville brukt hele dagen. I stedet deler du
kassa i to like store bunker, gir én bunke til hver av to medarbeidere som gjør
akkurat det samme med sin, og til slutt fletter du de to ferdig ordnede bunkene
sammen til én — noe som krever at du tar én bok om gangen og ser hvilken av de
to bunkene som har den neste i rekkefølgen.

Hvor lang tid tar det? Kall tiden for nn bøker T(n)T(n). De to medarbeiderne
bruker T(n/2)T(n/2) hver. Flettingen på slutten krever at du er innom hver bok én
gang, altså omtrent nn arbeidsenheter. Til sammen:

T(n)=2T(n/2)+nT(n) = 2T(n/2) + n

Dette er en rekurrens: en ligning som beskriver T(n)T(n) ved hjelp av TT av en
mindre inputstørrelse. Den er ikke et svar ennå — den sier ikke hvor lang tid
det faktisk tar. Å finne det lukkede uttrykket, altså å svare «T(n)T(n) er
Θ(nlgn)\Theta(n\lg n)», kalles å løse rekurrensen.

Nesten alle rekurrensene i dette faget ser like ut, fordi de kommer fra samme
type algoritme: del opp, løs delene, sett sammen. Det er derfor det finnes ett
verktøy som løser nesten alle på under et minutt.

Rekurrens

En ligning som uttrykker kjøretiden for et problem av størrelse nn ved hjelp av
kjøretiden for mindre inputstørrelser. Den beskriver arbeidet, men oppgir det
ikke — svaret må regnes fram.

Standardformen i dette faget er T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n): algoritmen lager aa
delproblemer av størrelse n/bn/b og bruker f(n)f(n) på alt annet.

Kravet for at masterteoremet skal kunne brukes, er at rekurrensen faktisk er på
denne formen — med a1a \ge 1 og b>1b > 1. Rekurrenser som T(n)=T(n1)+nT(n) = T(n-1) + n
krymper ved subtraksjon i stedet for divisjon og faller utenfor.

Grunntilfellet

Den minste inputen algoritmen ikke deler opp videre, og den verdien rekursjonen
stopper på. Uten et grunntilfelle er en rekurrens uendelig.

For algoritmiske rekurrenser antas T(k)=Θ(1)T(k) = \Theta(1) for en konstant kk — å
sortere ett element eller søke i et array med ett element tar konstant tid.

Kravet er mildere enn man skulle tro: et oppgitt grunntilfelle som T(0)=0T(0) = 0
eller T(1)=1T(1) = 1 er som regel uten betydning for det asymptotiske svaret, og
masterteoremet spør aldri etter det. Skal du derimot oppgi et eksakt
uttrykk, betyr grunntilfellet alt.

Hva de tre tallene betyr

Tre størrelser bestemmer alt, og de kan leses rett ut av rekurrensen:

- aa er hvor mange delproblemer algoritmen lager. I biblioteket er a=2a = 2,
fordi kassa deles i to bunker.
- bb er hvor mye mindre hvert delproblem er. Her er b=2b = 2, fordi hver
bunke er halvparten så stor.
- f(n)f(n) er arbeidet utenom rekursjonen: både oppdelingen på veien ned og
sammensettingen på veien opp. Her er f(n)=nf(n) = n, fra flettingen.

Legg merke til at aa og bb ikke behøver å være like. Deler du inn i tre bunker
men bare må jobbe videre med to av dem, er a=2a = 2 og b=3b = 3.

Masterteoremet består i å sammenligne to størrelser: arbeidet f(n)f(n) på toppen,
og uttrykket nlogban^{\log_b a}, som er antall løvnoder helt i bunnen av
rekursjonen. Den av de to som dominerer, bestemmer svaret. Er de like store,
kommer det en logaritme på kjøpet.

📜Masterteoremet
La T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n) med a1a \ge 1 og b>1b > 1. Sammenlign f(n)f(n) med
nlogban^{\log_b a}.

Tilfelle 1. Er f(n)=O(nlogbaε)f(n) = O(n^{\log_b a - \varepsilon}) for en konstant
ε>0\varepsilon > 0, så er

T(n)=Θ(nlogba)T(n) = \Theta(n^{\log_b a})

Tilfelle 2. Er f(n)=Θ(nlogbalgkn)f(n) = \Theta(n^{\log_b a}\lg^{k} n) med k0k \ge 0, så er

T(n)=Θ(nlogbalgk+1n)T(n) = \Theta(n^{\log_b a}\lg^{k+1} n)

Tilfelle 3. Er f(n)=Ω(nlogba+ε)f(n) = \Omega(n^{\log_b a + \varepsilon}) for en konstant
ε>0\varepsilon > 0, og regularitetsbetingelsen af(n/b)cf(n)af(n/b) \le c\,f(n) holder
for en konstant c<1c < 1 og alle store nok nn, så er

T(n)=Θ(f(n))T(n) = \Theta(f(n))

Legg merke til to detaljer i tilfelle 2, for begge er faste feilkilder. For det
første må kk være ikke-negativk=0k = 0 er tillatt og er det aller
vanligste tilfellet, siden lg0n=1\lg^0 n = 1. For det andre er svaret
lgk+1n\lg^{k+1} n, ikke lgkn\lg^k n: du legger til én logaritme, du beholder ikke den
du hadde.

I tilfelle 1 og 3 er ε\varepsilon derimot strengt positiv. Gapet mellom
f(n)f(n) og nlogban^{\log_b a} må være en hel potens av nn, ikke bare en logaritme.
Det er nettopp derfor tilfelle 2 finnes: den fanger opp mellomrommet der
avstanden er logaritmisk.

Intuisjon: Se på kolonnen med arbeid per nivå i figuren. Øverst gjør du
f(n)f(n). På neste nivå har du aa delproblemer som hver koster f(n/b)f(n/b), altså
af(n/b)af(n/b) til sammen. Slik fortsetter det nedover, og helt i bunnen sitter
nlogban^{\log_b a} løvnoder som hver koster konstant tid.

Tre ting kan skje med en slik kolonne. Enten vokser tallene nedover, og da er
det bunnen — løvnodene — som dominerer, og svaret blir Θ(nlogba)\Theta(n^{\log_b a}).
Det er tilfelle 1. Eller de synker nedover, og da dominerer toppen, og svaret
blir Θ(f(n))\Theta(f(n)). Det er tilfelle 3. Eller de er omtrent like store hele
veien, og da er svaret arbeidet per nivå ganger antall nivåer — og antall nivåer
er logbn\log_b n. Det er tilfelle 2, og det er derfra logaritmen i svaret kommer.

Du trenger ikke bevise noe av dette på eksamen. Men bildet gjør at du husker
hvorfor tilfelle 2 er det eneste som legger på en logaritme.

Uttrykket nlogban^{\log_b a}

Antall løvnoder i rekursjonstreet, altså hvor mye arbeid som ligger helt i
bunnen av rekursjonen. Det er den ene av de to størrelsene masterteoremet
sammenligner.

Regnes ut ved å ta logaritmen til aa med grunntall bb. For T(n)=2T(n/2)+nT(n)=2T(n/2)+n er
log22=1\log_2 2 = 1, altså n1=nn^1 = n. For T(n)=9T(n/3)+nT(n)=9T(n/3)+n er log39=2\log_3 9 = 2, altså
n2n^2.

Kravet er å regne dette først, hver eneste gang. Alle tre tilfellene er
formulert som en sammenligning mot nettopp dette uttrykket, så uten det kan du
ikke velge tilfelle.

✏️Eksempel 1: Bibliotekets egen rekurrens

Løs T(n)=2T(n/2)+nT(n) = 2T(n/2) + n med masterteoremet. Angi hvilket tilfelle du bruker.

Les av tallene. a=2a = 2, b=2b = 2, f(n)=nf(n) = n.

Regn ut nlogban^{\log_b a}. log22=1\log_2 2 = 1, så nlogba=n1=nn^{\log_b a} = n^1 = n.

Sammenlign. f(n)=nf(n) = n og nlogba=nn^{\log_b a} = n er samme funksjon. Da er
f(n)=Θ(nlogbalg0n)f(n) = \Theta(n^{\log_b a}\lg^0 n), altså tilfelle 2 med k=0k = 0 — husk at
lg0n=1\lg^0 n = 1.

Sett inn i tilfelle 2. Svaret er Θ(nlogbalgk+1n)\Theta(n^{\log_b a}\lg^{k+1} n) med
k+1=1k + 1 = 1:

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

Kortsvaret du leverer: masterteoremet, tilfelle 2 med k=0k = 0, gir
T(n)=Θ(nlgn)T(n) = \Theta(n\lg n).

Dette er Merge-Sorts rekurrens, og Θ(nlgn)\Theta(n\lg n) er den kjøretiden du
kommer til å møte igjen i Del 2. Legg merke til at k=0k = 0 er helt lovlig — det
er tvert imot det vanligste. Et krav om at kk måtte være strengt positiv, ville
utelukket nettopp denne rekurrensen fra teoremet.

📝Oppgave 1
Eksamensnivå, sjanger B

Gitt T(n)=4T(n/2)+nT(n) = 4T(n/2) + n.

a) Hva er aa, bb og f(n)f(n)?

b) Regn ut nlogban^{\log_b a}.

c) Hvilket tilfelle av masterteoremet gjelder, og hva blir T(n)T(n)?

De tre tilfellene, ett for ett (~14 min)

— naturlig pausepunkt —

Alle tre tilfellene er formulert som en sammenligning mellom f(n)f(n) og
nlogban^{\log_b a}. Rekkefølgen du bør gå fram i, er alltid den samme: regn ut
nlogban^{\log_b a}, sammenlign, velg tilfelle, sett inn.

Det som skiller tilfellene, er hvor stort gapet er:

Gapet mellom f(n)f(n) og nlogban^{\log_b a}TilfelleSvar
f(n)f(n) er en hel potens av nn mindre1Θ(nlogba)\Theta(n^{\log_b a})
de er like store, eventuelt med en logaritmefaktor mellom2Θ(nlogbalgk+1n)\Theta(n^{\log_b a}\lg^{k+1} n)
f(n)f(n) er en hel potens av nn større3Θ(f(n))\Theta(f(n))

«En hel potens av nn» er det ε\varepsilon-et står for. Er nlogba=n2n^{\log_b a} = n^2
og f(n)=nf(n) = n, er gapet en faktor nn, altså rikelig. Er f(n)=n2/lgnf(n) = n^2/\lg n, er
gapet bare en logaritme, og da holder det ikke til tilfelle 1.
Tilfelle 1 i masterteoremet

Det tilfellet der rekursjonen dominerer: arbeidet utenom er så lite at det er
løvnodene som bestemmer kjøretiden.

Betingelsen er f(n)=O(nlogbaε)f(n) = O(n^{\log_b a - \varepsilon}) for en konstant
ε>0\varepsilon > 0, og svaret er T(n)=Θ(nlogba)T(n) = \Theta(n^{\log_b a}).

Kravet som lett overses, er at ε\varepsilon må være strengt positiv: gapet
må være en hel potens av nn. At f(n)f(n) bare er litt mindre enn nlogban^{\log_b a},
for eksempel med en logaritmefaktor, er ikke nok.

✏️Eksempel 2: Rekursjonen dominerer

Løs T(n)=9T(n/3)+nT(n) = 9T(n/3) + n med masterteoremet, og angi tilfellet.

a=9a = 9, b=3b = 3, f(n)=nf(n) = n.

log39=2\log_3 9 = 2, fordi 32=93^2 = 9. Altså er nlogba=n2n^{\log_b a} = n^2.

Nå sammenligner vi f(n)=nf(n) = n med n2n^2. Gapet er en hel faktor nn: med
ε=1\varepsilon = 1 er n=O(n21)=O(n)n = O(n^{2-1}) = O(n), som stemmer. Betingelsen i
tilfelle 1 er oppfylt.

T(n)=Θ(n2)T(n) = \Theta(n^2)

Kortsvaret: masterteoremet, tilfelle 1, gir T(n)=Θ(n2)T(n) = \Theta(n^2).

Legg merke til at f(n)f(n) ikke dukker opp i svaret i det hele tatt når tilfelle 1
gjelder. Det er hele poenget: arbeidet på toppen er så lite at det drukner i
arbeidet nederst i treet.

📝Oppgave 2
Eksamensnivå, sjanger B

Løs med masterteoremet, og oppgi tilfellet:

a) T(n)=3T(n/2)+nT(n) = 3T(n/2) + n

b) T(n)=2T(n/2)+lgnT(n) = 2T(n/2) + \lg n

Tilfelle 2 i masterteoremet

Det tilfellet der arbeidet på toppen og arbeidet i bunnen er like store, slik at
hvert nivå i rekursjonstreet koster omtrent det samme.

Betingelsen er f(n)=Θ(nlogbalgkn)f(n) = \Theta(n^{\log_b a}\lg^{k} n) med k0k \ge 0, og svaret er
T(n)=Θ(nlogbalgk+1n)T(n) = \Theta(n^{\log_b a}\lg^{k+1} n).

Kravet er at kk er ikke-negativ. Den ekstra logaritmen i svaret kommer fra
antall nivåer i treet: like mye arbeid på hvert av logbn\log_b n nivåer gir én
logaritme ekstra.

Potensen kk i tilfelle 2

Antall logaritmefaktorer i f(n)f(n) utover nlogban^{\log_b a}. Den avgjør hvor mange
logaritmer som står i svaret, og den skal alltid leses av før du konkluderer.

Er f(n)=nlogbaf(n) = n^{\log_b a} glatt, er k=0k = 0 og svaret får én logaritme. Er
f(n)=nlogbalgnf(n) = n^{\log_b a}\lg n, er k=1k = 1 og svaret får to. Regelen er alltid
kk+1k \to k+1.

Kravet er at kk må være ikke-negativ. Er f(n)f(n) mindre enn nlogban^{\log_b a} med
en logaritmefaktor — altså k=1k = -1 — faller rekurrensen utenfor den varianten av
teoremet som brukes i dette faget.

📝Oppgave 3
Eksamensnivå, sjanger B

Løs med masterteoremet, og oppgi tilfellet og
verdien av kk:

a) T(n)=16T(n/4)+n2T(n) = 16T(n/4) + n^2

b) T(n)=2T(n/2)+nlgnT(n) = 2T(n/2) + n\lg n

Tilfelle 3 i masterteoremet

Det tilfellet der arbeidet på toppen dominerer: oppdelingen og sammensettingen
koster så mye at rekursjonen blir uvesentlig.

Betingelsen er f(n)=Ω(nlogba+ε)f(n) = \Omega(n^{\log_b a + \varepsilon}) for en konstant
ε>0\varepsilon > 0, og svaret er T(n)=Θ(f(n))T(n) = \Theta(f(n)).

Kravet som skiller dette tilfellet fra de to andre, er at det har to
betingelser: gapet må være en hel potens av nn, og i tillegg må
regularitetsbetingelsen holde.

Regularitetsbetingelsen

Tilleggskravet i tilfelle 3: arbeidet på ett nivå skal være en fast brøkdel
mindre enn arbeidet på nivået over, slik at summen nedover faktisk krymper.

Formelt: af(n/b)cf(n)af(n/b) \le c\,f(n) for en konstant c<1c < 1 og alle store nok nn.

Kravet er nesten alltid oppfylt for de f(n)f(n)-ene som dukker opp på eksamen —
polynomer og polynomer ganger logaritmer. For T(n)=2T(n/2)+n2T(n)=2T(n/2)+n^2 er
2(n/2)2=n2/22(n/2)^2 = n^2/2, altså c=1/2c = 1/2, og betingelsen holder. Skriv én linje om
den når du bruker tilfelle 3; det er den linja løsningsforslagene ser etter.

✏️Eksempel 3: Arbeidet på toppen dominerer

Løs T(n)=2T(n/2)+n2T(n) = 2T(n/2) + n^2 med masterteoremet. Angi tilfellet, og vis at
tilleggsbetingelsen holder.

a=2a = 2, b=2b = 2, f(n)=n2f(n) = n^2.

log22=1\log_2 2 = 1, så nlogba=nn^{\log_b a} = n.

Nå er f(n)=n2f(n) = n^2 større enn nn, og gapet er en hel faktor nn: med
ε=1\varepsilon = 1 er n2=Ω(n1+1)n^2 = \Omega(n^{1+1}). Første betingelse i tilfelle 3 er
oppfylt.

Regularitetsbetingelsen. Vi må vise at af(n/b)cf(n)af(n/b) \le c\,f(n) for en
c<1c < 1:

2(n2)2=2n24=n222\left(\frac{n}{2}\right)^2 = 2\cdot\frac{n^2}{4} = \frac{n^2}{2}

Det er 12f(n)\tfrac{1}{2}\,f(n), så c=12<1c = \tfrac{1}{2} < 1 virker. Betingelsen
holder.

T(n)=Θ(n2)T(n) = \Theta(n^2)

Kortsvaret: masterteoremet, tilfelle 3 (regularitetsbetingelsen holder med
c=1/2c = 1/2), gir T(n)=Θ(n2)T(n) = \Theta(n^2).

Merk kontrasten til eksempel 1: samme aa og bb, men et tyngre f(n)f(n), og
svaret blir noe helt annet. Det er f(n)f(n) alene som står i svaret her — ingen
logaritme kommer i tillegg.

📝Oppgave 4
Eksamensnivå, sjanger B

Løs med masterteoremet. Oppgi tilfellet, og skriv én
linje om regularitetsbetingelsen der den er relevant.

a) T(n)=8T(n/4)+n2T(n) = 8T(n/4) + n^2

b) T(n)=2T(n/4)+nT(n) = 2T(n/4) + n

Log-faktoren — den faste fellen (~12 min)

— naturlig pausepunkt —

Nå kommer den enkeltdetaljen som avgjør flest poeng i sjanger B. Når f(n)f(n)
matcher nlogban^{\log_b a} opp til en logaritme, er du i tilfelle 2 — og svaret
får én logaritme mer enn f(n)f(n) hadde.

Feilen ser slik ut i praksis. Du har T(n)=4T(n/2)+n2lgnT(n) = 4T(n/2) + n^2\lg n, regner ut at
log24=2\log_2 4 = 2, ser at f(n)f(n) er «omtrent n2n^2», og svarer Θ(n2)\Theta(n^2) eller
Θ(n2lgn)\Theta(n^2\lg n). Begge er gale. Riktig svar er Θ(n2lg2n)\Theta(n^2\lg^2 n).

Grepet som fjerner feilen er å skrive f(n)f(n) eksplisitt på formen
nlogbalgknn^{\log_b a}\lg^k n før du konkluderer, og lese av kk derfra. Da blir svaret
mekanisk: bytt kk med k+1k+1.

✏️Eksempel 4: Logaritmen som må telles

Løs T(n)=4T(n/2)+n2lgnT(n) = 4T(n/2) + n^2\lg n med masterteoremet. Angi tilfellet og verdien av
kk, og forklar med én setning hvorfor tilfelle 3 ikke gjelder.

a=4a = 4, b=2b = 2, f(n)=n2lgnf(n) = n^2\lg n.

log24=2\log_2 4 = 2, så nlogba=n2n^{\log_b a} = n^2.

Skriv f(n)f(n) på riktig form. f(n)=n2lgn=nlogbalg1nf(n) = n^2\lg n = n^{\log_b a}\lg^1 n, altså
tilfelle 2 med k=1k = 1.

Sett inn. Svaret er Θ(nlogbalgk+1n)\Theta(n^{\log_b a}\lg^{k+1} n) med k+1=2k + 1 = 2:

T(n)=Θ(n2lg2n)T(n) = \Theta(n^2\lg^2 n)

Hvorfor ikke tilfelle 3? Fordi f(n)f(n) bare er en logaritme større enn
nlogban^{\log_b a}, ikke en hel potens av nn: det finnes ingen ε>0\varepsilon > 0
med n2lgn=Ω(n2+ε)n^2\lg n = \Omega(n^{2+\varepsilon}), siden lgn\lg n vokser langsommere enn
enhver positiv potens av nn.

Kortsvaret: masterteoremet, tilfelle 2 med k=1k = 1, gir
T(n)=Θ(n2lg2n)T(n) = \Theta(n^2\lg^2 n).

Legg merke til at lg2n\lg^2 n betyr (lgn)2(\lg n)^2, ikke lg(lgn)\lg(\lg n). Skriver du det
siste, har du svart på noe annet.

📝Oppgave 5
Eksamensnivå, sjanger B

Løs med masterteoremet. Oppgi tilfellet og kk der
tilfelle 2 gjelder.

a) T(n)=27T(n/3)+n3lgnT(n) = 27T(n/3) + n^3\lg n

b) T(n)=64T(n/4)+n3T(n) = 64T(n/4) + n^3

c) T(n)=7T(n/2)+n2T(n) = 7T(n/2) + n^2

📝Oppgave 6
Eksamensnivå, sjanger B

Betrakt T(n)=2T(n/2)+nlgnT(n) = 2T(n/2) + \dfrac{n}{\lg n}.

a) Regn ut nlogban^{\log_b a} og skriv f(n)f(n) på formen nlogbalgknn^{\log_b a}\lg^k n.
Hva blir kk?

b) Kan du bruke masterteoremet slik det er formulert i dette kapitlet?
Begrunn.

c) Hva er riktig svar på en slik oppgave på eksamen?

Antall nivåer og grunntilfellet (~8 min)

Et fast delspørsmål er hvor mange nivåer rekursjonstreet har. Svaret følger av
figuren tidligere i kapitlet: hvert nivå deler størrelsen på bb, og du er
framme ved grunntilfellet når nn er krympet ned til en konstant. Antall
halveringer, tredelinger eller hva det nå er, er logbn\log_b n:

Θ(logbn)\Theta(\log_b n)

Legg merke til at aa ikke er med. Hvor mange delproblemer hvert nivå lager,
påvirker hvor bredt treet er, ikke hvor dypt. Bredden er nlogban^{\log_b a}
løvnoder; dybden er logbn\log_b n nivåer.

Legg også merke til at grunntallet i logaritmen ikke betyr noe asymptotisk.
Θ(logbn)\Theta(\log_b n) og Θ(lgn)\Theta(\lg n) er samme klasse, siden logaritmer med ulikt
grunntall skiller seg med en konstant faktor. Blir du spurt om et konkret tall
— «hvor mange nivåer har treet for n=1024n = 1024 når b=2b = 2?» — må du derimot
regne med riktig grunntall: log21024=10\log_2 1024 = 10 nivåer under rota, altså 11
nivåer i alt hvis du teller rota med.

Antall nivåer i rekursjonstreet

Hvor dypt rekursjonen går før den treffer grunntilfellet. Det er antall ganger
du kan dele nnbb før du er nede på en konstant.

Svaret er Θ(logbn)\Theta(\log_b n), og siden logaritmer med ulikt grunntall skiller seg
med en konstant faktor, er det samme klasse som Θ(lgn)\Theta(\lg n).

Kravet er å ikke blande dybde og bredde: aa påvirker antall løvnoder
(nlogban^{\log_b a}), ikke antall nivåer. For b=2b = 2 og n=1024n = 1024 er det 10 nivåer
under rota, altså 11 nivåer i alt.

📝Oppgave 7
Eksamensnivå, sjanger B

Gitt T(n)=2T(n/4)+nT(n) = 2T(n/4) + n.

a) Hvor mange nivåer har rekursjonstreet, asymptotisk?

b) Hvor mange løvnoder har det?

c) Løs rekurrensen med masterteoremet, og oppgi tilfellet.

Når masterteoremet ikke gjelder (~8 min)

Masterteoremet er et verktøy med en tydelig bruksanvisning, og et av de
vanligste tapene i sjanger B er å bruke det på en rekurrens det ikke dekker.
Fire situasjoner er verdt å kjenne igjen med det samme:

- Størrelsen krymper ved subtraksjon. T(n)=T(n1)+nT(n) = T(n-1) + n er ikke på formen
aT(n/b)+f(n)aT(n/b) + f(n) i det hele tatt. Slike løses med iterasjonsmetoden, som hører
hjemme i kapittel 1.5.
- Delene er ulikt store. T(n)=T(n/3)+T(2n/3)+nT(n) = T(n/3) + T(2n/3) + n har to ulike
delproblemstørrelser, og teoremet forutsetter én felles bb.
- f(n)f(n) ligger i gapet. T(n)=2T(n/2)+n/lgnT(n) = 2T(n/2) + n/\lg n er på riktig form, men
f(n)f(n) treffer verken tilfelle 1, 2 eller 3.
- aa eller bb er ulovlig. Kravene er a1a \ge 1 og b>1b > 1. En «rekurrens»
med b=1b = 1 krymper aldri.

I alle fire tilfellene er riktig eksamenssvar å si at masterteoremet ikke
gjelder, og hvorfor. Sjanger B ber om metodens navn, og «masterteoremet gjelder
ikke her, fordi rekurrensen ikke er på formen aT(n/b)+f(n)aT(n/b)+f(n)» er et helt svar.

Rekurrenser masterteoremet ikke dekker

De rekurrensene som faller utenfor bruksområdet, og som derfor krever en annen
metode.

Fire typer: størrelsen krymper ved subtraksjon (T(n)=T(n1)+nT(n)=T(n-1)+n), delene er
ulikt store (T(n)=T(n/3)+T(2n/3)+nT(n)=T(n/3)+T(2n/3)+n), f(n)f(n) ligger i gapet mellom tilfellene
(T(n)=2T(n/2)+n/lgnT(n)=2T(n/2)+n/\lg n), eller a<1a < 1 eller b1b \le 1.

Kravet er å si det høyt i besvarelsen. Å tvinge teoremet på en slik rekurrens
gir et svar som ser riktig ut og er galt — og å påpeke at det ikke gjelder, gir
uttelling.

📝Oppgave 8
Eksamensnivå, sjanger B

For hver av rekurrensene under: avgjør om
masterteoremet gjelder, og løs den hvis det gjør det. Oppgi tilfellet.

a) T(n)=4T(n/2)+n3T(n) = 4T(n/2) + n^3

b) T(n)=4T(n/2)+n2T(n) = 4T(n/2) + n^2

c) T(n)=T(n1)+n2T(n) = T(n-1) + n^2

d) T(n)=5T(n/5)+nT(n) = 5T(n/5) + n

Eksempeltabellen du bør kjenne igjen

Disse rekurrensene dukker opp igjen og igjen, og de dekker alle tre tilfellene.
Kjenner du dem igjen på formen, sparer du et halvt minutt per oppgave.

Rekurrensnlogban^{\log_b a}TilfelleSvarHvor den kommer fra
T(n)=2T(n/2)+nT(n)=2T(n/2)+nnn2, k=0k=0Θ(nlgn)\Theta(n\lg n)Merge-Sort
T(n)=T(n/2)+1T(n)=T(n/2)+1112, k=0k=0Θ(lgn)\Theta(\lg n)Binary-Search
T(n)=9T(n/3)+nT(n)=9T(n/3)+nn2n^21Θ(n2)\Theta(n^2)rekursjonen dominerer
T(n)=4T(n/2)+n2lgnT(n)=4T(n/2)+n^2\lg nn2n^22, k=1k=1Θ(n2lg2n)\Theta(n^2\lg^2 n)log-faktor-fellen
T(n)=2T(n/2)+n2T(n)=2T(n/2)+n^2nn3Θ(n2)\Theta(n^2)toppen dominerer
T(n)=8T(n/2)+n3T(n)=8T(n/2)+n^3n3n^32, k=0k=0Θ(n3lgn)\Theta(n^3\lg n)glemt logaritme
T(n)=2T(n/2)+n/lgnT(n)=2T(n/2)+n/\lg nnningenk=1k=-1, utenfor teoremet

Den andre raden er verdt en kommentar. T(n)=T(n/2)+1T(n)=T(n/2)+1 har a=1a = 1, altså bare
ett delproblem, og log21=0\log_2 1 = 0, så nlogba=n0=1n^{\log_b a} = n^0 = 1. Siden f(n)=1f(n) = 1
er nøyaktig det samme, er dette tilfelle 2 med k=0k = 0, og svaret blir
Θ(1lgn)=Θ(lgn)\Theta(1\cdot\lg n) = \Theta(\lg n). Det er kjøretiden til Binary-Search.

Begrepsbank

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

Masterteoremets standardform

Den formen en rekurrens må ha for at teoremet skal kunne brukes: aa like store
delproblemer av størrelse n/bn/b, pluss f(n)f(n) arbeid utenom rekursjonen.

Skrevet ut: T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n) med a1a \ge 1 og b>1b > 1.

Kravene på aa og bb er ufravikelige. Er b=1b = 1, krymper problemet aldri; er
a<1a < 1, gir rekursjonen ingen mening. Og delene må være like store — én felles
bb for alle delproblemene.

Konstanten ε\varepsilon i tilfelle 1 og 3

Størrelsen på gapet mellom f(n)f(n) og nlogban^{\log_b a}, målt i potenser av nn.
Den finnes bare i tilfelle 1 og 3, og den må være strengt positiv.

I tilfelle 1 skal f(n)=O(nlogbaε)f(n) = O(n^{\log_b a - \varepsilon}); i tilfelle 3 skal
f(n)=Ω(nlogba+ε)f(n) = \Omega(n^{\log_b a + \varepsilon}).

Kravet betyr i praksis at gapet må være en hel potens av nn. Er avstanden bare
en logaritme, finnes ingen slik ε\varepsilon, og du er i tilfelle 2 i stedet.
Det er nettopp derfor tilfelle 2 må finnes.

Å regne ut logba\log_b a

Det første steget i enhver masterteorem-oppgave: finn det tallet du må opphøye
bb i for å få aa.

Eksempler: log24=2\log_2 4 = 2 fordi 22=42^2 = 4; log39=2\log_3 9 = 2 fordi 32=93^2 = 9;
log48=3/2\log_4 8 = 3/2 fordi 41,5=84^{1{,}5} = 8; log55=1\log_5 5 = 1; log21=0\log_2 1 = 0.

Kravet er å ha grunntallet riktig vei: bb er grunntallet og aa er argumentet.
log28=3\log_2 8 = 3, mens log82=1/3\log_8 2 = 1/3 — en ombytting her gir feil tilfelle og
feil svar. Verdien behøver ikke være et helt tall.

Felle #5 — feil masterteorem-tilfelle

Den vanligste feilen i rekurrensoppgaver: å velge tilfelle på øyemål i stedet
for å regne.

Tre former: glemt logaritmefaktor når f(n)=Θ(nlogba)f(n) = \Theta(n^{\log_b a}), bruk av
tilfelle 2 med negativ kk, og feil utregnet logba\log_b a.

Kravet som fjerner alle tre, er å skrive nlogban^{\log_b a} eksplisitt, deretter
f(n)f(n) på formen nlogbalgknn^{\log_b a}\lg^k n, og først da velge tilfelle. To ekstra
linjer på kladden, og fellen er borte.

Sjanger B — rekurrensløsning

Oppgavetypen dette kapitlet trener: du får en rekurrens og skal oppgi hva den
løser til.

Den er med i 76 % (13 av de 17 settene i grunnlaget). Svarformen er 1–3 linjer:
metodens navn, svaret på riktig form, og hvilket masterteorem-tilfelle du
brukte.

Kravet som skiller full fra delvis uttelling, er at metoden navngis. Å skrive
bare Θ(nlgn)\Theta(n\lg n) uten å si «masterteoremet, tilfelle 2» besvarer ikke hele
spørsmålet.

Rekurrensen T(n)=2T(n/2)+nT(n)=2T(n/2)+n

Rekurrensen for Merge-Sort og for enhver algoritme som deler problemet i to
like halvdeler og bruker lineær tid på å sette dem sammen igjen.

Her er log22=1\log_2 2 = 1, så nlogba=nn^{\log_b a} = n, som er nøyaktig f(n)f(n). Tilfelle 2
med k=0k = 0 gir Θ(nlgn)\Theta(n\lg n).

Kravet du bør merke deg, er at k=0k = 0 er lovlig. Med et krav om strengt
positiv kk ville denne aller mest sentrale rekurrensen falt utenfor teoremet.

Rekurrensen T(n)=T(n/2)+1T(n)=T(n/2)+1

Rekurrensen for Binary-Search og for enhver algoritme som halverer
søkeområdet og gjør konstant arbeid per steg.

Her er a=1a = 1 og log21=0\log_2 1 = 0, så nlogba=n0=1n^{\log_b a} = n^0 = 1, som er nøyaktig
f(n)f(n). Tilfelle 2 med k=0k = 0 gir Θ(lgn)\Theta(\lg n).

Kravet som overrasker, er at a=1a = 1 er tillatt — teoremet krever a1a \ge 1, ikke
a>1a > 1. Én rekursiv gren er nok.

Dybde mot bredde i rekursjonstreet

To ulike størrelser som ofte forveksles. Dybden er hvor mange nivåer treet har;
bredden er hvor mange løvnoder det ender med.

Dybden er Θ(logbn)\Theta(\log_b n) og styres av bb alene. Bredden er nlogban^{\log_b a} og
styres av både aa og bb.

Kravet er å lese spørsmålet nøye: «hvor mange nivåer?» og «hvor mye arbeid gjøres
i bunnen?» har ulike svar, og delspørsmålet om nivåer går igjen i grunnlaget.

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.