Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet

Slides:



Advertisements
Liknende presentasjoner
12.Studienreise nach Finnland,
Advertisements

Barns utvikling av algoritmer. (Fra Marit Johnsen Høines)
Bakgrunn Noen eksempler er avanserte for deltakere som starter på null. Derfor bør man for bruke tavle / flipover eller enda bedre: Gi deltakerne kort.
Kvinner og politikk Kvinnelig valgmobilisering i Nord-Norge: Glasstak eller etterslep? Marcus Buck.
Nye Olweus dataweb en bruksanvisning Generell norsk (Q68T)
Litt mer om PRIMTALL.
Ti måter å ødelegge en CT-undersøkelse av halsen på
Hjemmeoppgave 1: Å høre etter NAVN: ……………………………….. DATO: ……………………….
Grafisk design Visuell kommunikasjon
TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
Egenskaper til stoff og tidsbegrep: En modell for aspekt i russisk Laura A. Janda UNC-Chapel Hill/University of Tromsø
Kontrollstrukturer (Kapittel 3)
En innføring i spillet: Dobbeltkrig – Grønn
Hobro februar 2010 Kurs om elektrokjemisk tæring
23 Finn ligningen for det planet  som inneholder linja
Møre og Romsdal. 2 Ligger det et bedehus eller et kristelig forsamlingshus (ikke kirke) i nærheten av der du bor? (n=502) i prosent.
Ulike sorteringsmetoder Kompleksitet av dem
Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
Presentasjon Fylkesbiblioteket i Akershus. Spørreundersøkelse blant bibliotekansatte i Akershus. 1.
Kapittel 14 Simulering.
Memoisering og dynamisk programmering
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
Forelesningsnotater SIF8039/ Grafisk databehandling
Øvingsforelesning 9 Flytnettverk, maksimum flyt og
Eksempel AOA (Activity On Arc)
1 Øvingsforelesning Andreas Knudsen Nils Grimsmo
Kompleksitetsanalyse
Øvingsforelesning 12 Redusering av problemer,
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
P-MP modeller. LOG530 Distribusjonsplanlegging 2 2 Det skal opprettes p fasiliteter (lager) for å betjene en gitt mengde kunder. Kundenodene er også potensielle.
The Postmans Problem. LOG530 Distribusjonsplanlegging 2 2 Mista har fått i oppdrag å vedlikeholde veiene i landsdelen. Dette er et eksempel på den klassiske.
P-CP modeller. LOG530 Distribusjonsplanlegging 2 2 Det skal opprettes p fasiliteter for å betjene en gitt mengde kunder. Kundenodene er også potensielle.
Klargjøring fra forrige gang
Kap 06 Diskrete stokastiske variable
TANKESMIA AS Medieanalyse for Helse Midt-Norge Stjørdal
Norsk Finansbarometer 2012 Norsk Finansbarometer 2012 Norsk Finansbarometer 2012 TNS Gallup Oslo, 2012 Det norske skadeforsikrings- markedet og dets bevegelser.
Om Norsk Finansbarometer 2014
Øvingsforelesning 9 - Børge Rødsjø
Algoritmer og Datastrukturer
Vokabular barneoppdragelse (m) bleie (f/m) blikk (n) bortskjemt (adj.)
Skriv om slik at setningene betyr omtrent det samme
Kapittel 1, oppgave b) å kaste loss å seile uvær (n) kuling (m)
Dynamisk programmering
11 IKT-baserte læremidler Arne Ketil Eidsvik Avd. for lærerutdanning.
SINTEF Teknologi og samfunn PUS-prosjektet Jan Alexander Langlo og Linda C. Hald 1 Foreløpig oppsummering – underlag for diskusjon på PUS-forum
INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)
INF 295 Forelesning 19 - Dynamisk programmering Korteste vei alle til alle (Floyd) Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
GRØNNALGER BRUNALGER RØDALGER
1 BM-dagen 29.okt BM1 Fysisk miljøplanlegging Studieprogram for Bygg- og miljøteknikk Meny Prosjektoppgaven Arealbruk og befolkning Transport og.
Andre funksjoner. Her kommer en beskrivelse av søkefunksjoner, knapper og annen funksjonalitet. 2.
INF 4130 Eksamen 2008 Gjennomgang.
Magnus Haug Algoritmer og Datastrukturer
SINTEF-undersøkelsen om salting og trafikksikkerhet
Sett inn preposisjoner eller adverb som passer
Inflation og produktion 11. Makroøkonomi Teori og beskrivelse 4.udg. © Limedesign
:39 Medlemsundersøkelse Norsk Fysioterapeutforbund 1 Svarlogg.
INF 295 Algoritmer og datastrukturer Forelesning 22 Teknikker for algoritmeutvikling Hans Fr. Nordhaug/ Ola Bø.
Dagligbankundersøkelsen Fakta Dagligbankundersøkelsen intervju Befolkning 15 år + TNS Gallup Forfatter Bente Pettersen Roar Thorvaldsen.
Forside Intro Fibonacci-tall Memoisering DP Longest increasing subsequence Betingelser Matrise- multiplikasjon Longest common subsequence Grådig vs. DP.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Befolkning og arbejdsmarked 7. Mikroøkonomi Teori og beskrivelse © Limedesign
Sett inn preposisjoner eller adverb som passer.
Memoisering og dynamisk programmering Magnus Botnan botnan at stud.ntnu.no 23/
1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen
Øvingsforelesning 10 Grådighet
Utskrift av presentasjonen:

Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet Torbjørn Morland torbjmo@stud.ntnu.no

