• Nenhum resultado encontrado

Estruturas de Dados

N/A
N/A
Protected

Academic year: 2022

Share "Estruturas de Dados"

Copied!
27
0
0

Texto

(1)

Estruturas de Dados

Cristina Gomes Fernandes

(2)

Matrizes esparsas

A célula usada na representação usual de matrizes esparsas tem os seguintes campos:

valor : guarda o valor da entrada da matriz lin: guarda o número da linha da entrada col: guarda o número da coluna da entrada cprox: aponta para o próximo nesta coluna lprox: aponta para o próximo nesta linha

Apenas entradas não-nulas devem estar armazenadas.

Cada linha e cada coluna é uma lista ligada circular, com cabeça de lista. Na cabeça de lista da linha i, o campo lin guarda i e o campo col guarda ∞. Na cabeça de lista da coluna j, o campo lin guardae o campo col guarda j.

Estruturas de Dados – p. 2

(3)

Inserção em matrizes esparsas

INSIRA (a, l, c, x)

1 t ← NOVACÉLULA(x, l, c) 2 p ← a

3 enquanto lin(p) 6= l faça 4 p ← cprox(p)

5 enquanto col(lprox(p)) < c faça 6 p ← lprox(p)

7 se col(lprox(p)) 6= c não há entrada (l, c)

8 então lprox(t) ← lprox(p) lprox(p) ← t 9 então p ← a

10 então enquanto col(p) 6= c faça 11 então p ← lprox(p)

12 então enquanto lin(cprox(p)) < l faça 13 então p ← cprox(p)

(4)

Skip Lists

Sedgewick, sec 13.5

Estruturas de Dados – p. 4

(5)

Skip Lists

Sedgewick, sec 13.5

Skip lists: aprimoramento sobre listas ligadas.

(6)

Skip Lists

Sedgewick, sec 13.5

Skip lists: aprimoramento sobre listas ligadas.

Objetivo:

tornar a busca em uma lista ligada ordenada mais eficiente.

Estruturas de Dados – p. 4

(7)

Skip Lists

Sedgewick, sec 13.5

Skip lists: aprimoramento sobre listas ligadas.

Objetivo:

tornar a busca em uma lista ligada ordenada mais eficiente.

Ferramenta usada: aleatoriedade.

(8)

De onde elas vêm?

Uma lista ligada:

Estruturas de Dados – p. 5

(9)

De onde elas vêm?

Uma lista ligada:

Uma extensão:

(10)

De onde elas vêm?

Uma lista ligada:

Uma skip list:

Estruturas de Dados – p. 5

(11)

De onde elas vêm?

Uma lista ligada:

Uma skip list:

Resultado:

Lista ordenada com busca, inserção e remoção em tempo esperado O(lg n).

(12)

Skip Lists

Estruturas de Dados – p. 6

(13)

Skip Lists

Idéia: Ao inserir x na skip list, escolhemos aleatoriamente o número de apontadores de célula que vai conter x.

(14)

Skip Lists

Idéia: Ao inserir x na skip list, escolhemos aleatoriamente o número de apontadores de célula que vai conter x.

A escolha é feita de modo a preservar as proporções de apontadores por nível: se há N células na skip list,

o número esperado de apontadores no nível 0 é N; o número esperado de apontadores no nível 1 é N/2; o número esperado de apontadores no nível 2 é N/4; o número esperado de apontadores no nível 3 é N/8; e assim por diante...

Estruturas de Dados – p. 6

(15)

Skip Lists

(16)

Skip Lists

Ou seja, o número de apontadores (nível) da nova célula é k, com probabilidade 1/2k.

Estruturas de Dados – p. 7

(17)

Skip Lists

Ou seja, o número de apontadores (nível) da nova célula é k, com probabilidade 1/2k.

t: número aleatório entre 0 e 1 2 apontadores

3 apontadores 4 apontadores

0 1/4 1

1/2

(18)

Escolha do nível

lgNmax = nível máximo permitido

lgNmax = nível máximo existente no momento

NÍVEL-ALEATÓRIO ()

1 t ← RAND() número aleatório em [0 . . 1) 2 i ← 0

3 j ← 2 j = 2i−1

4 enquanto i < lgNmax e t ≤ 1/j faça 5 j ← 2j

6 i ← i + 1 7 se i > lgN

8 então lgN ← i 9 devolva i

Estruturas de Dados – p. 8

(19)

Busca numa skip list

BUSCA (r, x)

1 devolva BUSCA-NÍVEL (r, x, lgN)

(20)

Busca numa skip list

BUSCA (r, x)

