Algoritmer og Datastrukturer

Slides:



Advertisements
Liknende presentasjoner
12.Studienreise nach Finnland,
Advertisements

Barns utvikling av algoritmer. (Fra Marit Johnsen Høines)
Kvinner og politikk Kvinnelig valgmobilisering i Nord-Norge: Glasstak eller etterslep? Marcus Buck.
Når matematikk blir magisk
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
Teknologi for et bedre samfunn 1 Asbjørn Følstad, SINTEF Det Digitale Trøndelag (DDT) Brukervennlig digitalisering av offentlig sektor.
Bibeltime onsdag 8.januar Anne Birgitta L.K.. Luk.1, Men da Elisabet var i sjette måned, ble engelen Gabriel sendt fra Gud til en by i Galilea.
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
1 Arbeidssted, bruk av fasiliteter og - mengde 5.
Pendeltegning En utdøende kunstart?
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.
NRKs Profilundersøkelse NRK Analyse. Om undersøkelsen • NRK Analyse har siden 1995 gjennomført en undersøkelse av profilen eller omdømmet til NRK.
Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.
2. Planter. Del 1 (1–4). Nivå 2. Side 19–24
Kap 05 Betinget sannsynlighet
Fra forelesningene om involveringspedagogikk Et utviklingsarbeid Philip Dammen Manuset er under arbeid.
Kapittel 14 Simulering.
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
1 Øvingsforelesning Andreas Knudsen Nils Grimsmo
Øvingsforelesning 12 Redusering av problemer,
Omlasting og direkteleveranser. LOG530 Distribusjonsplanlegging 2 2 Vi har nå utvidet nettverket med direkteleveranser. Distribusjonen går enten via lagrene.
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
Øvingsforelesning 9 - Børge Rødsjø
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.
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
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 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.
Anvendt statistisk dataanalyse i samfunnsvitenskap
Eiendomsmeglerbransjens boligprisstatistikk Oktober 2010
Eiendomsmeglerbransjens boligprisstatistikk Februar 2011 Norges Eiendomsmeglerforbund og Eiendomsmeglerforetakenes Forening ECON Poyry og FINN.
Virksomhetsrapport Oktober Innhold 1. Oppsummering 2. Hovedmål 3. Pasient 5. Aktivitet 4. Bemanning 6. Økonomi 7. Klinikker 2.
INF 4130 Eksamen 2008 Gjennomgang.
Magnus Haug Algoritmer og Datastrukturer
Avlevering i praksis KDRS-samling
Inflation og produktion 11. Makroøkonomi Teori og beskrivelse 4.udg. © Limedesign
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
1 Trivsel Utvalg Trives svært godt Trives godt Trives litt Trives ikke noe særlig Trives ikke i det hele tatt Snitt Trivsel Brannfjell skole (Høst 2014)
Dagligbankundersøkelsen Fakta Dagligbankundersøkelsen intervju Befolkning 15 år + TNS Gallup Ansvarlig for grafene Bente Pettersen Roar.
Veivalgsanalyse etter Sørlandsmesterskapet i lang (klassisk) distanse 2004.
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.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Befolkning og arbejdsmarked 7. Mikroøkonomi Teori og beskrivelse © Limedesign
Prioritetskøer Binære heaper Venstrevridde heaper (Leftist) Skeive heaper (Skew) Binomialheaper Fibonacciheaper Prioritetskøer er viktige i bla. operativsystemer.
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:

Algoritmer og Datastrukturer Øvingsforelesning 11 Dynamisk programmering, grådighet Vidar Kristoffer Strat Foiler av Torbjørn Morland (hovedsaklig)

Gruppeøving Sjekk hjemmesiden for tidspunkter

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

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

Ooops ... f(6) f(5) f(4) f(3) f(2) f(1) f(2) f(1) f(0) f(4) f(3) f(2)

Yeah! f(3) f(2) f(1) f(0) f(4) f(6) f(5)

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

Intuitivt eksempel Vi vil ha drops! Hvert drops har en ”verdi” (hvor godt det smaker) Vi kan bare velge to drops Hva er høyeste ”verdi” vi kan oppnå? Hvilke drops velger vi?

Intuitivt eksempel

Intuitivt eksempel 23

Intuitivt eksempel 23 + 20

Intuitivt eksempel 23 + 20 = 43

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

Eksempel – Huffmankoding Prefikskoding Ingen gyldig kodestreng er et prefiks i en annen gyldig kodestreng Eksempel: {0,10,110,1110,11110,…} Med prefikskoder kan vi kode en tekst til en sammenhengende binærstreng uten fare for misforståelser Et optimalt prefikstre er et fullt binærtre, men ikke nødvendigvis et balansert tre

Eksempel – Huffmankoding Har en mengde av bokstaver (evt. strenger) og frekvenser. Lager en node for hver bokstav 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

Eksempel – Huffmankoding http://en.wikipedia.org/wiki/Huffman_coding

Grådig eller 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 sum for en liste består av maks sum 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 A = lista, i = delproblemet vi ser på 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

Eksempel 1 Det er trivielt å finne løsning for liste med 1 eller 2 elementer M(0, A) = A[0] M(1, A) = max(A[0], A[1]) For større delproblem må vi bruke den rekursive formelen, tilpasset M(i, A) = max(A[i]+M(i-2, A), M(i-1, A)) 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,11,10,5,16] [5,13,5,16] er lengst for [5,10,13,11,10,5,16] [5,13,5] lengst for [5,10,13,11,10,5] [5,13] er lengst for [5,10,13] 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 Et array med løsningen, result En teller for å komme gjennom arrayet, i Eksempel: A =[5,10,13,11,10,5,16]

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

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

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

Eksempel 2 A =[5,10,13,11,10,5,16] i = 3 diff = A[3]-A[2] = -2 Result = [5,13,11] Endring i fortegn

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

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

Eksempel 2 A =[5,10,13,11,10,5,16] i = 6 diff = A[6]-A[5] = 11 Result = [5,13,5,16] Ferdig! Endring i fortegn

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 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 hver av kandidatene (og dermed også 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 3 – DP Samarbeidsevne Kompetanse og struktur C D E F A 2 3 B 2 3 B 5 1 A B C D E F 5 6 3

Eksempel 3 – DP Vi tilegner hver kandidat en optimal kvalitet Q(k) For løvnoder er Q(k) = A(k) For en forelder vil Q(k) = A(k) + max{Q(b11)+B(k, b11), Q(b12)+B(k, b12)} + max{Q(b21)+B(k, b21), Q(b22)+B(k, b22)} Optimal løsning B er sjef, med C og E som underordnede

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? Vi går gjennom alle kompetente og fjerner den overordnede 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