SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
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
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
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.
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.
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).
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
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
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
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
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.
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.
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
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.

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Chap 8 graph
Chap 8 graphChap 8 graph
Chap 8 graph
 
Skip list vinay khimsuriya_200430723005
Skip list vinay khimsuriya_200430723005Skip list vinay khimsuriya_200430723005
Skip list vinay khimsuriya_200430723005
 
LR(0) PARSER
LR(0) PARSERLR(0) PARSER
LR(0) PARSER
 
how to calclute time complexity of algortihm
how to calclute time complexity of algortihmhow to calclute time complexity of algortihm
how to calclute time complexity of algortihm
 
Skip lists (Advance Data structure)
Skip lists (Advance Data structure)Skip lists (Advance Data structure)
Skip lists (Advance Data structure)
 
Binary expression tree
Binary expression treeBinary expression tree
Binary expression tree
 
Trees (data structure)
Trees (data structure)Trees (data structure)
Trees (data structure)
 
Depth first search [dfs]
Depth first search [dfs]Depth first search [dfs]
Depth first search [dfs]
 
Turing machine-TOC
Turing machine-TOCTuring machine-TOC
Turing machine-TOC
 
SINGLE-SOURCE SHORTEST PATHS
SINGLE-SOURCE SHORTEST PATHS SINGLE-SOURCE SHORTEST PATHS
SINGLE-SOURCE SHORTEST PATHS
 
14 Skip Lists
14 Skip Lists14 Skip Lists
14 Skip Lists
 
Theory of Automata
Theory of AutomataTheory of Automata
Theory of Automata
 
Non regular languages
Non regular languagesNon regular languages
Non regular languages
 
Graph Edit Distance: Basics & Trends
Graph Edit Distance: Basics & TrendsGraph Edit Distance: Basics & Trends
Graph Edit Distance: Basics & Trends
 
Context free langauges
Context free langaugesContext free langauges
Context free langauges
 
Turing machines
Turing machinesTuring machines
Turing machines
 
Syntax directed translation
Syntax directed translationSyntax directed translation
Syntax directed translation
 
Prim's Algorithm on minimum spanning tree
Prim's Algorithm on minimum spanning treePrim's Algorithm on minimum spanning tree
Prim's Algorithm on minimum spanning tree
 
Shortest Path in Graph
Shortest Path in GraphShortest Path in Graph
Shortest Path in Graph
 
Binary Tree Traversal
Binary Tree TraversalBinary Tree Traversal
Binary Tree Traversal
 

Semelhante a Skip List

Semelhante a Skip List (13)

Python
PythonPython
Python
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcional
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Introducao ao python
Introducao ao pythonIntroducao ao python
Introducao ao python
 
Heap - Python
Heap - PythonHeap - Python
Heap - Python
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em Prolog
 
Introdução ao paradigma funcional com scala
Introdução ao paradigma funcional com scalaIntrodução ao paradigma funcional com scala
Introdução ao paradigma funcional com scala
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
Tudo o que sempre quis saber sobre o LINQ
Tudo o que sempre quis saber sobre o LINQTudo o que sempre quis saber sobre o LINQ
Tudo o que sempre quis saber sobre o LINQ
 
Listas Estáticas Encadeadas usando linguagem C
Listas Estáticas Encadeadas usando linguagem CListas Estáticas Encadeadas usando linguagem C
Listas Estáticas Encadeadas usando linguagem C
 
Aula02 Pilhas
Aula02   PilhasAula02   Pilhas
Aula02 Pilhas
 
Programação-Aula004
Programação-Aula004Programação-Aula004
Programação-Aula004
 

Skip List

  • 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.