1 devolva BUSCA-NÍVEL (r, x, lgN)

BUSCA-NÍVEL (p, x, k)

1 se x = chave(prox(p, k)) 2 devolva prox(p, k)

3 se x < chave(prox(p, k)) 4 se k = 0

5 devolva NIL 6 senão

7 devolva BUSCA-NÍVEL (p, x, k − 1) 8 senão

9 devolva BUSCA-NÍVEL (prox(p, k), x, k)

Estruturas de Dados – p. 9

(21)

Inserção numa skip list

INSERE (r, x)

1 INSERE-NÍVEL (r, NOVACEL(x, NÍVEL-ALEATÓRIO()), lgN) 2 N ← N + 1

(22)

Inserção numa skip list

INSERE (r, x)

1 INSERE-NÍVEL (r, NOVACEL(x, NÍVEL-ALEATÓRIO()), lgN) 2 N ← N + 1

INSERE-NÍVEL (p, q, k) 1 v ← chave(q)

2 se v < chave(prox(p, k)) 3 se k ≤ nivel(q)

4 prox(q, k) ← prox(p, k) 5 prox(p, k) ← q

5 se k > 0

6 INSERE-NÍVEL (p, q, k − 1) 7 senão

8 INSERE-NÍVEL (prox(p, k), q, k)

Estruturas de Dados – p. 10

(23)

Exercícios

1. Escreva o REMOVA (r, x), que remove de uma skip list apontada por r a célula cujo conteúdo é x.

(24)

Exercícios

1. Escreva o REMOVA (r, x), que remove de uma skip list apontada por r a célula cujo conteúdo é x.

2. Mostre que o número esperado de apontadores em uma skip list em que ocorreram N inserções é O(N).

ocupa espaço linear

Estruturas de Dados – p. 11

(25)

Exercícios

1. Escreva o REMOVA (r, x), que remove de uma skip list apontada por r a célula cujo conteúdo é x.

2. Mostre que o número esperado de apontadores em uma skip list em que ocorreram N inserções é O(N).

ocupa espaço linear

3. Mostre que o número esperado de níveis em uma skip list que sofreu N inserções é O(lg N).

(26)

Exercícios

1. Escreva o REMOVA (r, x), que remove de uma skip list apontada por r a célula cujo conteúdo é x.

2. Mostre que o número esperado de apontadores em uma skip list em que ocorreram N inserções é O(N).

ocupa espaço linear

3. Mostre que o número esperado de níveis em uma skip list que sofreu N inserções é O(lg N).

4. Mostre que o número esperado de elementos no nível i − 1 entre dois elementos consecutivos do nível i é dois.

Estruturas de Dados – p. 11

(27)

Exercícios

1. Escreva o REMOVA (r, x), que remove de uma skip list apontada por r a célula cujo conteúdo é x.

2. Mostre que o número esperado de apontadores em uma skip list em que ocorreram N inserções é O(N).

ocupa espaço linear

3. Mostre que o número esperado de níveis em uma skip list que sofreu N inserções é O(lg N).

4. Mostre que o número esperado de elementos no nível i − 1 entre dois elementos consecutivos do nível i é dois.

5. Conclua que o número esperado de comparações em uma busca, inserção ou remoção é O(lg N).

Referências

Documentos relacionados

Sobretudo recentemente, nessas publicações, as sugestões de ativi- dade e a indicação de meios para a condução da aprendizagem dão ênfase às práticas de sala de aula. Os

Obedecendo ao cronograma de aulas semanais do calendário letivo escolar da instituição de ensino, para ambas as turmas selecionadas, houve igualmente quatro horas/aula

A disponibilização de recursos digitais em acesso aberto e a forma como os mesmos são acessados devem constituir motivo de reflexão no âmbito da pertinência e do valor

Lista de preços Novembro 2015 Fitness-Outdoor (IVA 23%).. FITNESS

Avaliação técnico-econômica do processo de obtenção de extrato de cúrcuma utilizando CO 2 supercrítico e estudo da distribuição de temperatura no leito durante a

Tendo em vista a necessidade de estabelecer um equilíbrio sustentável entre o necessário desenvolvimento econômico e demográfico e a disponibilidade hídrica em quantidade e

Cada qual a seu modo, com caraterísticas organizacionais diferentes, CCIR, CONIC, REJU e Koinonia são quatro entidades ecumênicas que vêm tendo certo destaque no país em

Importante, nesse contexto, ressaltar que a PNAB é uma Portaria que foi publicada no ano de 2017, cujo objetivo é estabelecer a revisão de diretrizes para a organização da