Divide-and-Conquer II

Like dokumenter
Divide-and-Conquer. Lars Vidar Magnusson

Quicksort. Lars Vidar Magnusson Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort

Spenntrær, oppsummert: Kruskal: Traverserer ikke. Plukker kanter i hytt og vær Prim: Legger alltid til den noden som er nærmest treet

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Kjøretidsanalyse. Hogne Jørgensen

Ninety-nine bottles. Femte forelesning. I dagens forelesning: Mest matematiske verktøy. Først: Asymptotisk notasjon. Så: Rekurrensligninger.

LO118D Forelesning 2 (DM)

Analyse av Algoritmer

LO118D Forelesning 12 (DM)

Grådige algoritmer. Lars Vidar Magnusson Kapittel 16. Aktivitetvelgingsproblemet Huffmankoder

Sortering i Lineær Tid

Løsningsforslag for Obligatorisk Oppgave 1. Algoritmer og Datastrukturer ITF20006

n/b log b n = (lg n) a log b n = n log b a

Lars Vidar Magnusson

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Høgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson

Løsnings forslag i java In115, Våren 1998

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Eksamen i tdt4120 Algoritmer og datastrukturer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

Læringsmål og pensum. Algoritmeeffektivitet

Lars Vidar Magnusson

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

deeegimnoorrrsstt Sjette forelesning

Kondisjonstest. Algoritmer og datastrukturer. Repetisjonsoppgaver - LF. Onsdag 6. oktober 2004

Lars Vidar Magnusson Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting

Hashtabeller. Lars Vidar Magnusson Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

Løsningsforslag for utvalgte oppgaver fra kapittel 3

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

INF2220: Time 8 og 9 - Kompleksitet, beregnbarhet og kombinatorisk søk

Algdat-ninja på 60 minutter: Et galskapsprosjekt. Magnus Lie Hetland

Grunnleggende Grafalgoritmer III

INF2220: Forelesning 2

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Minimum Spenntrær - Kruskal & Prim

Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl

Computational Geometry

Eksamenshefte TDT4120 Algoritmer og datastrukturer

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Grunnleggende Grafalgoritmer

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Rekursiv programmering

deeegimnoorrrsstt Sjette forelesning

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

INF2220: Time 12 - Sortering

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Rekursiv programmering

Algdat Eksamensforelesning. Nils Barlaug

To geometriske algoritmer, kap. 8.6

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Et eksempel: Åtterspillet

Minimum spenntrær. Lars Vidar Magnusson Kapittel 23. Kruskal Prim

Om Kurset og Analyse av Algoritmer

INF Algoritmer og datastrukturer

Binære Søketre. Egenskap. Egenskap : Grafisk. Egenskap : Kjøretid. Egenskap : Kjøretid. Egenskap : Oppsumering. Binære Søketre

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

Denne følgen har N+1 ledd. En generell uendelig følge kan settes opp slik:

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

Prioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper

Algoritme-Analyse. Asymptotisk ytelse. Sammenligning av kjøretid. Konstanter mot n. Algoritme-kompeksitet. Hva er størrelsen (n) av et problem?

Grunnleggende Grafalgoritmer II

Uke 5 Disjunkte mengder

PG4200 Algoritmer og datastrukturer Forelesning 3 Rekursjon Estimering

INF2220: Time 4 - Heap, Huffmann

Definisjon av binært søketre

MAT1030 Diskret Matematikk

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Dynamisk programmering

Et eksempel: Åtterspillet

Logaritmiske sorteringsalgoritmer

INF Algoritmer og datastrukturer

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

INF Algoritmer og datastrukturer

Kap 9 Tre Sist oppdatert 15.03

Avsluttende eksamen i IT1105/TDT4120 Algoritmer og datastrukturer

Disjunkte mengder ADT

INF2810: Funksjonell Programmering. Trær og mengder

kap. 8.6 Computational Geometry Hovedkapittelet (kap. 8) dreier seg generelt om devide-and-conquer eller splitt og hersk :

Oppsummering. MAT1030 Diskret matematikk. Oppsummering. Oppsummering. Eksempel

Longest. increasing. subsequence. Betingelser. Matrise- common. Grådig vs. DP. Forside. Intro. Fibonacci-tall. Memoisering DP

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

