• 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

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

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

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