O documento descreve a estrutura de dados Skip List, incluindo seus conceitos, operações como pesquisa, inserção e remoção, e espaço necessário. Skip List pode ser usada como alternativa às árvores balanceadas com complexidade de tempo comparável para a maioria das operações.
1. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Skip List
Paulo Victor dos Santos
Instituto de Informática
Universidade Federal de Goiás
Pós-Graduação em Ciência da Computação, 2016
Estruturas de Dados e Projeto de Algoritmos
Prof. Humberto Longo
2. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Conceitos
• Skip List é uma estrutura de dados que pode ser utilizada no lugar das árvores
balanceadas. Usam balanceamento probabilístico e é baseado em listas
encadeadas paralelas com eciência comparada na ordem de O(ln(n)) para
maioria das operações. Uma das mais recentes Estrutura de Dados e foi
descoberta em 1989 por William Pugh.
Figura: Estrutura de uma Skip List
3. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Conceitos
• Intuitivamente, Skip list é constituída horizontalmente em níveis e
verticalmente em torres e tem a propriedade de manter os dados ordenados.
• A lista S0 contém todos os itens na base e as listas S1, ..., Sh acima dela,
contém um subconjunto gerado aleatoriamente dos itens da lista Si−1.
Também se indica h como a altura da Skip List.
4. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Conceitos
• As listas são arquitetadas de forma que Si+1 contenha probabilisticamente um
de cada dois itens de Si , ou seja, os itens de Si+1 são escolhidos aleatoriamente
dentre os itens de Si com a probabilidade de 1/2, assim espera-se que:
• S0 tenha n itens.
• S1 tenha aproximadamente n
2 itens.
• S2 tenha aproximadamente n
4 itens.
• S3 tenha aproximadamente n
8 itens.
Assim temos que, Si terá n
2i itens. Mantendo a altura h de S em log n.
5. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Operações
• As posições em uma Skip List podem ser percorridas usando as seguintes
operações:
after(p): retorna a posição seguinte a p no mesmo nível.
before(p): retorna a posição anterior a p no mesmo nível.
below(p): retorna a posição abaixo de p na mesma torre.
above(p): retorna a posição acima de p na mesma torre.
• A Skip List pode ser implementada usando lista encadeada de tal forma que as
funções acima custem tempo O(1).
6. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Pesquisa
• Todos algoritmos de pesquisa são baseados na função SkipSearch.
SkipSearch(k)
Enquanto below(p) = null faça
p ← below(p)
Enquanto key(after(p)) ≤ k faça
p ← after(p)
Retorne p
Figura: Exemplo de busca pelo valor 78
7. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Inserção
• Inserção em uma Skip List é uma extensão do método SkipSearch. A única
diferença é que durante a pesquisa o caminho é salvo para que cada nível do
novo item possa ser vinculado corretamente, ou seja, é uma inserção repetitiva
em uma listas encadeadas ordenadas separadamente.
Figura: Inserção do valor 42
8. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Inserção
• Quando um novo elemento é adicionado a um Skip List, o nivel do nó é gerado
aleatoriamente pelo método RadomLevel.
• Supor p= 0,5; random = 0 (cria), random = 1 (não cria).
• MaxLevel determina a altura maxima que o elemento pode alcançar.
RadomLevel()
lvl← 1
Enquanto random() p e lvl MaxLevel faça
lvl ← lvl + 1
Retorne lvl
9. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Remoção
• Remoção começa pela execução do SkipSearch que retorna p e remove p e
todas as posições acima de p.
Figura: Remoção do valor 42
10. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Limite Superior
• Skip List têm duas políticas para tratar qualquer operação que queira inserir
um item acima do nível superior de S:
• Restringir o nível superior h, mantendo um número xo em função de n.
• Permitir que haja inserção e ir crescendo os níveis de h.
11. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Espaço
• A necessidade de espaço de uma Skip List S é o número de itens esperado no
nível i, ou seja, n
2i .
Temos:
h
i=0
n
2i
= n
h
i=0
1
2i
≤ 2n.
12. EDPA
2016/2
Paulo Victor
dos Santos
Skip List
Conceitos
Operações
Espaço
Conclusão
Conclusão
• Skip List é uma estrutura de dados muito simples e com a mesma eciência
assintótica de das complexas árvores binárias. As árvores de busca são
necessitam de mais recurso para manter o balanceamento enquanto que na
Skip List não existe este custo, tornando mais rápidas nas operações básicas
13. EDPA
2016/2
Paulo Victor
dos Santos
Apêndice
Bibliograa
Livros Texto I
Michel T. GoodRich, Roberto Tamassia
Projeto de Algoritmos.
Bookman Companhia Ed, 2004.
Michel T. GoodRich, Roberto Tamassia
Estrutura de Dados e Algoritmos em Java.
Bookman Companhia Ed, 4
a Edição, 2007.
Michel T. GoodRich, Roberto Tamassia
Estrutura de Dados e Algoritmos em Java.
Bookman Companhia Ed, 5
a Edição, 2013.
William Pugh
A Skip List Cookbook.
1990.
William Pugh
Skip Lists: A Probabilistic Alternative to Balanced Trees.
Communications of the ACM, 1990.