Dagens tema Repetisjon av Dynamisk programmering Grådighet Hvordan angripe oppgaver med Grådig/DP? Eksempler Øving 9: Skumlehulen Øving 10: Pengeveksling

Repetisjon av DP Optimal substruktur Overlappende delproblemer :: Repetisjon av DP Optimal substruktur Den optimale løsningen av problemet består av optimale løsninger på delproblemer Overlappende delproblemer Løsningen på ett delproblem kan brukes for å løse flere større delproblemer Vil gå gjennom hvordan vi bruker dette på eksempler senere i forelesningen

Grådighet Noen ganger trenger vi ikke sjekke alle mulige delproblemer :: Grådighet Noen ganger trenger vi ikke sjekke alle mulige delproblemer Krav til problemer som vi vil løse grådig: Greedy Choice Property: fra et lokalt optimum kan vi nå et globalt optimum, uten å måtte gjøre om på valg vi har tatt Optimal substruktur: som for DP Det er ofte lett å forstå intuitivt at grådighet fungerer på et problem, men like ofte vanskelig å vise det formelt

Strategi for grådighet Formuler problemet slik at vi kan velge grådig, og sitte igjen med bare ett subproblem Når vi foretar et valg, legger det begrensninger på hvilke valg vi kan foreta senere Dette går bra på grunn av at greedy choice property er oppfylt ”Vis” at det alltid er trygt å velge grådig

Grådighet - eksempel Prims algoritme – finne minimalt spenntre Velger alltid billigste kant fra noder vi allerede har valgt til en vi ikke har valgt. Oppfyller både greedy choice og optimal substruktur

Huffmankoding Prefikskoding Ingen gyldig kodestreng er et prefiks i en annen gyldig kodestreng Eksempel: {0,10,110,1110,11110,…} Et optimalt prefikstre er et fullt binærtre, men ikke nødvendigvis et balansert tre

Huffmankoding Har en mengde av strenger og frekvenser. Lager en node for hver streng vi har. Algoritme: Så lenge det er to eller flere noder igjen: Fjerner to noder med lavest frekvens Lager en foreldrenode med frekvensverdi lik summen av frekvensene til disse to Legger den nye noden tilbake med de gjenstående nodene Gir optimalt prefikstre

Noen eksempler på grådig/DP Hvordan angripe oppgaven? Hvordan finne ut om det er grådig eller DP?

Eksempel 1 Vi vil finne den største summen vi kan få fra en liste med positive heltall der et element ikke kan være med i summen hvis naboen er det Eksempel: [1,7,8,7,1,2,4]

Eksempel 1 Fungerer grådig algoritme? Nei, fordi det er ikke gitt at et lokalt optimalt valg gir globalt optimal løsning.

