Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.

Slides:



Advertisements
Verwante presentaties
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Advertisements

Algoritmische problemen Onbeslisbaar / niet-berekenbaar Geen algoritme mogelijk Tegel- of domino-problemen Woordcorrespondentie-probleem Syntactisch equivalentie.
Datastructuren Quicksort
Hoofdstuk 8: Recursie.
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
Datastructuren Analyse van Algoritmen en O
Datastructuren Analyse van Algoritmen en O
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.

1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Fibonacci & Friends Met dank aan Gerard Tel.
Datastructuren Zoekbomen
1 Datastructuren Heapsort College 4. 2 Vandaag  Kort: ADT vs Datastructuur  Heaps en Heapsort  Tijd over: ondergrenzen voor sorteren; nog sneller sorteren.
1 Datastructuren Zoekbomen II Invoegen en weglaten.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 Oplossing Langste Pad Probleem Cees Witteveen
TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica In3 005 Deel 2 College 1 Cees Witteveen Parallelle en Gedistribueerde Systemen.
1 Datastructuren Quicksort en andere sorteermethoden College 3.
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
1 Optuigen van datastructuren 2 Dynamische order statistics (2)
Optuigen van datastructuren
Datastructuren Sorteren: bubble, merge, quick
1 Datastructuren Heapsort (2e deel) College 5. 2 Vandaag  Heaps en Heapsort  (eind)  Nog sneller sorteren:  Ondergrenzen  Linair sorteren.
Datastructuren Sorteren, zoeken en tijdsanalyse
ribwis1 Toegepaste wiskunde Lesweek 01 – Deel B
Statistiekbegrippen en hoe je ze berekent!!
Datastructuren Sorteren, zoeken en tijdsanalyse
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen van.
Sorteeralgoritmen. Sorteren: aanpak 1 Hoe ga je een rij getallen sorteren met PC? Sorteren door selectie (= selection sort): Zoek de kleinste waarde Sorteer.
T U Delft Groep Parallelle en Gedistribueerde Systemen PGS College in345 Deel 2 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit Informatie.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 2 Cees Witteveen.
Algoritme Inhoud: Definitie algoritme Recursieve algoritmes Opgaven
Intermezzo: Queries op zoekbomen Datastructuren. Queries: hoe op te lossen We hebben: – Een zoekboom (gewoon, rood-zwart, AVL,…) – Een vraag / querie.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
ribWBK11t Toegepaste wiskunde Lesweek 01
1 Datastructuren Quicksort College 3. 2 Vorige keren  O-notaties  Sorteren: insertion sort, bubble sort  Kosten (n 2 ) tijd in het slechtste geval.
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen (vorige keer) Hashtabellen –Oplossen van botsingen met “ketens” (chaining) Vorige.
1 Datastructuren Sorteren, zoeken en tijdsanalyse College 2.
1 Datastructuren Analyse van algorithmen (vervolg) Heapsort College 4.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
De O-notatie Algemene lijn: Broncode analyseren Herhalingsfrequentie bepalen O-notatie afleiden.
De O-notatie Algemene lijn: Broncode analyseren Herhalingsfrequentie bepalen O-notatie afleiden.
Amorized Analysis en Union-Find Algoritmiek. 2 Vandaag Amortized analysis –Technieken voor tijdsanalyse van algoritmen Union-find datastructuur –Datastructuur.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Algoritmiek 2015 / 2016 Algoritmiek1. Waarom dit vak? Omdat –Mensen ongeduldig zijn … –Het belangrijk is dat antwoorden (van berekeningen door computers)
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
Kortste Paden Algoritmiek. 2 Vandaag Kortste Paden probleem All pairs / Single Source / Single Target versies DP algoritme voor All Pairs probleem (Floyd’s.
Netwerkstroming Algoritmiek. 2 Vandaag Netwerkstroming: definitie en toepassing Het rest-netwerk Verbeterende paden Ford-Fulkerson algoritme Minimum Snede.
Greedy algorithms Algoritmiek. 2 Vandaag Greedy algorithms: wat zijn dat? Voorbeelden: –gepast betalen met euromunten –AB-rijtje –… Knapsack probleem.
Heuristieken en benaderingsalgoritmen Algoritmiek.
Datastructuren voor grafen Algoritmiek. 2 Grafen Model van o.a.: –Wegennetwerk –Elektrische schakeling –Structuur van een programma –Computernetwerk –…
Gerandomiseerde algoritmes
Doorzoeken van grafen Algoritmiek.
All-Pairs Shortest paths
Datastructuren voor graafrepresentatie
Minimum Opspannende Bomen
Amorized Analysis en Union-Find
Benaderingsalgoritmen
Divide & Conquer: Verdeel en Heers
Bewerkingen 5de leerjaar.
Kiezen met Kaarten.
3 vmbo-KGT Samenvatting Hoofdstuk 10
Kiezen met Kaarten.
Kiezen met Kaarten.
Transcript van de presentatie:

Divide & Conquer: Verdeel en Heers vervolg Algoritmiek

Algoritmiek: Divide & Conquer2 Algoritmische technieken Vorige keer: –Divide and conquer techniek –Aantal toepassingen van de techniek –Analyse met Master theorem en substitutie Vandaag: –Extra toepassing: matrix vermenigvuldigen, … –Simplificatie Techniek, aantal voorbeelden Selectie

Algoritmiek: Divide & Conquer3 Matrix multiplicatie A, B n bij n matrices. Bepaal C = A. B. Geeft O(n 3 ) algoritme: 2n-1 bewerkingen per element van C. Kan sneller: algoritme van Strassen. Hier: neem aan n is macht van 2.

Algoritmiek: Divide & Conquer4 Splitsen in matrices half zo groot En een trucje om 2 by 2 matrices te vermenigvuldigen met minder vermenigvuldigen …

Algoritmiek: Divide & Conquer5 m 1 = (a 21 + a 22 – a 11 )(b 22 – b 12 + b 22 ) m 2 = a 11 b 11 m 3 = a 12 b 21 m 4 = (a 11 – a 21 )(b 22 – b 12 ) m 5 = (a 21 + a 22 )(b 12 – b 11 ) m 6 = (a 12 – a 21 + a 11 – a 22 ) b 22 m 7 = a 22 (b 11 + b 22 – b 12 – b 21 ) 7 vermenigvuldigingen in plaats van 8 Reken maar na…

Algoritmiek: Divide & Conquer6 Divide en conquer vermenigvuldigen Basisgeval: 1 bij 1 vermenigvuldigen Splits als boven; vermenigvuldig via schema m 1 t/m m 7 7 vermenigvuldigingen van n/2 bij n/2 matrices en  (n 2 ) optellingen van twee getallen

Algoritmiek: Divide & Conquer7 Tijdsanalyse T(n) = 7 * T(n / 2) +  (n 2 ) Mastertheorem: T(n) = O(n lg 7 ) : ongeveer O(n 2.81 ). (Strassen, 196*) Coppersmith & Winograd, 1986:  (n ) Ik bedoel: `O’, maar met een nare constante factor

Algoritmiek: Divide & Conquer8 Simplification Speciaal geval D&C: splitsen in 1 kleinere instantie: d.w.z.: probleem makkelijker maken maar het wel helemaal correct oplossen.

Algoritmiek: Divide & Conquer9 Recursief Schema Function SIMPLIFICATION (Input I) If probleem klein of eenvoudig genoeg Then los het probleem voor I direct op; return deze oplossing Else Pas simplification op I toe; verkrijg I2 H = SIMPLIFICATION(I2); Gebruik H om de oplossing voor I te krijgen; return deze oplossing Kan iteratief met stack. Conquer

Algoritmiek: Divide & Conquer10 Voorbeeld 1 Sorteren met simplification Sort(A[i … j]) –Zoek het kleinste element a k in A[i … j] –Verwissel a i en a k –Recursie: Sort(A[i+1 … j]) –Klaar (Conquerstap is triviaal) Simplication T(n) = T(n – 1) +O(n) = O(n 2 )

Algoritmiek: Divide & Conquer11 Voorbeeld 2: Binary search Bepaal of x in A[i … j] zit: BinarySearch(A[i … j], x) If (i==j) then return (A[i] == x) Else k = (i+j)/2 afgerond; If (x <= A[k]) then return BinarySearch(A[i … k],x) else return BinarySearch(A[k+1 … j],x)

Voorbeeld 3 Boom Gegeven: Graaf G=(V,E) Vraag: is G een boom (samenhangend en zonder cycle)? Er zijn verschillende manieren om dit op te lossen: –Exploratie (“depth first search”) –Simplificatie (nu) Algoritmiek: Divide & Conquer12

Grafen: terminologie Graad: aantal kanten dat aan een knoop grenst G-v: graaf die je krijgt door v en alle kanten met v als een eindpunt weg te laten uit G Algoritmiek: Divide & Conquer13

Simplificatie algoritme Observatie 1: als G een boom is dan is een van de volgende twee het geval: –G heeft 1 knoop en geen kanten (triviaal geval) –G heeft minstens 2 knopen, en minstens 1 knoop met graad 1 Observatie 2: Stel v heeft graad 1. G is een boom dan en slechts dan als G-v is een boom Algoritmiek: Divide & Conquer14

Simplificatie algoritme Herhaal zolang G een knoop met graad 1 heeft: –Kies een knoop v van graad G –Zet G = G-v If G heeft 1 knoop en geen kanten then return YES Else return NO Algoritmiek: Divide & Conquer15 Heeft O(n) Implementatie Details later Heeft O(n) Implementatie Details later

Algoritmiek: Divide & Conquer16 Selectie probleem: Vind het s-kleinste element Gegeven: array A[1…n] Neem even aan (niet echt nodig): alle elt in A zijn verschillende (bijv.) integers. Gegeven ook: getal s, tussen 1 en n. Gezocht: element x uit A zodat er precies s – 1 elementen kleiner dan x in A zitten. Belangrijk geval: mediaan: n/2 (afgerond, bijv. naar boven)

Algoritmiek: Divide & Conquer17 Hoeveel tijd kost het om dit Selection probleem op te lossen? In  (n log n) tijd met sorteren. Nu: –O(n) verwachtte tijd met simplificatie-strategie: Deels Herhaling; gebruikt ideeën van quicksort –O(n) tijd worst case met ingewikkelder algoritme voor vinden benadering van mediaan, plus daarna weer simplificatie.

Algoritmiek: Divide & Conquer18 Randomized Selection Function RandomizedSelection(A[i…j], s) If (i == j) then … Else: Kies een (random) element A[k] uit A[i…j] als pivot Gebruik Partition (van Quicksort) om A te verdelen in een stuk A[i…l] van elementen = A[k]. (beide niet leeg.) If s <= l – i + 1 then (gezocht elt. zit in 1 e stuk) RandomizedSelection(A[i…l],s) Else RandomizedSelection(A[l+1 … j], s – (l – i + 1)) Gebruikt Simplification strategie

Algoritmiek: Divide & Conquer Zoek 5 e elt Zoek 2 e elt Zoek 2 e elt Zoek 1 e elt.

Algoritmiek: Divide & Conquer20 Tijdsanalyse Slechtste geval (Worst case):  (n 2 ) Verwacht: O(n) Probleem bij worst case: pivot kan `scheef zitten’. Idee voor nieuw algoritme: zorg dat de pivot `redelijk in het midden zit…’.

Algoritmiek: Divide & Conquer21 Plan Maak een algoritme dat een pseudo- mediaan zoekt. Deze zit `in de buurt van de mediaan’. Selection gebruikt nu Pseudo-mediaan voor de pivot.

Algoritmiek: Divide & Conquer22 Hulproutine Mediaan van 5 elementen Function MiddleOfAtMostFive(A[i…i+4]) –Geeft mediaan van deze verzameling van maximaal 5 elementen. –Kost natuurlijk O(1) tijd per aanroep. Of 0, 1, 2, of 3

Algoritmiek: Divide & Conquer23 Selection met Pseudo-median Function Selection(A[i…j], s) If (i == j) then … Else: Pivot = Pseudomedian(A[i…j]). Gebruik Partition (van Quicksort) om A te verdelen in een stuk A[i…l] van elementen = Pivot. (beide niet leeg.) If s <= l – i + 1 then (gezocht elt. zit in 1 e stuk) RandomizedSelection(A[i…l],s) Else RandomizedSelection(A[l+1 … j], s – (l – i + 1))

Algoritmiek: Divide & Conquer24 Pseudo-mediaan Function Pseudomedian(A[i…j]) n = j – i + 1 If n <= 5 then return MiddleOfAtMostFive(A[i…j]) Else z = n/5, omlaag afgerond Maak Array Z[0…z – 1] For k=0 to z-1 do Z[k] = MiddleOfAtMostFive(A[i+5k … i+5k+4]) Return Selection(Z[0…z-1],  z/2  )

Algoritmiek: Divide & Conquer25 = pseudomediaan

Algoritmiek: Divide & Conquer26 Stelling Stel p is de output van Pseudomedian(A[1…n]) (i)Er zijn minstens 3n/10 – 13 elementen in A[1…n] kleiner dan p. (ii)Er zijn minstens 3n/10 – 13 elementen in A[1…n] groter dan p.

Algoritmiek: Divide & Conquer27 Argument (i) Er zijn minstens 3n/10 – 13 elt < p. –n/5 –1 groepjes van 5 elementen –n/10 – 3 van die groepjes hebben mediaan kleiner dan p. –Elk van die groepjes heeft tenminste 3 elt kleiner dan p: 3n/10 – 15 elementen. –En nog 2 elt uit het groepje van de pseudomediaan zelf. (ii) Net zo. p

Algoritmiek: Divide & Conquer28 Dus: Selection algoritme gaat in recursie op array met ten hoogste n – (3n/10 – 13) = 7n/ elementen. Natuurlijk nooit meer dan n-1. Tijdsanalyse blijft lastig: we gaan op twee verschillende plekken in recursie… ‘t Gaat goed omdat 1/5 + 7/10 < 1…

Algoritmiek: Divide & Conquer29 Recurrente betrekking voor de tijd van Selection algoritme T(n)  dn+ T(  n/5  ) + max{T(m) | m  7n/10+13} voor constante d, n > 5. (Ruwweg: T(n) = O(n) + T(n/5) + T(7n/10+13).) Met inductie: T(n)  c n.

Algoritmiek: Divide & Conquer30 Stelling Selection kan in O(n) tijd. Randomized algoritme vaak praktischer, en gemiddeld veel sneller (constante factoren!) maar soms wil je garantie op tijd… Op meerdere plekken gebruiken we Simplification / D&C strategie

Algoritmiek: Divide & Conquer31 Simplification als een vorm van preprocessing Simplification Solve Undo Simplification Zolang mogelijk Als simplificatie niet meer mogelijk

Algoritmiek: Divide & Conquer32 Ontwerp van algoritmen met D&C of simplificatie Gebruik `schema’ Welke structuur zit er in het probleem? Zijn er mogelijkheden om het probleem te `splitsen’? Of vereenvoudigen?

Algoritmiek: Divide & Conquer33 Samenvatting Divide & Conquer techniek Simplification Algoritmen met deze technieken voor een aantal problemen