[Oppgave] [Levering] [Løsningsforslag]
Innleveringsfrist: 07.10.2011 10:00
Du er logget inn og får derfor se om du har svart riktig/feil på de enkelte oppgavene. LF-svar er markert med grønt og feil svar er markert med rødt.
Hvis dere er uenige i fasit, oppfordres dere til å diskutere dette på algdats nyhetsgruppe. Denne nyhetsgruppen har også et webgrensesnitt.
Sett inn det manglende ordet.Merk at de øvre/nedre begrensningene bare gjelder for n >= n0 der n0 er en konstant.
a) At en algoritme har kjøretid O(f(n)), betyr at kjøretiden har en ... begrensning. (2.5 %)
b) At en algoritme har kjøretid Θ(f(n)), betyr at kjøretiden har en ... begrensning. (2.5 %)
c) At en algoritme har kjøretid Ω(f(n)), betyr at kjøretiden har en ... begrensning. (2.5 %)
Denne oppgaven tar for seg intuitiv forståelse av kjøretiden for gjennomgang av ulike datastrukturer. Angi alle svar med den asymptotiske notasjonen som gir mest informasjon. Dvs. de fleste kjøretider omfattes av O(nn), siden dette er en veldig høy øvre grense, mens Θ(f(n)) angir både en øvre og nedre grense og gir derfor mye mer informasjon.
a) Hva er tidskompleksiteten for å traversere ei lenka liste med n ulike elementer? (2.5 %)
b) Hva er tidskompleksiteten for å traversere lenkede lister med én milliard elementer? (5 %)
c) Hva er tidskompleksiteten for å traversere ei matrise med n rader og n kolonner? (2.5 %)
d) Hva er tidskompleksiteten for å traversere (gå gjennom alle elementene) en datastruktur med form som det første laget av en klinkekulepyramide (se bilde under), der n=antall rader? (2.5 %)
e) Hva er tidskompleksiteten for å traversere (gå gjennom alle elementene) en datastruktur med form som en pyramide (se bilde) med høyde n? (5 %)
f) Hva er tidskompleksiteten for en algoritme som ved iterasjon nummer i bruker i2 operasjoner? Algoritmen bruker n iterasjoner. (5 %)
Denne oppgaven tar for seg substitusjonsmetoden for å løse rekurrenser. Gitt rekurrensen T(n) = 2401T(n/7) + n3 T(1) = 1 Dersom vi skulle benyttet oss av substitusjonsmetoden og antatt at: T(n/2) <= c * n2/4 * log(n/2)
a) Hva håper vi å kunne bevise? (7.5 %)
b) Hvis du anvender master-teoremet på denne rekurrensen (se forelesning 5), hvilket tilfelle tilhører den? (2.5 %)
c) Hva blir kjøretiden? (valgfri fremgangsmåte) (2.5 %)
d) Hvis vi bytter ut n3 med n5 hvilket case får vi da hvis vi vil bruke Master-teoremet? (5 %)
Denne oppgaven dreier seg om variabelskifte. Merk at n1/2 = √n .
a) Løs rekurrensen gitt ved: T(n) = T(n1/2) + 1 (10 %)
Denne oppgaven handler om rekursjonstrær. Disse kan brukes som et hjelpemiddel for å gjette på en løsning til substitusjonsmetoden. Hver node i et rekursjonstre representerer en kostnad. I figuren under er det et eksempel for rekurrensen T(n) = 2T(n/2) + n, med T(1) = 1. Merk at rekursjonstreet har blitt tegnet trinnvis og at ikke hele er tegnet opp. Å tegne det trinnvis kan være lurt for å klare å se hvordan det fortsetter. I treet over ser vi at den interne kostnaden i hver node vil være n/2i der i er nivået noden befinner seg på (0-indeksert). Nivået til løvnodene finner vi ved å løse n/2i = 1: log2 2i = log2 n i log2 2 = log2 n i = log2 n Antallet noder på hvert nivå ser vi at er 2i. Antallet løvnoder er altså 2log2 n = n
Denne oppgaven handler om rekursjonstrær. Disse kan brukes som et hjelpemiddel for å gjette på en løsning til substitusjonsmetoden. Hver node i et rekursjonstre representerer en kostnad. I figuren under er det et eksempel for rekurrensen T(n) = 2T(n/2) + n, med T(1) = 1.
Merk at rekursjonstreet har blitt tegnet trinnvis og at ikke hele er tegnet opp. Å tegne det trinnvis kan være lurt for å klare å se hvordan det fortsetter. I treet over ser vi at den interne kostnaden i hver node vil være n/2i der i er nivået noden befinner seg på (0-indeksert).
Nivået til løvnodene finner vi ved å løse n/2i = 1: log2 2i = log2 n i log2 2 = log2 n i = log2 n Antallet noder på hvert nivå ser vi at er 2i. Antallet løvnoder er altså 2log2 n = n
a) Gitt rekurrensen T(n) = T(n/3) + T(n/2) + n, T(1) = 1. Hva er høyden til rekursjonstreet? (7.5 %)
Funksjonen gjoerNoe() har kjøretid Θ(1). def f1(i): gjoerNoe() if i <= 1: return f1(i // 2) f2(i - 2) def f2(i): gjoerNoe() if i <= 1: return f1(i // 2)
def f1(i): gjoerNoe() if i <= 1: return f1(i // 2) f2(i - 2) def f2(i): gjoerNoe() if i <= 1: return f1(i // 2)
a) Hva en kjøretiden til f1(n)? (Tips: Ikke prøv å regne ut nøyaktig.) (15 %)
f1(n)
I denne oppgaven skal du analysere kjøretiden til små funksjoner.funksjonen gjorNoe(n) har kjoretid Θ(n).
a) def funksjon1(n): if n > 0: funksjon1(n-42) funksjon1(42) gjorNoe(42) (5 %)
def funksjon1(n): if n > 0: funksjon1(n-42) funksjon1(42) gjorNoe(42)
b) def funksjon2(n): gjorNoe(n) if n >= 1: funksjon2(n//3) funksjon2(2*n//3) (7.5 %)
def funksjon2(n): gjorNoe(n) if n >= 1: funksjon2(n//3) funksjon2(2*n//3)
c) def funksjon3(n): gjorNoe(n//6) if n > 0: funksjon3(n/2-2) funksjon3(n/2-3) (7.5 %)
def funksjon3(n): gjorNoe(n//6) if n > 0: funksjon3(n/2-2) funksjon3(n/2-3)