De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Gerandomiseerde algoritmes

Verwante presentaties


Presentatie over: "Gerandomiseerde algoritmes"— Transcript van de presentatie:

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


Download ppt "Gerandomiseerde algoritmes"

Verwante presentaties


Ads door Google