INF Algoritmer og datastrukturer

Matematikk 1 (TMA4100)

Algoritmer og Datastrukturer IAI 21899

Transkript:

Divide-and-Conquer II Lars Vidar Magnusson 1712014 Kapittel 4 Analyse av divide-and-conquer algoritmer ved hjelp av rekursjonstrær Analyse av divide-and-conquer algoritmer ved hjelp av masterteoremet

Løse Recurrences med Rekursjonstrær Rekursjonstrær er et alternativ til substitusjonsmetoden for å løse recurrences Rekursjonstrær er en kraftfull metode som kan brukes for å løse alle recurrence ligninger Den vanligste bruken er som et komplement til substitusjonsmetoden ved at man bruker rekursjonstrær for å komme frem til en gjetning Rekursjonstrær kan brukes for å løse en recurrence direkte, men dette krever nøyaktighet Man kan ofte tillate seg litt unøyaktigheter hvis man bare skal komme fram til en gjetning

Et Eksempel - T (n) = 2T (n/2) + Θ(n) La oss ta en titt på recurrence ligningen som beskriver både Merge-Sort og Find-Maximum-Subarray { Θ(1) if n = 1 T (n) = 2T (n/2) + Θ(n) if n > 1 Kjøretiden er konstant når n = 1 Når n > 1 så gjør vi to rekursive kall med halve input, og vi har en intern kostnad Θ(n) relatert til sammenslåingen i Merge-Sort og det å finne maksimum sum som spenner over midtpunktet i Find-Maximum-Subarray

Et Eksempel - Første Steg Første steg i rekursjonen kan sees i diagrammet under

Et Eksempel - Andre Steg Andre steg i rekursjonen kan sees i diagrammet under

Et Eksempel - Fullt Tre Det fulle treet sammen med kostnader for hvert nivå og treets dybde kan sees under

Et Eksempel - Analyse av Treet Når trærne er balanserte og kostnaden på hvert nivå er lik kan vi ganske enkelt finne en øvre grense bare ved å multplisere kostnaden på hvert nivå med høyden T (n) = cn log n = O(n log n)

Et Annet Eksempel - T (n) = 3T (n/4) + Θ(n 2 ) La oss ta en titt på et annet eksempel { Θ(1) if n = 1 T (n) = 3T (n/4) + Θ(n 2 ) if n > 1 Den interne kostnaden er Θ(n 2 ) Dette kan vi erstatte med cn 2 for en konstant c > 0

Et Annet Eksempel - Første Steg Det første steget cn 2 T ( n 4 ) T ( n 4 ) T ( n 4 )

Et Annet Eksempel - Andre Steg Det andre steget cn 2 c( n 4 )2 c( n 4 )2 c( n 4 )2 T ( n 16 ) T ( n 16 ) T ( n 16 ) T ( n 16 ) T ( n 16 ) T ( n 16 ) T ( n 16 ) T ( n 16 ) T ( n 16 )

Et Annet Eksempel - Det Fulle Rekursjonstreet Det fulle rekursjonstreet cn 2 c( n 4 )2 c( n 4 )2 c( n 4 )2 c( n 16 )2 c( n 16 )2 c( n 16 )2 c( n 16 )2 c( n 16 )2 c( n 16 )2 c( n 16 )2 c( n 16 )2 c( n 16 )2 T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1) T (1)

Et Annet Eksempel - Analysere Treet Kostnaden på rotnivå kan leses av direkte cn 2 Kostnaden på første nivå er summen av alle tre nodene 3 16 cn2 Kostnaden på nivå i er summen av alle nodene ( 3 16 )i cn 2 Høyden til treet kan regnes ut ved å se når n = 1 n/4 i = 1 4 i = n i = log 4 n Antall noder i bunnen av treet er 3 log 4 n = n log 4 3 = Θ(n log 4 3 )

Et Annet Eksempel - Analysere Treet Siden vi i dette eksempelet ikke har samme kostnad på hvert nivå må vi ty til å summere alle kostnadene T (n) = cn 2 + 3 ( ) 3 2 ( ) 3 log4 16 cn2 + cn 2 n 1 + + cn 2 + Θ(n log 4 3 ) 16 16 log 4 n 1 ( ) 3 i = cn 2 + Θ(n log 4 3 ) 16 i=0 ( ) 3 i < cn 2 + Θ(n log 4 3 ) en uendelig geometrisk minkende serie 16 i=0 1 = 1 (3/16) cn2 + Θ(n log 4 3 ) = 16 13 cn2 + Θ(n log 4 3 ) = O(n 2 ) Utifra dette kan vi si at kostnaden i roten av treet dominerer kostnaden til treet Siden denne kostnaden er Θ(n 2 ) så må Ω(n 2 ) være en nedre grense for recurrence ligningen

Et Annet Eksempel - Bevis Nå som vi har kommet fram til en gjetning ved hjelp av analyse av rekursjonstreet kan vi bruke denne gjetningen i substitusjonsmetoden Vi vil bevise at T (n) = 3T (n/4) + Θ(n 2 ) er O(n 2 ) Dette krever at vi kan bevise at T (n) dn 2 for en konstant d > 0 T (n) 3T (n/4) + cn 2 3d(n/4) 2 + cn 2 = 3 16 dn2 + cn 2 dn 2 Det siste steget holder så lenge d (16/13)c

Masterteoremet Masterteoremet kan ses som en enkel oppskrift for å løse recurrence ligninger av typen T (n) = at (n/b) + f (n) hvor a 1 og b > 1 er konstanter og f (n) er asymptotisk positiv funksjon For å benytte masterteoremet må man kunne skille mellom tre muligheter 1 Hvis f (n) = O(n log b a ɛ ) for en konstant ɛ > 0 så er T (n) = Θ(n log b a ) 2 Hvis f (n) = Θ(n log b a ) så er T (n) = Θ(n log b a log n) 3 Hvis f (n) = Ω(n log b a+ɛ ) for en konstant ɛ > 0 og hvis af (n/b) cf (n) for en konstant c 1 for store nok n så er T (n) = Θ(f (n))

Tilfelle 1 - f (n) = O(n log b a ɛ ) Det første tilfelle dekker aller situasjoner hvor kostnaden internt i en node er polynomisk mindre enn veksten til treet I disse situasjonene vil veksten til treet dominere den totale kostnaden La oss se på recurrence ligningen T (n) = 9T (n/3) + n Her er a = 9, b = 3 og f (n) = n Vi får da at n log b a = n log 3 9 = Θ(n 2 ) Siden f (n) = O(n log 3 9 ɛ ) for ɛ = 1 så kan vi trekke slutningen at T (n) = Θ(n 2 )

Tilfelle 3 - f (n) = Ω(n log b a ) Det tredje tilfellet dekker alle situasjoner hvor kostnaden internt i en node er polynomisk større enn veksten til treet I disse situasjonene vil den interne kostnaden dominere den totale kostnaden La oss se på recurrence ligningen T (n) = 3T (n/4) + n log n Her er a = 3, b = 4 og f (n) = n log n Vi får da at n log b a = n log 4 3 = O(n 0793 ) Siden f (n) = Ω(n log 4 3+ɛ ) for ɛ 02 må vi bare sjekke at kontrollen som holder for c = 3/4 af (n/b) = 3(n/4) log(n/4) (3/4)n log n = cf (n) Vi kan derfor trekke slutningen at T (n) = Θ(n log n)

Tilfelle 2 - f (n) = Θ(n log b a ) Det siste tilfellet dekker alle situasjoner hvor veksten av treet og den interne kostnaden er av samme størrelse La oss se på recurrence ligningen T (n) = T (2n/3) + 1 Her er a = 1, b = 3/2 og f (n) = 1 Vi får da at n log b a = n log 3/2 1 = O(n 0 ) = 1 Vi kan trekke slutningen at T (n) = Θ(log n)

Når Masterteoremet Ikke Kan Brukes Masterteoremet er ekstremt nyttig når en recurrence ligning dekkes av en av de tre tilfellene Men vi må være nøye så vi ikke benytter oss av teoremet når en situasjon faller utenom La oss ta en titt på eksempelet T (n) = 2T (n/2) + n log n Her er a = 2, b = 2 og f (n) = n log n Vi får da at n log b a = n log 2 = n Det kan være lett å falle i fellen og tenke at siden f (n) = n log n er større enn n så kan vi benytte oss av det tredje tilfellet Problemet er at f (n) ikke er polynomisk større