Forelesningsplan. Grådighet. LF Øving 9. Hva er grådighet? Aktivitetsvelger En grådig strategi Grådig eller dynamisk? Knapsack Huffmankoding

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

INF Algoritmer og datastrukturer

Live life and be merry

Algdat - øvingsforelesning

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Algdat - Øvingsforelesning. Maks flyt

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Live life and be merry

INF Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Alle mot alle. Åttende forelesning. (eller eller Bellman-Ford, eller BFS, alt ettersom) fra alle noder.

ALGORITMER OG DATASTRUKTURER

Algdat Eksamensforelesning. Nils Barlaug

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

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

ALGORITMER OG DATASTRUKTURER

INF Algoritmer og datastrukturer

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

Dagens plan. INF Algoritmer og datastrukturer. Koding av tegn. Huffman-koding

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

Dijkstras algoritme Spørsmål

Algdat - øvingsforelesning

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

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Øvingsforelesning Korteste vei: Alle til alle

INF 1040 Løsningsforslag til kapittel

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

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

LO118D Forelesning 9 (DM)

Live life and be merry

Korteste vei problemet (seksjon 15.3)

TMA4140 Diskret Matematikk Høst 2016

INF Algoritmer og datastrukturer

Minimum Spenntrær - Kruskal & Prim

INF2810: Funksjonell Programmering. Huffman-koding

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen i tdt4120 Algoritmer og datastrukturer

INF2220: Time 4 - Heap, Huffmann

INF1020 Algoritmer og datastrukturer GRAFER

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

Øvingsforelesning 4. Topologisk sortering, Strongly Connected Components og Minimale spenntrær. Magnus Botnan

INF2810: Funksjonell Programmering. Huffmankoding

LO118D Forelesning 12 (DM)

Øvingsforelesning 7. Dijkstras algoritme. Foiler: Fredrik Ludvigsen Foreleser: Jon Marius Venstad 10/4/09 1

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

INF2810: Funksjonell Programmering. Huffman-koding

MAT1030 Forelesning 22

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

All good things. Fjortende forelesning

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

KONTINUASJONSEKSAMEN I FAG ALGORITMER OG DATASTRUKTURER

IN Algoritmer og datastrukturer

Longest increasing. subsequence Betingelser. Longest. common subsequence. Knapsack Grådig vs. DP Moro: 2D-Nim Spørsmål. Forside. Repetisjon.

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Generelle Tips. INF Algoritmer og datastrukturer. Åpen og Lukket Hashing. Hashfunksjoner. Du blir bedømt etter hva du viser at du kan

INF Algoritmer og datastrukturer

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

Fra A til B. Syvende forelesning

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

GRAFER. Noen grafdefinisjoner. Korteste vei i en uvektet graf V 2 V 1 V 5 V 3 V 4 V 6

KONTINUASJONSEKSAMEN

MAT1030 Forelesning 22

Agenda. 1 Sortering, heap og select. 2 Binære trær. 3 Grafer, BFS og DFS. 4 Spenntrær og Korteste vei. 5 Maks flyt. 6 Dynamisk programmering

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Forelesning 28. Grafer og trær, eksempler. Dag Normann - 5. mai Grafer og trær. Grafer og trær. Grafer og trær

Introduksjon. MAT1030 Diskret Matematikk. Introduksjon. En graf. Forelesning 22: Grafteori. Roger Antonsen

Introduksjon. MAT1030 Diskret matematikk. Søkealgoritmer for grafer. En graf

MAT1030 Diskret matematikk

Heuristiske søkemetoder I

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Oppgave 1. Sekvenser (20%)

UNIVERSITETET I OSLO

Øvingsforelesning 12 Maks flyt

UNIVERSITETET I OSLO

MAT1030 Forelesning 25

Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15

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

MAT1030 Diskret Matematikk

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF2810: Funksjonell Programmering. Huffman-koding

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

45011 Algoritmer og datastrukturer Løsningsforslag eksamen 13. januar 1992

