Lista z przeskokami
| Ten artykuł należy dopracować zgodnie z zaleceniami edycyjnymi: dodać algorytm wyszukiwania, wstawiania, usuwania, sposób losowania stopnia. Po wyeliminowaniu niedoskonałości prosimy usunąć szablon {{Dopracować}} z kodu tego artykułu. |
Lista z przeskokami (ang. skip list) – w informatyce struktura danych przeznaczona do przechowywania danych uporządkowanych (np. posortowanych rosnąco liczb), będąca rozwinięciem listy jednokierunkowej, a stanowiąca alternatywę dla drzew zbalansowanych (wyważonych), takich jak drzewa AVL, czy czerwono-czarne.
Została opracowana przez Williama Paugha w 1989 roku. Oczekiwana złożoność operacji wyszukiwania, wstawiania nowego elementu do listy oraz usunięcia elementu wynosi
.
W zwykłej liście każdy element posiada połączenie (ze względu na prostotę implementacji - najczęściej realizowane poprzez wskaźnik) wyłącznie do elementu następnego, w liście z przeskokami takich połączeń jest więcej - oprócz bezpośredniego następnika, wskazują także elementy znajdujące się dalej. Liczba połączeń powiązana z elementem określa jego stopień (ang. degree, lub wysokość [height]), przy czym
-te połączenie wskazuje na kolejny element stopnia co najmniej
. Stopnie węzłów są wybierane losowo, ale z rozkładem geometrycznym (prawdopodobieństwa dane wzorem
, gdzie
); np. dla
liczba elementów stopnia 1 powinna stanowić 50% całości, stopnia 2 - 25%, stopnia 3 - 12% itd.
Dzięki temu rozwiązaniu można szybciej przechodzić całą listę, a ponadto dzięki informacji o jej uporządkowaniu pomijać ("przeskakiwać") nieistotne fragmenty listy.
Zobacz też[edytuj]
Linki zewnętrzne[edytuj]
- Julienne Walker - opis i implementacja listy z przeskokami; Public Domain (ang.)
Literatura dodatkowa[edytuj]
- William Pugh, A Skip List Cookbook, 1989
- William Pugh, Skip lists: a probabilistic alternative to balanced trees, Communications of the ACM 33, 1990.