# CSC 172 DATA STRUCTURES. SKIP LISTS Read Weiss 10.4.2.

## Presentation on theme: "CSC 172 DATA STRUCTURES. SKIP LISTS Read Weiss 10.4.2."— Presentation transcript:

CSC 172 DATA STRUCTURES

SKIP LISTS  Dictionary Data Structure  Efficient

SKIP LISTS  Dictionary Data Structure (insert delete lookup)  Efficient O(lg n)

SKIP LISTS  Dictionary Data Structure (insert delete lookup)  Efficient O(lg n)

SKIP LISTS  Dictionary Data Structure  Efficient (with high probability)  Randomized

SKIP LISTS  Dictionary Data Structure  Efficient (with high probability)  Randomized  Easy to implement

LISTS  How much time does it take to search a sorted linked list?  How can this be improved?

EXAMPLE

 What is this sequence? 14,23,28,34,42,50,59,66,72, 79,86,96,103,110

EXAMPLE  What is this sequence? 14,23,34,42,50,59,66,72, 79,86,96,103,110

EXAMPLE  What is this sequence? 14,23,34,42,50,59,66,72, 79,86,96,103,110,116,125

SKIP LISTS  Use two lists  L 2 stores all element  L 1 stores some elements  Links between shared elements

Lookup on a skip list

1)Take L1 until you go too far 2)Back up one 3)Transfer to L2 4)Take L2 until you find element (or go too far – not found – or insert)

Lookup on a skip list How should we distribute the L1 list? What is the time cost of a search?

Lookup on a skip list How should we distribute the L1 list? What is the time cost of a search? Minimize : L1.length + (L2.length/L1.length)

NEXT STEP  2 linked lists 2(n^(1/2))  Can we improve this further?

NEXT STEP  2 linked lists 2(n^(1/2))  Can we improve this further?  3 linked lists 3(n^(1/3))  k linked lists k(n^(1/k))  N linked lists ????  lg n linked lists lg n (n^(1/lg n))

BALLANCED SKIP LISTS  Ideal as long as structure is maintained

BALLANCED SKIP LISTS  Ideal as long as structure is maintained  Insertions and deletions mess up structure

INSERTION ON SKIP LISTS  Search to find location  Must insert on bottom list  Which other lists?  FLIP A COIN  If heads add to level above and flip again.  If tails done.

INSERTION ON SKIP LISTS  FLIP A COIN  If heads add to level above and flip again.  If tails done. ½ of the elements go up one level ¼ of the elements go up 2 levels 1/8 of the elements go up 3 levels

INSERTION ON SKIP LISTS  EXAMPLE

ANALYSIS  Intuitively:  Height of the structure is O(lg n)  How many coin flips do we need to get lg n heads?