Eksempel 1 – Optimal substruktur Vi observerer at maks for en liste består av en maks for en mindre del av listen Eksempel: [1,7,8,7,1,2,4] 7+7+4 er maks for [1,7,8,7,1,2,4] 7+7 er maks for [1,7,8,7,1] 7 er maks for [1,7] Altså optimal løsning av problemet består av optimale løsninger av delproblemer

Eksempel 1 – overlappende delproblemer Prøver å sette opp en rekursiv formel for løsning av problemet M(i, A) = max(A[i]+M(i-2, A), M(i-1, A)) Enten tar vi med element i, eller vi gjør ikke det Legger merke til at kallet M(i-1, A) også vil kalle M(i-2, A) – overlappende delproblemer Nå har vi funnet ut at problemet passer bra for DP Hvordan går vi frem?

Eksempel 1 Det er trivielt å finne løsning for liste med 1 eller 2 element. For større delproblem må vi bruke den rekursive formelen, tilpasset Nå er formelen M(i, A) = max(A[i]+M(i-2, A), M(i-1, A)) R er tabellen vi vil lagre resultatet i Da får vi R[i] = max(R[i-1], A[i] + R[i-2])

Eksempel 1 Da er det bare å fylle inn tabellen A=[1, 7, 8, 7, 1, 2, 4] #R[0]=A[0]

Eksempel 1 Da er det bare å fylle inn tabellen A=[1, 7, 8, 7, 1, 2, 4] #R[1]=max(R[0],A[1])

Eksempel 1 Da er det bare å fylle inn tabellen A=[1, 7, 8, 7, 1, 2, 4] #Tar med A[2]

Eksempel 1 Da er det bare å fylle inn tabellen A=[1, 7, 8, 7, 1, 2, 4] #Tar med A[3]

Eksempel 1 Da er det bare å fylle inn tabellen A=[1, 7, 8, 7, 1, 2, 4] #Bruker R[3]

Eksempel 1 Da er det bare å fylle inn tabellen A=[1, 7, 8, 7, 1, 2, 4] #Tar med A[5]

Eksempel 1 Da er det bare å fylle inn tabellen #Tar med A[6] Vi finner løsningen på den siste plassen i R

Eksempel 1 A=[1, 7, 8, 7, 1, 2, 4] R=[1, 7, 9,14,14,16,18] Finner hvilke tall som er med i løsningen på følgende måte: result = [] #Array med resultatet i = n #Siste indeks while i > 0: if R[i] != R[i-1]: result.append(A[i]) i-=2 else: i-- if i == 0: #Skjer bare hvis A[0] del av løsn. result.append(A[0])

Eksempel 2 Problem: En sekvens med tall kalles en zig-zag sequence hvis sekvensen er alternerende økende og minkende. En sekvens med færre enn to elementer er trivielt en slik sekvens. Finn den lengste subsekvensen av en sekvens heltall som oppfyller disse kravene. Som i Longest Common Subsequence er det lov å hoppe over elementer

Eksempel 2 Eksempel: 1, 7, 4, 9, 2, 5 er en zig-zag sequence, fordi sekvensen er alternerende økende og minkende. 1, 4, 7, 2, 5 og 1, 7, 4, 5, 5 er ikke slike sekvenser. Den første fordi den øker to ganger på rad, og den andre fordi den siste forskjellen er 0.

Eksempel 2 – Optimal substruktur Vi observerer at lengste zig-zag for en sekvens består av en lengste zig-zag for en mindre del av sekvensen Eksempel: [5,10,13,15,10,5,16] [5,15,5,16] er lengst for [5,10,13,15,10,5,16] [5,15,5] er lengst for [5,10,13,15,10,5] [5,15] er lengst for [5,10,13,15] Altså optimal løsning av problemet består av optimale løsninger av delproblemer

Eksempel 2 – Greedy choice property Fungerer en grådig algoritme på dette problemet? Prøver å formulere en grådig algoritme Best å vise det som eksempel først, og beskrive med ord etterpå

Eksempel 2 Vil holde rede på følgende: Forskjellen forrige gang den endret fortegn, diff En array med løsningen, result En teller for å komme gjennom arrayet, i Eksempel: A =[5,10,13,15,10,5,16]

