Dynamisk programmering. Flere eksempler
|
|
|
- Astrid Frederiksen
- 10 år siden
- Visninger:
Transkript
1 Dynamisk programmering Flere eksempler
2 Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z}, {A,C,G,T}, {,1} Streng = sekvens x 1 x 2 x 3... x n af tegn fra et alfabet: helloworld GATAAATCTGGTCTTATTTCC Delstreng = delmængde af tegnene i streng, i uændret rækkefølge: G A T A A A T C T G G A T C
3 Længste fælles delstreng Fælles delstreng for to strenge: G A T A A A T C T G G A T C Eller: A G T T A T T C G A T A A A T C T G A G T T A T T C Længste fælles delstreng: Givet to strenge X = x 1 x 2 x 3... x m Y = y 1 y 2 y 3... y n af længde m og n, find en længste fælles delstreng for dem. Længden af denne kan ses som et mål for similaritet mellem strenge (f.eks. dna-strenge).
4 Rekursiv løsning? Vi vil arbejde på at lave en rekursiv løsning. Vi definerer derfor mindre problemstørrelser: X i = x 1 x 2 x 3... x i for 1 i m. Y j = y 1 y 2 y 3... y j for 1 j n. X og Y er den tomme streng. lcs(i, j) er længden af længste fælles delstreng af X i og X j. Vi vil gerne finde lcs(m, n). Mere generelt: Vi søger en rekursiv formel for lcs(i, j). Basistilfælde: Det er klart at lcs(, j) = lcs(i, ) =.
5 Optimale delproblemer I Formel for lcs(i, j): Case I: x i = y j Observation: en fælles delstreng Z for X i og Y j består af Et sidste tegn z k. En streng Z = z 1 z 2 z 3... z k 1, som må være en fælles delstreng af X i i og Y j 1 (tegnene i Z skal komme i samme rækkefølge som i X og Y, så kun sidste tegn i Z har mulighed for at være x i og y j ). Den essentielle egenskab (optimale delproblemer) for Case I: Hvis Z er en længste fælles delstreng for for X i og Y j, må Z være en længste fælles delstreng af X i 1 og Y j 1. For hvis der fandtes en længere fælles delstreng for X i 1 og Y j 1, kunne den tilføjes tegnet x i (= y j ) og blive en længere fælles delstreng for X i og Y j.... x 1 x 2 x 3 x 4... x i 1 C y 1 y 2 y 3 y 4... y j 1 C
6 Optimale delproblemer I Af den essentielle egenskab haves i Case I (x i = y j ): lcs(i, j) = lcs(i 1, j 1) + 1 En længste fælles delstreng for X i 1 og Y j 1 tilføjet tegnet x i (= y j ) er en længste fælles delstreng for X i og Y j.... x 1 x 2 x 3 x 4... x i 1 C y 1 y 2 y 3 y 4... y j 1 C
7 Optimale delproblemer II Formel for lcs(i, j): Case II: x i y j Observation: en fælles delstreng Z = z 1 z 2 z 3... z k for X i og Y j kan ikke have z k værende en parring af x i og y j (da disse jo er forskellige). Så Z må være en fælles delstreng for enten X i 1 og Y j eller for X i og Y j 1 (eller evt. begge). Den essentielle egenskab (optimale delproblemer) for Case II: Hvis Z er en længste fælles delstreng for X i og Y j, må den være en længste fælles delstreng for enten X i 1 og Y j eller for X i og Y j 1 (eller evt. begge). For hvis der fandtes en længere fælles delstreng for enten X i 1 og Y j eller for X i og Y j 1, ville denne også være en længere fælles delstreng for X i og Y j. x 1 x 2 x 3 x 4... x i 1 A... y 1 y 2 y 3 y 4... y j 1 C... x 1 x 2 x 3 x 4... x i 1 A y 1 y 2 y 3 y 4... y j 1 C
8 Optimale delproblemer II Lad T 1 være en længste fælles delstreng for X i 1 og Y j, og lad T 2 være en længste fælles delstreng for X i og Y j 1. Af den essentielle egenskab i Case II (x i y j ) haves at blandt T 1 og T 2 er der (mindst) en som er en længste fælles delstreng for X i og Y j. Ingen af T 1 og T 2 kan være længere end den længste fælles delstreng for X i og Y j (da de begge er delstrenge af X i og Y j ). Så af den essentielle egenskab haves i Case II (x i y j ): lcs(i, j) = max(lcs(i 1, j), lcs(i, j 1)) Hvis lcs(i 1, j) lcs(i, j 1), er en længste fælles delstreng for X i 1 og Y j også en længste fælles delstreng for X i og Y j. Et symmetrisk udsagn gælder for og X i og Y j 1. x 1 x 2 x 3 x 4... x i 1 A... y 1 y 2 y 3 y 4... y j 1 C... x 1 x 2 x 3 x 4... x i 1 A y 1 y 2 y 3 y 4... y j 1 C
9 Rekursiv formel for lcs(i, j) Alt i alt har vi fundet flg. rekursive formel for lcs(i, j): if i = or j = lcs(i, j) = lcs(i 1, j 1) + 1 if i, j > and x i = y j max(lcs(i 1, j), lcs(i, j 1)) if i, j > and x i y j Den giver anledning til en naturlig, simpel rekursiv algoritme. MEN: det er nemt at se at der er gentagelser blandt delproblemers delproblemer. Så samme delproblemer bliver gentagne gange beregnet forskellige steder i rekursionstræet, og køretiden bliver meget dårlig. Kan evt. løses med memoization: hav en tabel med plads til svaret på alle de mulige delproblemer lcs(i, j), og gem svaret når det er beregnet første gang. Siden, slå det bare op. Dynamisk programmering: udfyld i stedet direkte denne tabel bottom-up på struktureret måde.
10 Dynamisk programmering Dynamisk programmering: udfyld tabel over lcs(i, j) bottom-up på struktureret måde. j i 1 2 n j i 1 2 n 1 2 m 1 2 m j i 1 2 m 1 2 if i = or j = lcs(i, j) = lcs(i 1, j 1) + 1 if i, j > and x i = y j max(lcs(i 1, j), lcs(i, j 1)) if i, j > and x i y j
11 Køretid Dynamisk programmering: udfyld tabel over lcs(i, j) bottom-up på struktureret måde. j i 1 2 m 1 2 n Tabelstørrelse: mn Udfyld tabelindgang: O(max størrelse af røde graf) = O(1). Tid i alt: O(produktet af de to) = O(mn).
12 Find en konkret løsning lcs(m, n) er længden af en længste fælles delstreng for X = X m og Y = Y n. Hvis vi gerne vil finde en konkret fælles delstreng af denne længde: Gem for hvert felt i tabellen hvilken af de tre røde pile som gav lcs(i, j)-værdien i dette felt. Følg gemte pile baglæns fra lcs(m, n). Når en skrå pil følges er det en Case I, og x i (=y j ) udskrives. Ellers er den en Case II, og intet udskrives. I alt udskrives en længste fælles delstreng for X og Y i baglæns orden.
13 Eksempel 2: Multi-Matrix-multiplikation Fra DM527/MM524: En p q matrix A 1 og en q r matrix A 2 kan multipliceres i tid O(pqr). Resultatet er en p r matrix. j j i = i p q q r p r Matrix-multiplikation er associativ: A 1 (A 2 A 3 ) = (A 1 A 2 ) A 3
14 Multi-Matrix-multiplikation Matrix-multiplikation er associativ: A 1 (A 2 A 3 ) = (A 1 A 2 ) A 3 Men køretiden er IKKE ens. Eksempel: A 1 A 2 A Tid for A 1 (A 2 A 3 ): er = 75. Tid for (A 1 A 2 ) A 3 : er = 7.5
15 Multi-Matrix-multiplikation Spørgsmålet: Givet et produkt af n matricer med kombatible dimensioner A 1, A 2, A 3,..., A n p p 1, p 1 p 2, p 2 p 3,..., p n 1 p n hvad er den billigste rækkefølge at gange dem sammen i?
16 Beregningstræer Rækkefølge = parentessætning = binært beregningstræ: A 1 A 1 A 2 A 3 A 1 (A 2 A 3 ) A 1 A 2 A 3 (A 1 A 2 )A 3 A 2 A 3 A 4 A 1 ((A 2 A 3 )A 4 )
17 Optimale delproblemer og rekursiv ligning Lad m(i, j) være prisen for bedste måde at gange A i,..., A j sammen på. Observation af den essentielle egenskab: Undertræerne for roden af et optimalt træ må selv være optimale beregningstræer. A i... A k A k+1... A j Prøv alle placeringer af rod, dvs. alle split A i,..., A k og A k+1,..., A j : { if i = j m(i, j) = min i k<j {m(i, k) + m(k + 1, j) + p i 1 p k p j } if i < j
18 Tabel Gentagelser blandt delproblemers delproblemer. Lav tabel og udfyld systematisk. Målet er at kende m(1, n). j i n n Tabelstørrelse: n 2 /2 Udfyld tabelindgang: O(max størrelse af røde graf) = O(n). Tid i alt: O(produktet af de to) = O(n 3 ). Find konkret løsning: følg de optimale valg baglæns.
Dynamisk programmering. Flere eksempler
Dynamisk programmering Flere eksempler Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z}, {A,C,G,T}, {,1} Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z},
Dynamisk programmering
Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer
Dynamisk programmering
Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 7. juni 00, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)
Algoritmeanalyse Identificer essentiel(le) operation(er) Øvre grænse for algoritme Find øvre grænse for antallet af gange de(n) essentielle operation(er) udføres. Øvre grænse for problem Brug øvre grænse
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)
Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo
Philip Bille Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[] og satellitdata data[]. operationer. PREDECESSOR(k): returner element med største nøgle k.
Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er
Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er en unik simpel vej mellem ethvert par af punkter i
Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.
Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste
Sortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Sortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:
Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus
Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo
Philip Bille er. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle x.key og satellitdata x.data. operationer. PREDECESSOR(k): returner element x med største nøgle k. SUCCESSOR(k):
Danmarks Tekniske Universitet
Eksamen 02105, F14 side 1 af 14 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 2014. Kursusnavn: Algoritmer og datastrukturer 1 Kursusnummer: 02105 Hjælpemidler: Skriftlige hjælpemidler. Det
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave
Grafer og graf-gennemløb
Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Figur: Terminologi: n = V, m = E (eller V og E (mis)bruges som V og E ).
Danmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:
Danmarks Tekniske Universitet
Eksamen 0205, Forår 205 side af 5 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 205. Kursusnavn: Algoritmer og datastrukturer Kursusnummer: 0205 Hjælpemidler: Skriftlige hjælpemidler. Det
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
28 Algoritmedesign. Noter. PS1 -- Algoritmedesign
28 Algoritmedesign. Algoritmeskabelon for Del og Hersk. Eksempler på Del og Hersk algoritmer. Binær søgning i et ordnet array. Sortering ved fletning og Quicksort. Maksimal delsums problem. Tætteste par
Skriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =
INSTITUT FOR DATALOGI, AARHUS UNIVERSITET
INSTITUT FOR ATALOGI, AARHUS UNIVERSITET Science and Technology EKSAMEN Algoritmer og atastrukturer (00-ordning) Antal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Fredag den. august 0,
Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning
Søgning og Sortering Søgning og Sortering Philip Bille Søgning. Givet en sorteret tabel A og et tal x, afgør om der findes indgang i, så A[i] = x. Sorteret tabel. En tabel A[0..n-1] er sorteret hvis A[0]
Introduktion Til Konkurrenceprogrammering
Introduktion Til Konkurrenceprogrammering Søren Dahlgaard og Mathias Bæk Tejs Knudsen {soerend,knudsen}@di.ku.dk Version 0.1 Indhold Indhold i Introduktion 1 1 Palindromer 3 1.1 Introduktion til Python...............
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Grundlæggende køretidsanalyse af algoritmer
Grundlæggende køretidsanalyse af algoritmer Algoritmers effektivitet Størrelse af inddata Forskellige mål for køretid Store -notationen Klassiske effektivitetsklasser Martin Zachariasen DIKU 1 Algoritmers
22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.
22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2010 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 24. april, 2010 (let justeret 10. maj og 21. maj 2010) Dette projekt udleveres i tre
Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012
Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk
Noter til DM517 Beregnelighed
Noter til DM517 Beregnelighed Jonas Nyrup 23. oktober 2011 Indhold 1 Et par noter 2 2 Regulære sprog 2 2.1 DFA................................. 2 2.1.1 Eksempler.......................... 3 2.2 NFA.................................
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se
Mandags Chancen. En optimal spilstrategi. Erik Vestergaard
Mandags Chancen En optimal spilstrategi Erik Vestergaard Spilleregler denne note skal vi studere en optimal spilstrategi i det spil, som i fjernsynet går under navnet Mandags Chancen. Spillets regler er
Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille
Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering Philip Bille Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering
Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed
Algoritmisk geometri Intervalsøgning 1 2 Motivation for intervaltræer Intervalsøgning Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Vi kan
Note om endelige legemer
Note om endelige legemer Leif K. Jørgensen 1 Legemer af primtalsorden Vi har i Lauritzen afsnit 2.1.1 set følgende: Proposition 1 Lad n være et positivt helt tal. Vi kan da definere en komposition + på
Induktive og rekursive definitioner
Induktive og rekursive definitioner Denne note omhandler matematiske objekter, som formelt er opbygget fra et antal basale byggesten, kaldet basistilfælde eller blot basis, ved gentagen brug af et antal
Ugeseddel 12(10.12 14.12)
Ugeseddel (..) Matematisk Programmering Niels Lauritzen..7 FORELÆSNINGER I ugen. 7. gennemgik vi algoritmer til løsning af heltalsprogrammer ved hjælp af simplex algoritmen. Dette er heltalsprogrammeringsugesedlen
