De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.

Verwante presentaties


Presentatie over: "1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13."— Transcript van de presentatie:

1 1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13

2 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen  Makkelijkste versie: “verwachtte tijd even snel als gebalanceerde bomen”  Hier: een “informele” inleiding  Hoe werken ze?  Een enkel bewijsje over de tijdgrens

3 3 Operaties:  Zoek-Element  Minimum  Maximum  Volgende  Vorige  Insert  Delete  Kunnen allemaal goed gedaan worden met skiplists

4 4 Eerst maar eens: “een gewone dubbelgelinkte lijst” 23571113 Alles in O(n) in het slechtste geval…

5 5 Toevoegen van “snelweg” 235711131723 271323

6 6 Zoeken met de snelweg  “Loop eerst over de snelweg, totdat je te ver zou gaan, en ga dan door de gewone lijst”

7 7 Hoeveel stappen maximaal?  Aantal stappen in laag 1: maximaal tot eind  Aantal stappen in laag 2: maximaal stuk tussen twee afritten  Slechtste geval zit tussen:  Maximum van geval 1 en geval 2  Twee keer ‘t maximum van geval 1 en geval 2  Als je nu de afritten op afstand n 1/2 zet dan krijg je ‘t best mogelijke (op factor 2 na)

8 8 Meer dan twee lagen  Algoritme om x te zoeken:  Begin links in de bovenste laag  Herhaal tot gevonden of helemaal rechts- onderaan:  Zitten we in x? Ja: klaar  Is de volgende in mijn laag < x? Ja: ga een stap verder in deze laag Nee: ga naar dezelfde key in de laag eronder (dit geval nemen we ook als er geen volgende in mijn laag is)

9 9 Hoe grote stappen per laag?  Als je k lagen hebt, en elke laag r stappen doet voordat je naar de volgende laag gaat:  Maximaal iets van kr stappen  Totaal kan je zo ongeveer k r knopen hebben op de onderste laag  n  k r dus r  log n / log k  Als je k = log n neemt en r=2 heb je een “verstopte gebalanceerde binaire boom”: ‘t kost ook O(log n) tijd

10 10 Hoe in te voegen en weg te laten?  We maken een versie die “met grote kans” snel werkt  Weglaten is simpel: gewoon weglaten en overal waar je voorkomt je buren verbinden  Tijd: zoeken + O(aantal lagen waar ie in voorkomt)  Invoegen:  In elk geval invoegen in de onderste laag Tijd: zoeken + O(aantal lagen waar ie in voorkomt)  Maar … in hoeveel lagen daarboven?

11 11 Kansen  Stop met bepaalde kans (bijvoorbeeld ½) de knoop in de laag erboven  Herhaal totdat “munt”  Gooi een munt op.  Is ‘t kop, stop dan de knoop in nog een laagje meer  “Gemiddeld” heb je O(log n) lagen  “Gemiddeld” zitten er steeds twee knopen tussen elke afrit

12 12 Kinestetische leerervaring?  Voorbeeldje uitproberen

13 13 Opmerkingen  Slechtste geval van algoritme: oneindig!   Gemiddeld: prima  Je kan ook bewijzen dat de kans dat “alles” in O(log n) gaat heel groot is (naar 1 gaat voor n naar oneindig)  “Variatie”: in plaats van kans ½ misschien 1/3 of …  Constantes kunnen verschillen…

14 14 Een bewijsje  Met hoge waarschijnlijkheid zijn er O(log n) lagen  Pr[x is in meer dan c log n lagen] = ½ c log n = 1/ n c  Kans dat er minstens 1 element is die in meer dan c log n lagen is:  Hooguit de som van de kansen per element  Dus hooguit n * 1/ n c = 1/n c-1  De rest … zonder bewijs

15 15 Skip lists  Worden soms gebruikt in plaats van binaire bomen  Wat makkelijker  Operaties als minimum, maximum, successor, predecessor: snel  Successor: O(?)  In eerste instantie O(log n), maar de tweede successor O(1)  Gemiddeld: O(1)

16 16 Tenslotte  Volgende week: Gerard Tel over string matching!  Bedankt voor de aandacht


Download ppt "1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13."

Verwante presentaties


Ads door Google