1 / 16

Datastructuren Een informele inleiding tot Skiplists

Datastructuren Een informele inleiding tot Skiplists. Onderwerp 13. Skiplists. Vrij eenvoudige datastructuur “Makkelijker” dan gebalanceerde bomen Kunnen hetzelfde als gebalanceerde bomen Makkelijkste versie: “verwachtte tijd even snel als gebalanceerde bomen”

ita
Download Presentation

Datastructuren Een informele inleiding tot Skiplists

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DatastructurenEen informele inleiding tot Skiplists Onderwerp 13

  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. Operaties: • Zoek-Element • Minimum • Maximum • Volgende • Vorige • Insert • Delete • Kunnen allemaal goed gedaan worden met skiplists

  4. Eerst maar eens:“een gewone dubbelgelinkte lijst” 2 3 5 7 11 13 Alles in O(n) in het slechtste geval…

  5. Toevoegen van “snelweg” 2 7 13 23 2 3 5 7 11 13 17 23

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

  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 n1/2zet dan krijg je ‘t best mogelijke (op factor 2 na)

  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. 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 krknopen hebben op de onderste laag • n £ kr 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. 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. 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. Kinestetische leerervaring? • Voorbeeldje uitproberen

  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. 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/ nc • Kans dat er minstens 1 element is die in meer dan c log nlagen is: • Hooguit de som van de kansen per element • Dus hooguit n * 1/ nc = 1/nc-1 • De rest … zonder bewijs

  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. Tenslotte • Volgende week: Gerard Tel over string matching! • Bedankt voor de aandacht

More Related