Download de presentatie
De presentatie wordt gedownload. Even geduld aub
1
Gerandomiseerde algoritmes
Dat was random… Algoritmiek
2
Gerandomiseerde algoritmes
Gebruiken getallen uit toevalsgeneratoren De toevalsgetallen sturen twee dingen: hoe lang het algoritme zoekt in welk deel van de oplossingsruimte het algoritme zoekt Algoritmiek
3
Waarom randomiseren? Probleem snel(ler) oplossen
Vaak zijn gerandom. algoritmes sneller dan niet-gerandom. algoritmes Een goede benadering van het optimum te vinden Het juiste antwoord te vinden Dit alles met een zekere kans natuurlijk Algoritmiek
4
Oppervlakteberekening (anti-aliasing of image-scaling)
Hoe kan je de oppervlakte van het groene gebied berekenen? Vorig jaar had ik dit een kwart slag gedraaid. Toen leek ‘t een beetje op een konijntje. Algoritmiek
5
Oppervlakteberekening (anti-aliasing of image-scaling)
11/30 Kies n keer een willekeurig punt in het gebied van het vierkant. Tel hoe vaak (zeg m) keer zo’n punt in het groene gebied valt. Geschatte oppervlakte: m/n * oppervlakte vierkant. Maar ‘t is te gemeen om met hagel op een konijntje te schieten… Algoritmiek
6
Eigenschappen 11/30 Hoe meer punten, hoe kleiner de kans je ver van het juiste antwoord af zit. Implementatie makkelijk Wel nodig: snelle test of gegeven punt in ‘t gebied zit. Er zijn snellere en (vaak) betrouwbaardere methoden, maar … geen simpelere. Algoritmiek
7
Gerandomiseerde algoritmes
Twee dingen zijn belangrijk bij randomisatie: Wat is de kans dat het algoritme een (in)correct antwoord geeft? Wat is de (verwachte) looptijd van het algoritme? Algoritmiek
8
Las Vegas algoritme Geeft altijd een correct ja/nee antwoord of oplossing Verwachte looptijd is eindig/beperkt Intuïtie: we gokken met hoeveel rekentijd we gebruiken, maar niet met het antwoord Algoritmiek
9
Monte Carlo algoritme Geeft niet altijd een correct antwoord
Eenzijdige fout of tweezijdige fout Wel grote kans op goed antwoord Worst-case looptijd is eindig/beperkt Intuïtie: we gokken met het antwoord, maar niet met hoeveel looptijd wel nodig hebben Algoritmiek
10
Voorbeeld: meerderheid
Algoritmiek
11
Meerderheid 1 Gegeven een array A met n elementen
Tenminste de helft van alle elementen in A is hetzelfde element a, en alle andere elementen zijn verschillend Wat is a? 1 2 5 6 Algoritmiek
12
Meerderheid 1: deterministisch
O(n) tijd: loop array door totdat twee gelijke elementen gevonden zijn Dit algoritme kost W(n) tijd als eerste n/2 elementen die je bekijkt allemaal verschillend zijn Randomisatie: O(1) verwachte tijd Algoritmiek
13
Meerderheid 1: Las Vegas
do kies i≠j uniform at random uit {1,…,n} while A[i] ≠ A[j] return A[i] Er zijn juiste i,j maar wanneer vinden we die? Kans op succes in één ronde: ~1/4 (½n/n)*((½n-1)/n-1) Verwacht aantal rondes tot succes: 4 (Bernoulli) Verwachte looptijd: O(1) Met kans 0 stopt ie niet Algoritmiek
14
Las Vegas algoritme Geeft altijd een correct ja/nee antwoord of oplossing Verwachte looptijd is eindig/beperkt O(1) hier Intuïtie: we gokken met hoeveel rekentijd we gebruiken, maar niet met het antwoord Algoritmiek
15
Meerderheid 2 Gegeven een array A met n elementen
Deze array is van één van twee types: tenminste de helft van alle elementen in A is hetzelfde, en alle andere elementen zijn verschillend alle elementen zijn verschillend 1 2 5 6 1 2 3 5 4 6 Algoritmiek
16
Meerderheid 2: deterministisch
O(n) tijd: loop array door totdat twee gelijke elementen gevonden zijn of niet Dit algoritme kost W(n) tijd als eerste n/2 elementen die je bekijkt allemaal verschillend zijn Algoritmiek
17
Meerderheid 2: Monte Carlo
kies i≠j uniform at random uit {1,…,n} if A[i] = A[j] return “type 1” else return “type 2” Als input “type 2”, uitvoer correct Als input “type 1”, uitvoer misschien fout Wat is de kans? Correct: kans ~1/4 Incorrect: kans ~3/4 Looptijd: O(1) Algoritmiek
18
Monte Carlo algoritme Geeft niet altijd een correct antwoord
Eenzijdige fout of tweezijdige fout Hier: eenzijdige fout-kans van ≤ 3/4 Wel grote kans op goed antwoord Worst-case looptijd is eindig/beperkt Hier: O(1) Intuïtie: we gokken met het antwoord, maar niet met hoeveel looptijd wel nodig hebben Algoritmiek
19
Las Vegas Selecteren Algoritmiek
20
Selectie probleem Gegeven array A met n verschillende getallen
Wat is het k-de kleinste element? Hoe snel deterministisch? Deterministisch: O(kn) of O(n log n) k keer grootste element vinden of eerst sorteren k=2 2 k=4 4 1 2 3 5 4 6 Algoritmiek
21
Selectie: algoritme Algoritme: SplitSelectie(A, k) Kies een element a uit A Splits A in A<a (getallen in A < a) en A>a (getallen in A > a) if |A<a| = k-1 then return a elseif |A<a| ≥ k then return SplitSelectie(A<a, k) else return SplitSelectie(A>a, k - |A<a| - 1) Algoritmiek
22
Selectie: algoritme SplitSelectie(A, k) Kies een element a uit A Splits A in A<a en A>a if |A<a| = k-1 then return a elseif |A<a| ≥ k then return SplitSelectie(A<a, k) else return SplitSelectie(A>a, k-|A<a|-1) Dit algoritme geeft altijd het juiste antwoord, ongeacht hoe we a kiezen Bij k = 1 idd het kleinste getal in A Looptijd: T(n) ≤ cn + T(…) Hangt af van a Algoritmiek
23
Selectie: algoritme Looptijd: T(n) ≤ cn + T(…) a is mediaan van A
SplitSelectie(A, k) Kies een element a uit A Splits A in A<a en A>a if |A<a| = k-1 then return a elseif |A<a| ≥ k then return SplitSelectie(A<a, k) else return SplitSelectie(A>a, k-|A<a|-1) Looptijd: T(n) ≤ cn + T(…) a is mediaan van A T(n) ≤ cn + T(n/2) Dan T(n) ≤ 2cn a deelt A op stukken van grootte ≥ 𝛜 n T(n) ≤ cn + T((1-𝛜)n) T(n) ≤ cn/𝛜 Algoritmiek
24
Selectie: algoritme Looptijd: T(n) ≤ cn + T(…)
SplitSelectie(A, k) Kies een element a uit A Splits A in A<a en A>a if |A<a| = k-1 then return a elseif |A<a| ≥ k then return SplitSelectie(A<a, k) else return SplitSelectie(A>a, k-|A<a|-1) Looptijd: T(n) ≤ cn + T(…) Hoe weten we welke a goed is? Kies a uniform at random! Algoritmiek
25
Selectie: algoritme Las Vegas! Geeft altijd correct antwoord
SplitSelectie(A, k) Kies random element a uit A Splits A in A<a en A>a if |A<a| = k-1 then return a elseif |A<a| ≥ k then return SplitSelectie(A<a, k) else return SplitSelectie(A>a, k-|A<a|-1) Las Vegas! Geeft altijd correct antwoord Looptijd: T(n) ≤ cn + T(…) ?? Doel/hoop: a ligt dicht genoeg bij mediaan in buurt Algoritmiek
26
Selectie: algoritme Kijk naar A<a en A>a
SplitSelectie(A, k) Kies random element a uit A Splits A in A<a en A>a if |A<a| = k-1 then return a elseif |A<a| ≥ k then return SplitSelectie(A<a, k) else return SplitSelectie(A>a, k-|A<a|-1) Kijk naar A<a en A>a a is goed als |A<a| en |A>a| beide ≥ n/4, dus beide ≤ 3n/4 Wat is de kans dat a goed is? 1/2 Verwachting: 2 keer a kiezen voor goede keus Algoritmiek
27
Looptijd in fases Algoritme is in fase j als de grootte van A tussen (3/4)j n en (3/4)j+1 n is Hoeveel rekenstappen zetten we naar verwachting in fase j? Iedere recursieve aanroep: ≤ c (3/4)j n Naar verwachting ≤ 2 recursieve aanroepen in fase j Dus ≤ 2 c (3/4)j n Algoritmiek
28
Verwachte looptijd Verwachte looptijd is som van looptijden in fase j voor alle j Σj 2 c (3/4)j n ≤ 8 cn = O(n) Algoritmiek
29
Verdieping Er is ook een deterministische manier om selectie in O(n) tijd te doen (zie boek) Selectie lijkt op Quicksort. Wat te denken van Quicksort met random gekozen ‘pivot’? Verwachte looptijd: O(n log n) Idee vrijwel hetzelfde, zie boek Algoritmiek
30
Snijden met monte carlo
Algoritmiek
31
Minimum Snede Gegeven graaf G=(V,E), een snede is een partitie (A,B) van V De grootte van de snede is het aantal kanten met 1 einde in A en andere in B Probleem: vind een snede van minimum grootte A B Grootte = 4 Algoritmiek
32
Hoe bereken ik een snede?
Partitie (A,B) van V zdd aantal kanten met 1 einde in A en 1 einde van B zo klein mogelijk is O(n+a), want minimum snede heeft grootte gelijk aan minimum graad O(n3) d.m.v. Floyd-Warshall algoritme O(n2a) met slim gebruik Ford-Fulkerson algoritme NP-volledig A B Grootte = 4 Algoritmiek
33
Snede berekenen Stelling: Minimum Snede kan berekend worden in O(n2a) tijd Bewijs: Stel (A,B) is minimum snede Kies s een willekeurige knoop (zeg in A) en t een willekeurige knoop aan de andere kant (zeg B) Dan is de grootte van (A,B) gelijk aan de grootte van een minimum s,t-snede Probeer voor vaste s alle mogelijkheden voor t en bereken een minimum s,t-snede met Ford-Fulkerson in O(na) tijd (max stroming is hoogstens n, waarom?) Geef de kleinst gevonden snede terug Algoritmiek
34
Minimum snede: sneller?
Kan dit sneller? Ja veel sneller Sneller dan maximum stroming vinden Gebruik geen maximum stromingsalgoritme Nog slimmer idee: randomisatie! Algoritmiek
35
Multigrafen We werken met multigrafen
Meerdere kanten tussen zelfde paar knopen toegestaan Maar geen self-loop (kant tussen zelfde knoop) Contractie van kant e = (u,v): gooi kanten {u,v} weg en verenig u en v Algoritmiek
36
Contractie Contractie van kant e = (u,v): gooi kanten {u,v} weg en verenig u en v Superknoop w. Met S(w) geven we de verzameling knopen aan die door w opgegeten is In dit geval: S(w) = {u,v} x a x a w u v y b y b Algoritmiek
37
Contractie-algoritme
Laat (A,B) een minimum snede zijn en e = (u,v) Idee: als u,v beide in A of beide in B, dan veranderd de grootte van de minimum snede niet na contractie van e u A B v Algoritmiek
38
Contractie-algoritme
Laat (A,B) een minimum snede zijn en e = (u,v) Idee: als u,v beide in A of beide in B, dan veranderd de grootte van de minimum snede niet na contractie van e Dus contraheer een kant en hoop op goede afloop A B w Algoritmiek
39
Afloop contractie algoritme
Lemma: Als G verbonden is en (A,B) een minimum snede is, dan is zowel deelgraaf A als deelgraaf B verbonden A B Algoritmiek
40
Afloop contractie algoritme
Lemma: Als G verbonden is en (A,B) een minimum snede is, dan is zowel deelgraaf A als deelgraaf B verbonden Bewijs: anders kan ik een component van A naar B verplaatsen (of visa versa) A B Algoritmiek
41
Afloop contractie algoritme
Lemma: Als G verbonden is, deelgraaf A is verbonden, en beide eindpunten van kant e liggen in A, dan zijn G en A na contractie van e ook verbonden Bewijs: ieder pad tussen twee knopen dat de kant e gebruikte, kan nu via de superknoop lopen Algoritmiek
42
Afloop contractie algoritme
Lemma: Stel (A,B) is een minimum snede van een verbonden graaf. Dan bestaat er een serie kanten zdd dat het contraheren van deze serie kanten leidt tot een graaf met twee knopen x, y met S(x) = A en S(y) = B Bewijs: contraheer de kanten in deelgraaf A (die verbonden is) en contraheer daarna de kanten in deelgraaf B (die verbonden is) Algoritmiek
43
Afloop contractie-algoritme
We contraheren kanten at random totdat er twee knopen x, y over zijn Antwoord dat we geven is het aantal kanten tussen deze twee knopen, ofwel de snede (S(x),S(y)) Stelling: De kans dat het algoritme een minimum snede oplevert is minstens 1/n2 Algoritmiek
44
Bewijs (1) Stelling: De kans dat het algoritme een minimum snede oplevert is minstens 1/n2 Bewijs: Stel minimum snede heeft k kanten en tot nu is er daar nog geen van gecontraheerd Dan heeft iedere knoop minstens graad k Voor een knoop v met graad minder dan k heeft de snede (S(v), S(V\{v})) grootte k Dus G heeft minstens kn/2 kanten Algoritmiek
45
Bewijs (2) G heeft minstens kn/2 kanten
De kans dat we in huidige iteratie een kant van de minimum snede kiezen is hoogstens k/(kn/2) = 2/n De kans dat we nooit een fout maken is dus ≥ (1 - 2/n) (1 - 2/(n-1)) … (1 - 2/3) = ((n-2) / n) ((n-3)/(n-1)) ((n-4)/(n-2)) ... = 2 / (n (n-1)) Stelling: De kans dat het algoritme een minimum snede oplevert is minstens 1/n2 Algoritmiek
46
Verdieping (1) Contractie-algoritme: kans op goed antwoord is niet zo groot Door herhalen kun je de kans op een goed antwoord vergroten n2 keer herhalen: kans op fout antwoord ≤ 1/e Nu niet meer sneller dan Ford-Fulkerson n2 ln n keer herhalen: kans op fout antwoord ≤ 1/n Wel slechtere looptijd Algoritmiek
47
Verdieping (2): random Methode Random, die een willekeurig element geeft uit een verzameling Volgens bepaalde kansverdeling; meestal uniform Bijv: random getal uit [0,1), uniform verdeeld Of: random getal uit {1,2,3,4,5,6} elk met kans 1/6. Praktijk: Pseudo-random generatoren Rij x0, x1, … , met bijv.: xi = axi-1 + b mod n, geschikte a, b, n Zal periodiek zijn! a, b, n zodat periode zo lang mogelijk is. Echte random generatoren: bijv. met radio-actief verval. Algoritmiek
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.