ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
?????- Skip List
??????Log??? ??/??/??? ??? ? ?? ??? ??????????? ??? ? ???? ???? ???? ??? ?? ?? - 9?? ??????? ???!???? ?? Red-Black Tree? 1?? ?? ??? ? ????
?????? ??!1960198019701990Treap[Aragon &Seidel]R Tree[Guttman]  AVL Tree[Avdelson-Velskii &Landis]RB TreeB Tree[Bayer]Splay Tree[Sleator& Tarjan]Skip List
???? : ?????? ??? ?? ? ?? ?????? ??? ??????? : ? N ?? ? ???? : ?? ?N/2? + 1 ??? ??
???? : ? ???????? ????? ? ???????? : ? N?? ? ???? : ?? ?N/4? + 3 ??? ??
???? : ?? ????2i?? ???2i ?? ???? ???? ??????? : N ?? ? ???? : O(log N) ?? ???? ?????? ??????? ?? ? ??
?? ???????? ?????? ????? ???? ??? ???? ??? ??? ??? ??? O(N)?? ? ??? ???
?????: ??? ??????? ????? ????!?? ? ?? ??? 1?? ???? ? ?? ??? 2?? ???? ? 1/2i? ??? i?? ?????? ??? ??? ??? ?????? ??? ?? ??? Log N??? ???struct Node<T> {    T key;    Node<T> *forward[];};
??????? ??? ??? ?? ??? ???? ???? ??? ??? ???
???? pi?? ???? ?? ???r ???pr?? ???i+1?? ???? ???? ????? p = ? p = ?? ? ?? ??? ???!??? ??? ??? ??? ?? p = ? ? ?????? ?? ??? log1???? ?????? ????? ?? ??? 20? ??? ????
?? ????
?? ??????? ??? ????? ??!??? 1? ? ??? (1-p)??? 2? ? ??? p(1-p)??? 3? ? ??? p2(1-p)¡­ p? ?? ?? ??? ??
?? ?????? ???? ???? ?? BackLook??? ????? ??
?? ?????? ???? BackLook??? ????? ??????? ??? ???? ?????? ????? ?? ??? ?? ??? ??? ??
??? ?? O(N) ? ????? ??? ??? ???? ?? ???? ???? ?.??? ?? 100?? ???? ??? ? ??????? 100? ??? ? ?? ??? ?? ????1??? ??!????? ???(Log N)? 3? ?? ?? ??? ???? ??!
??? ??? ????? : ????1?? ??? ????????: ????2?? ??? ???????: ????11???? ??? ????=?=1¡Þ??(?=?)=?=1¡Þ????1(1??)=11???
??? ??? ??p? ?? ?? ??? ???? ??? ? ??? ?? ??? ???? Log ??? ?? ???????? ?????????p
???????RB??? ???????? ??? ? ??? ??? ¨C ????? ??Thread Stall????(????)???
?????? ???????? ????? ??? ??? ?? ??? ???? ??? ???? ? ??? ?? ???? ???? ??? ??.?? ???/???????? ? ? ??? ??? ??? ?? ??.??? Persistent?? ???? ???? ???.
?? ?????? ?????????? ?? ??? ????? ??? ?????? ??? ??? ?? ?? ? : ?????? ??? ????? ??? ?? ? ?????? ?? ?? ??cache miss/fragmentation ??? ?? B-Tree?? ??? ???? ??? ???? ??? ??? ???
?????? ???Indexed Skip List???? ??? ???? ??? ??? ??Deterministic Skip List??? ????Log????? ?? ??? ?? ??? ???1-2 skip list?? ?? ??? ??2? ??? ???? ??? ?? 2-3 tree ? ??1-2-3 skip list
????? ???Redis (BSD)?????? ??? key-value ?? ?? (ANSI C)JAVA 1.6? ConcurrentSkipListMap, Set?????? ??? ??? ?????? ???? map? setSkipdb (BSD)B-Tree?? ?????? ???? ??? ???DB ??? DBQt? Qmap (GPL, LGPL)Qt Framework? GUI? ???? ??? ?? QtCore??? ??STL map? ??? ???? ?? ??
ReferencePugh, William (June 1990). "Skip lists: a probabilistic alternative to balanced trees".Pugh, William (July 1989). ¡°A Skip List Cookbook¡± Herlihy et. al. ¡°A Probably Correct Concurrent Skip List¡±Fraser and Harris (2004). ¡°Concurrent Programming Without Locks¡±Wikipedia : Skip List

More Related Content

