Algoritmer og Datastrukturer 2 Dynamisk Programmering [CLRS 15] Gerth Stølting Brodal.

Slides:



Advertisements
Lignende præsentationer
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal.
Advertisements

Oplæg og øvelser, herunder frugt og vand
Prisdiskrimination af 1. grad Erhvervsøkonomi / Managerial Economics
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Kandidatorientering, 2. november 2012 Algoritmer og Datastrukturer Gerth Stølting Brodal Institut for Datalogi Aarhus Universitet.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
e-Tinglysning WebService Arkitektur
Prisdiskrimination af 2. grad
Algoritmer (v. lektor Gerth S. Brodal) Hør om metoder til at beregne gode GPS kørevejledninger og tog- og flyforbindelser, og hvad problemstillingerne.
Algoritmer og Datastrukturer 2 Dynamisk Programmering [CLRS, kapitel 15] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
Effektivitetstabet (fig. 11)
Innovative Værksteder til udvikling af Akademiuddannelserne IVA
Innovative Værksteder til udvikling af Akademiuddannelserne IVA
Algoritmer og Datastrukturer 2 Dynamisk Programmering [CLRS 15] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Mønstergenkendelse [CLRS, kapitel , 32.4]
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel 2.3, , problem 30.1.c] Gerth Stølting Brodal.
Et eller andet datalogi…
1 Algoritmisk geometri. 2 Intervalsøgning 3 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Alder Løn Ansættelsesdato.
Sandsynlighedsregning
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Korteste Veje [CLRS, kapitel 24, ] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer 2 Topologisk Sortering, Stærke Sammenhængskomponenter [CLRS, kapitel ] Gerth Stølting Brodal.
Algoritmer Gerth Stølting Brodal Institut for Datalogi Aarhus Universitet MasterClass i Matematik, 10. april 2014, Aarhus Universitet.
Et eller andet datalogi… Gerth Stølting Brodal Institut for Datalogi Aarhus Universitet Voronoi Diagrammer Datalogi, Studiestart 2013.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Graf repræsentationer, BFS og DFS [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Korteste Veje [CLRS, kapitel 24]
Algoritmer og Datastrukturer 1 Quicksort [CLRS, kapitel 7] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Algoritmer og Datastrukturer 1 ”Rush Hour” Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Korteste Veje [CLRS, kapitel ]
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Topologisk Sortering, Stærke Sammenhængskomponenter [CLRS, kapitel ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Graf repræsentationer, BFS og DFS [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Topologisk Sortering, Stærke Sammenhængskomponenter [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Korteste Veje [CLRS, kapitel 24, ] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Korteste Veje [CLRS, kapitel 24, ]
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Korteste Veje [CLRS, kapitel ]
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Algoritmer og Datastrukturer 2 Korteste Veje [CLRS, kapitel 24]
Algoritmer og Datastrukturer 2 Dynamisk Programmering [CLRS 15]
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ]
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer 2 Dynamisk Programmering [CLRS 15]
Algoritmer og Datastrukturer 2 Korteste Veje [CLRS, kapitel ]
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer Grådige Algoritmer [CLRS ]
Grundlæggende Algoritmer og Datastrukturer
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer Dynamisk Programmering [CLRS 15]
Præsentationens transcript:

Algoritmer og Datastrukturer 2 Dynamisk Programmering [CLRS 15] Gerth Stølting Brodal

Dynamisk Programmering Generel algoritmisk teknik – virker for mange (men langt fra alle) problemer Krav: ”Optimal delstruktur” – en løsning til problemet kan konstrueres ud fra optimale løsninger til ”delproblemer” Rekursive løsning: –Typisk eksponentiel tid Dynamisk Programmering: –Beregn delløsninger systematisk –Typisk polynomiel tid

Dynamisk Programmering: Optimal opdeling af en stang En stang af længde 4 kan opdeles på 8 forskellige måder – dog kun 5 forskellige resultater Problem: Opdel en stang i dele, hvor hver del har en pris, således at den resulterende sum er maksimereret ens løsninger

Bedste pris Opdeling Optimal opdeling af stænger af længde 1..10

Optimal opdeling af en stang: Rekursiv løsning

C UT -R OD (p,2) allerede beregnet Tid O(2 n )

Optimal opdeling af en stang: Rekursiv løsning undgå genberegning ?

Optimal opdeling af en stang: Rekursiv løsning + Memoization Tid O(n 2 ) husk resultatet !

Optimal opdeling af en stang: Systematisk udfyldning rækkefølgen vigtig ! Tid O(n 2 )

Optimal opdeling af en stang: Udskrivning af løsningen Tid O(n 2 +n)

”Colonel Motors Corporation” Mål Find en hurtigste vej fra ”Chassis enters” til ”completed auto” – knuderne angiver hvor lang tid de forskellige ting tager Naive algoritme Prøv alle 2 n forskellige veje – tid Ω(2 n ) [CLRS, 2. udgave]

”Colonel Motors Corporation” Korteste tid til og med stationerne Forrige station for hurtigste løsning [CLRS, 2. udgave]

”Colonel Motors Corporation” Længden af den hurtigste vej findes i tid O(n) [CLRS, 2. udgave]

”Colonel Motors Corporation” Gå ”baglæns” igennem de beregnede værdier, og find løsningen [CLRS, 2. udgave]

Matrix Multiplikation Multiplikation af to matricer A og B af størrelse p 1 x p 2 og p 2 x p 3 tager tid O(p 1 ·p 2 ·p 3 )

(A·B)·C eller A·(B·C) ? Matrix-kæde Multiplikation Matrix multiplikation er associativ (kan sætte paranteser som man vil) men ikke kommutative (kan ikke bytte rundt på rækkefølgen af matricerne)

Problem: Find den bedste rækkefølge (paranteser) for at gange n matricer sammen A 1 · A 2 · · · A n hvor A i er en p i-1 x p i matrix NB: Der er Ω(4 n /n 3/2 ) mulige måder for paranteserne Matrix-kæde Multiplikation

m[i,j] = minimale antal (primitive) multiplikationer for at beregne A i · ··· · A j Matrix-kæde Multiplikation Tid Ω(4 n /n 3/2 ) (A i ··· A k ) · (A k+1 ··· A j )

Matrix-kæde Multiplikation Tid O(n 3 )

Matrix-kæde Multiplikation

Tid O(n)

”Memoized” Matrix-kæde Multiplikation Tid O(n 3 )

Længste Fælles Delsekvens B D C A B A A B C B D A B

Længste Fælles Delsekvens B D C A B A A B C B D A B j Y = X = i længden af en længste fælles delsekvens af x 1 x 2 ∙∙∙x i og y 1 y 2 ∙∙∙y j

Længste Fælles Delsekvens B D C A B A A B C B D A B

Længste Fælles Delsekvens Tid O(nm)

Tid O(n+m) Længste Fælles Delsekvens

Optimale Binære Søgetræer Forventet søgetid 2.80 Forventet søgetid 2.75 ( + 1 ) x = k1k1 k2k2 k3k3 k4k4 k5k5 p1p1 p2p2 p3p3 p4p4 p5p5 q1q1 q2q2 q3q3 q4q4 q5q5 q0q0 d1d1 d2d2 d3d3 d4d4 d5d5 d0d0

Optimale Binære Søgetræer k1k1 k2k2 k3k3 k4k4 k5k5 p1p1 p2p2 p3p3 p4p4 p5p5 q1q1 q2q2 w(3,4) q4q4 q0q0 q5q5 q3q3 forventet optimal tid for et søgetræ indeholdende k i...,k j d1d1 d2d2 d3d3 d4d4 d5d5 d0d0

Optimale Binære Søgetræer Tid O(n 3 ) k1k1 k2k2 k3k3 k4k4 k5k5 p1p1 p2p2 p3p3 p4p4 p5p5 q1q1 q2q2 w(3,4) q4q4 q0q0 q5q5 q3q3 d1d1 d2d2 d3d3 d4d4 d5d5 d0d0

Konstruktion af Optimalt Binært Søgetræ r = root[ i, j ] root[ i, r-1 ] root[ r+1, j ] k1k1 k2k2 k3k3 k4k4 k5k5 p1p1 p2p2 p3p3 p4p4 p5p5 q1q1 q2q2 w(3,4) q4q4 q0q0 q5q5 q3q3 d1d1 d2d2 d3d3 d4d4 d5d5 d0d0

Dynamisk Programmering Generel algoritmisk teknik Krav: ”Optimal delstruktur” – en løsning til problemet kan konstrueres ud fra optimale løsninger til ”delproblemer” Rekursionsligning Eksempler –Stang opdeling –Matrix-kæde multiplikation –Længste fælles delsekvens –Optimale søgetræer