KORTESTE STI. Vektede Grafer. Korteste Sti. Dijkstra s Algoritme. Vektet Urettet Graf

Transkript:

1 Grådighet

2 Forelesningsplan Grådighet Hva er grådighet? Aktivitetsvelger En grådig strategi Grådig eller dynamisk? Knapsack Huffmankoding LF Øving 9 Teori Praksis

3 Forelesningsplan Grådighet Hva er grådighet? Activity-selection En grådig strategi Grådig eller dynamisk? Knapsack Huffmankoding LF Øving 9 Teori Praksis

4 Hva er grådighet? Velger det alternativet som ser best ut Endrer aldri tidligere valg Ser aldri lenger frem enn akkurat dit algoritmen har kommet Optimal løsning lokalt gir optimal løsning globalt Raskere enn DP for en del situasjoner Eksempler på grådighet vi allerede har sett: Dijkstra Prims algoritme Kruskals algoritme

5 Forelesningsplan Grådighet Hva er grådighet? Activity-selection En grådig strategi Grådig eller dynamisk? Knapsack Huffmankoding LF Øving 9 Teori Praksis

6 Activity-selection Gitt et sett med aktiviteter S = {a 1, a 2,..., a n } Aktivitet a i har en starttid s i og sluttid f i To aktiviteter, a i og a j sies å være kompatible hvis s i f i eller s j f i Problemet som skal løses er som følger: Vi ønsker å velge det største subsettet av S med kompatible aktiviteter

7 Activity-selection Antagelse: Aktivitetene er sortert økende etter sluttid Velg den aktiviteten som opptar færrest ressurser - Velg aktiviteten som til enhver tid slutter først S = {a 1, a 3, a 6, a 8 } MERK: Det finnes også andre optimale løsninger, f.eks. S = {a 2, a 5, a 7, a 8 }

8 Activity selection Er vi sikre på at denne løsningen stemmer?

9 Activity selection Det grådige valget: Vis at det finnes en optimal løsning som inneholder den aktiviteten med den tidligste starttiden. Anta at settet A er en optimal løsning til S, og at den første aktiviteten i A er a k. - Hvis k = 1 så ser vi at den første aktiviteten er en del av en optimal løsning - Hvis k 1 hvis at det finnes en løsning B som inneholder a 1 som også er en optimal løsning. La B = A {a k } {a 1 } - Merk at aktivitetene i B er kompatible, f 1 f k - B har samme antall aktiviteter som A, ergo er B optimal.

10 Activity selection Optimal substruktur: Anta at settet A er en optimal løsning til S, da er A' = A {a 1 } en optimal løsning til S' = {a i S: s i f 1 } Hvis vi nå kunne finne en løsning B' til S' med flere aktiviteter enn A', ville man ved å legge til a 1 få en løsning B til S som er bedre enn A Strider imot vår antagelse.

11 Forelesningsplan Grådighet Hva er grådighet? Activity-selection En grådig strategi Grådig eller dynamisk? Huffmankoding LF Øving 9 Teori Praksis

12 En grådig strategi (1) Sett opp problemet på en slik måte at ved å gjøre et valg så står vi kun igjen med ett subproblem (2) Vis at det grådige valget er et trygt valg (3) Vis at problemet har optimal substruktur ved å vise at etter å ha gjort et grådig valg så gjenstår et subproblem som kombinert med det grådige valget vil løse det originale problemet

13 Forelesningsplan Grådighet Hva er grådighet? Aktivitetsvelger En grådig strategi Grådig eller dynamisk? Knapsack Huffmankoding LF Øving 9 Teori Praksis

14 Grådig eller dynamisk? Det grådige valget: Grådig algoritme velger det som ser best ut der og da En DP-algoritme jobber typisk på en «bottom-up»-måte vha memoisering Eksempel: Korteste vei i bil gjennom en by Både DP og grådighet avhenger av optimal substruktur