Skip List

  • 2. ??????Log??? ??/??/??? ??? ? ?? ??? ??????????? ??? ? ???? ???? ???? ??? ?? ?? - 9?? ??????? ???!???? ?? Red-Black Tree? 1?? ?? ??? ? ????
  • 3. ?????? ??!1960198019701990Treap[Aragon &Seidel]R Tree[Guttman] AVL Tree[Avdelson-Velskii &Landis]RB TreeB Tree[Bayer]Splay Tree[Sleator& Tarjan]Skip List
  • 4. ???? : ?????? ??? ?? ? ?? ?????? ??? ??????? : ? N ?? ? ???? : ?? ?N/2? + 1 ??? ??
  • 5. ???? : ? ???????? ????? ? ???????? : ? N?? ? ???? : ?? ?N/4? + 3 ??? ??
  • 6. ???? : ?? ????2i?? ???2i ?? ???? ???? ??????? : N ?? ? ???? : O(log N) ?? ???? ?????? ??????? ?? ? ??
  • 7. ?? ???????? ?????? ????? ???? ??? ???? ??? ??? ??? ??? O(N)?? ? ??? ???
  • 8. ?????: ??? ??????? ????? ????!?? ? ?? ??? 1?? ???? ? ?? ??? 2?? ???? ? 1/2i? ??? i?? ?????? ??? ??? ??? ?????? ??? ?? ??? Log N??? ???struct Node<T> { T key; Node<T> *forward[];};
  • 9. ??????? ??? ??? ?? ??? ???? ???? ??? ??? ???
  • 10. ???? pi?? ???? ?? ???r ???pr?? ???i+1?? ???? ???? ????? p = ? p = ?? ? ?? ??? ???!??? ??? ??? ??? ?? p = ? ? ?????? ?? ??? log1???? ?????? ????? ?? ??? 20? ??? ????
  • 12. ?? ??????? ??? ????? ??!??? 1? ? ??? (1-p)??? 2? ? ??? p(1-p)??? 3? ? ??? p2(1-p)¡­ p? ?? ?? ??? ??
  • 13. ?? ?????? ???? ???? ?? BackLook??? ????? ??
  • 14. ?? ?????? ???? BackLook??? ????? ??????? ??? ???? ?????? ????? ?? ??? ?? ??? ??? ??
  • 15. ??? ?? O(N) ? ????? ??? ??? ???? ?? ???? ???? ?.??? ?? 100?? ???? ??? ? ??????? 100? ??? ? ?? ??? ?? ????1??? ??!????? ???(Log N)? 3? ?? ?? ??? ???? ??!
  • 16. ??? ??? ????? : ????1?? ??? ????????: ????2?? ??? ???????: ????11???? ??? ????=?=1¡Þ??(?=?)=?=1¡Þ????1(1??)=11???
  • 17. ??? ??? ??p? ?? ?? ??? ???? ??? ? ??? ?? ??? ???? Log ??? ?? ???????? ?????????p
  • 18. ???????RB??? ???????? ??? ? ??? ??? ¨C ????? ??Thread Stall????(????)???
  • 19. ?????? ???????? ????? ??? ??? ?? ??? ???? ??? ???? ? ??? ?? ???? ???? ??? ??.?? ???/???????? ? ? ??? ??? ??? ?? ??.??? Persistent?? ???? ???? ???.
  • 20. ?? ?????? ?????????? ?? ??? ????? ??? ?????? ??? ??? ?? ?? ? : ?????? ??? ????? ??? ?? ? ?????? ?? ?? ??cache miss/fragmentation ??? ?? B-Tree?? ??? ???? ??? ???? ??? ??? ???
  • 21. ?????? ???Indexed Skip List???? ??? ???? ??? ??? ??Deterministic Skip List??? ????Log????? ?? ??? ?? ??? ???1-2 skip list?? ?? ??? ??2? ??? ???? ??? ?? 2-3 tree ? ??1-2-3 skip list
  • 22. ????? ???Redis (BSD)?????? ??? key-value ?? ?? (ANSI C)JAVA 1.6? ConcurrentSkipListMap, Set?????? ??? ??? ?????? ???? map? setSkipdb (BSD)B-Tree?? ?????? ???? ??? ???DB ??? DBQt? Qmap (GPL, LGPL)Qt Framework? GUI? ???? ??? ?? QtCore??? ??STL map? ??? ???? ?? ??
  • 23. ReferencePugh, William (June 1990). "Skip lists: a probabilistic alternative to balanced trees".Pugh, William (July 1989). ¡°A Skip List Cookbook¡± Herlihy et. al. ¡°A Probably Correct Concurrent Skip List¡±Fraser and Harris (2004). ¡°Concurrent Programming Without Locks¡±Wikipedia : Skip List