Eksempel 2 A =[5,10,13,15,10,5,16] i = 1 diff = A[1]-A[0] = 5 Result = [5,10]

Eksempel 2 A =[5,10,13,15,10,5,16] i = 2 diff = 5 Result = [5,13]

Eksempel 2 A =[5,10,13,15,10,5,16] i = 3 diff = 5 Result = [5,15]

Eksempel 2 A =[5,10,13,15,10,5,16] i = 4 diff = A[4]-A[3] = -5 Result = [5,15,10]

Eksempel 2 A =[5,10,13,15,10,5,16] i = 5 diff = -5 Result = [5,15,5]

Eksempel 2 A =[5,10,13,15,10,5,16] i = 6 diff = A[6]-A[5] = 11 Result = [5,15,5,16]

Eksempel 2 – Greedy choice property Finner første par med tall der forskjellen != 0 Tar alltid med det første av disse Husker hva forskjellen var For hvert av resten av tallene i lista: Hvis motsatt forskjell, legg til det nye tallet, oppdater forskjellen Hvis lik forskjell, oppdater siste element i løsningen Hvis ingen forskjell, gå videre

Eksempel 2 – Greedy choice property Fungerer dette? Vi oppdager det hver gang forskjellen skifter fortegn Kan umulig ha med flere enn dette+1 Siden vi oppdaterer hvilket element vi tar med, får vi alltid med det største i en stigende rekke, og det minste i en synkende

Eksempel 3 – eksamen 06/2007 En arbeidsgruppe skal settes sammen for et bestemt prosjekt. De ulike stillingene i gruppen utgjør et hierarki som kan beskrives med en trestruktur, der rotnoden i et deltre er sjefen for deltreet. For hver av de n stillingene er det k kandidater (ingen er kandidat til mer enn én stilling). Din oppgave er å velge ut hvilke kandidater som skal tilsettes i de ulike stillingene, i henhold til de følgende retningslinjene: Hver kandidat x har en kompetanse A(x) Et hvert par kandidater x og y har en kompatibilitet B(x, y) Kvaliteten til gruppen er summen av de tilsatte kandidatenes kompetanser og kompatibiliteten mellom kandidater som er i nabo-stillinger (sjef og direkte underordnet). Maksimér kvaliteten til gruppen

Eksempel 3 – DP? Naturlig å se på hvert deltre som delproblem Disse er overlappende, da vi må sjekke hver kandidat i barnenodene for hver kandidat i rotnoden Vi kan beregne optimal kvalitet for hvert deltre, og bruke dette videre. Disse er uavhengige fordi hver kandidat bare kan søke på én stilling Altså optimal substruktur Begynn nederst og jobb deg oppover

Eksempel 4 – eksamen 08/2007 - lettere omskrevet Du har nå mange ansatte, organisert i et hierarki, altså har alle bortsett fra lederen én direkte overordnet, og muligens flere underordnede og indirekte overordnede. Du skal nå plukke ut personer fra avdelingen din til et prosjekt. En delmengde av personene i avdelingen er kompetente til å delta i prosjektet. Det beste ville vært om alle kompetente ansatte kunne bidratt i prosjektet, men vi har et problem med at folk misliker hverandre: Det må ikke finnes to personer i gruppen der den ene er den andres overordnede (direkte eller indirekte). Lag en så stor prosjektgruppe som mulig, der alle er kompetente, og ingen misliker hverandre

Eksempel 4 – Grådig? Også her kan vi finne optimale løsninger for hvert deltre, og kombinere disse til en optimal løsning Altså optimal substruktur Hvis to kandidater ligger på samme sti fra rota i treet kan bare én av dem være med – men begge er lovlige. En som er nærmere rota vil blokkere flere kandidater enn en som er lenger ned, så det vil alltid lønne seg å velge den som er lengst ned. Greedy choice property

Øving 10 - Skumlehulen Splitt nodene, så bare én prinsesse kan gå gjennom hvert kryss Bruk vedlagte algoritme for å finne forøkende sti Oppdater flytnettverket

Øving 11 - Pengeveksling Håper hele denne forelesningen har gitt dere noen tips om hvordan dere skal angripe oppgaven Det vanskelige er å finne ut når man kan bruke grådig, og høste gevinsten av dette