15 Grådig eller dynamisk? Eksempel: Eksamen januar 1996 (modifisert) Du jobber i kassen på en butikk. En kunde betaler kontant, og betaler B kroner mer enn nødvendig. Du må altså gi tilbake B kroner. Vi antar at du kun er mynter tilgjengelig. Hvordan gjør du dette ved å velge færrest mulig mynter? Vi antar at vi har k forskjellige typer mynter og ubegrenset antall av hver type. Hvordan vil en grådig strategi gå frem? Vil en grådig strategi alltid gi riktig svar?

16 Grådig eller dynamisk? Eksempel: Eksamen desember 2006 En uavhengig mengde noder i en graf G = (V,E) er et subsett I av V slik at det ikke finnes kanter i E mellom nodene i I. Nodene er ordnet som en sekvens [v 1, v 2,..., v n ] og det er kun kanter mellom naboer i sekvensen. Node i har en vekt w i. Finn den uavhengige mengden noder, I, med høyest totale vekt W. Hvordan vil en grådig algoritme gå frem? Hvordan vil eventuelt en DP-løsning gå frem?

17 Forelesningsplan Grådighet Hva er grådighet? Aktivitetsvelger En grådig strategi Grådig eller dynamisk? Knapsack Huffmankoding LF Øving 9 Teori Praksis

18 Knapsack En tyv raner en gullsmed Det er en grense for hva han kan bære Han ønsker å få med seg høyest mulig verdi Hvilke gjenstander bør han velge?

19 0/1 Knapsack Tyven finner n gjenstander Gjenstand i er verdt v i kroner og veier w i kilo Vi antar at v i og w i er heltall Sekken til tyven tåler W kilo Tyven må velge mellom enten å ta gjenstand i eller ikke Her vil ikke en grådig strategi gi riktig løsning for alle tilfeller

20 Fractional Knapsack Samme som 0/1 Knapsack, men det er mulige å ta deler av en gjenstand Må altså ikke velge enten eller

21 Forelesningsplan Grådighet Hva er grådighet? Aktivitetsvelger En grådig strategi Grådig eller dynamisk? Knapsack Huffman-koding LF Øving 9 Teori Praksis

22 Huffman-koding En metode for komprimering av data Anta at vi har en fil på 100 000 tegn Det finnes kun 6 unike tegn i filen Vi vet hvor mange ganger hvert tegn forekommer i filen Vi ønsker å kode filen vha. binærtall (0 eller 1) Hvordan kan vi kode filen vha. færrest mulig binærtall?

23 Huffman-koding a b c d e f Frequency (in thousands) Fixed-length codeword Variable-length codeword 45 13 12 16 9 5 000 001 010 011 100 101 0 101 100 111 1101 1100 Totalt antall bits med «fixed-length»: 3*100 000 = 300 000 bits Totalt antall bits med «variable-length»: (45*1 + 13*3 + 12*3 + 16*3 + 9*4 + 5*4) * 1 000 = 224 000 bits

24 Huffman-koding Hvordan lage disse kodingene? Bruker prefix-koder Huffman kode er optimale prefix-koder For interesserte: Se sidene 433-435 i Cormen Teorem 16.4: HUFFMAN produces an optimal prefix code

25 Huffman-koding 1 Huffman(C) 2 n = C 3 Q = C 4 for i = 1 to n-1 5 allocate a new node z 6 z.left = x = Extract-Min(Q) 7 z.right = y = Extract-Min(Q) 8 z.freq = x.freq + y.freq 9 insert(q, z) 10 return Extract-Min(Q) Kjøretid: O(nlgn)

26 Forelesningsplan Grådighet Hva er grådighet? Aktivitetsvelger En grådig strategi Grådig eller dynamisk? Knapsack Huffmankoding LF Øving 9 Teori Praksis

27 Teori

28 Forelesningsplan Grådighet Hva er grådighet? Aktivitetsvelger En grådig strategi Grådig eller dynamisk? Knapsack Huffmankoding LF Øving 9 Teori Praksis

29 Praksis

30 Spørsmål?