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?