Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Documentos relacionados
Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Matrizes esparsas: definição

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Prof. Walteno Martins Parreira Júnior

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Pilhas Acesso. Pilha. Fila. Listas lineares especiais. Pilhas e Filas. Listas lineares especiais mais usuais. Disciplina restrita

Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Lista Ligada Linear - Retirar elemento

Aula 13: Listas encadeadas (estruturas lineares)

Bucketsort. CLRS sec 8.4. Algoritmos p. 1

SCC Algoritmos e Estruturas de Dados I

Universidade de São Paulo

Ponteiro e lista dinâmica

AULA 20. Algoritmos p.725/759

Algoritmo da IFT 2 / 16. Algoritmo da IFT Estrutura da fila de prioridade Resolvendo empates. Algoritmo 1 Algoritmo geral da IFT

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Árvores B. Definição: Seja t a ordem da árvore B. Uma árvore B de ordem t é uma árvore ordenada que é vazia, ou que satisfaz as seguintes condições:

Geometria Computacional

Lista Encadeada (Linked List)

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações

BCC202 - Estrutura de Dados I

Professora Jeane Melo

TAD dicionário. Métodos do TAD dicionário:

Aplicações de listas e outras estruturas

LISTAS LINEARES. Estrutura de Dados

Estruturas de Dados I

Ordenação em tempo linear

DAINF - Departamento de Informática

Pilhas e Filas Acesso

CAP Exame de Admissão 16/12/2013. Instruções Gerais (leia atentamente)

Aplicações de listas Outras estruturas

Matrizes Esparsas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Estruturas de dados para listas arrays e listas ligadas

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

Aula 19 Árvores Rubro-Negras

Aula 07: Algoritmos de busca e Listas encadeadas

Análise de Algoritmos

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I

AULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos

Aula 31: Encadeamento exterior. Modelo de encadeamento exterior. Complexidade do encadeamento exterior

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Aula 13 Árvores Rubro-Negras

Algoritmos de pesquisa. Tabelas de dispersão/hash

ESTRUTURA DE DADOS DCC013. Árvore Binária de Busca

Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash?

Tabelas de dispersão/hash

Python - Dicionários. Introdução à Programação SI1

Estrutura de Dados Listas

1. Faça uma função que recebe por parâmetro o raio de uma esfera e calcula o seu volume.

Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode

Filas de Prioridades Letícia Rodrigues Bueno

MCTA028 Programação Estruturada Aula 09: - Ponteiros (parte 2)

Compactação e Reuso de Espaço

Linguagem C: Listas Encadeadas

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Bases de Dados. Índices. Discos. transferência rápida e aos bytes. transferência lenta e em blocos (512B ~ 4KB) memória. disco BD / aplicação

Heapsort Letícia Rodrigues Bueno

Listas ligadas/listas encadeadas

Algoritmos e Estruturas de Dados II IEC013

BCC202 - Estrutura de Dados I

MCTA028 Programação Estruturada Aula 09: - Ponteiros (parte 2)

4ª Lista de Exercícios de Programação I

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 9

Listas e matrizes esparsas Orthogonal List Representation (Listas Cruzadas) 21/10/2010

UNIVERSIDADE DA BEIRA INTERIOR

Aplicações de listas e outras estruturas

ESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2018/2019

3.2.2 Pilha (LIFO - last in, first out) - Inserção e remoção apenas no final da lista.

Lista de Exercícios 04

i a[i]

Algoritmo de Dijkstra Estudo e Implementação

4ª Lista de Exercícios de Programação I

Estruturas Homogêneas II (Matrizes)

Algoritmos de Ordenação

Melhores momentos AULA 14

Algoritmos e Estruturas de Dados II Lista de Exercícios de Listas Lineares

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Árvores Binárias de Busca

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

Capítulo 8: Abstrações de dados

Árvores Rubro-Negras Letícia Rodrigues Bueno

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

TABELAS DE DISPERSÃO/HASH

Estruturas de Dados Estruturas de Dados Fundamentais

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional

Instituto Luterano de Ensino Superior de Ji-Paraná Curso Bacharelado em Informática Estrutura de Dados I Prof.: José Luiz A.

Representações de Grafos

Pesquisa em Memória Secundária. Prof. Jonas Potros

Gauss-Seidel para Solução de Sistemas com Matrizes Banda Usando Armazenamento Especial

Questão 1: O histograma deve ser: [0, 1, 4, 2, 0, 3, 0,, 0, 2] Exemplo: Para a matriz

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Transcrição:

Estruturas de Dados Cristina Gomes Fernandes Estruturas de Dados p. 1

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 guarda e o campo col guarda j. Estruturas de Dados p. 2

Inserção em matrizes esparsas INSIRA (a l c x) 1 t NOVACÉLULA(x l c) 2 p a 3 enquanto lin(p) l faça 4 p cprox(p) 5 enquanto col(lprox(p)) < c faça 6 p lprox(p) 7 se col(lprox(p)) 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) 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) 14 então cprox(t) cprox(p) cprox(p) t Estruturas de Dados p. 3

Skip Lists Sedgewick, sec 13.5 Estruturas de Dados p. 4

Skip Lists Sedgewick, sec 13.5 Skip lists: aprimoramento sobre listas ligadas. Estruturas de Dados p. 4

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

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. Estruturas de Dados p. 4

Uma lista ligada: De onde elas vêm? Estruturas de Dados p. 5

Uma lista ligada: De onde elas vêm? Uma extensão: Estruturas de Dados p. 5

Uma lista ligada: De onde elas vêm? Uma skip list: Estruturas de Dados p. 5

Uma lista ligada: De onde elas vêm? Uma skip list: Resultado: Lista ordenada com busca, inserção e remoção em tempo esperado O(lg n). Estruturas de Dados p. 5

Skip Lists Estruturas de Dados p. 6

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

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

Skip Lists Estruturas de Dados p. 7

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

Skip Lists Ou seja, o número de apontadores (nível) da nova célula é k, com probabilidade 1/2 k. t: número aleatório entre 0 e 1 2 apontadores 4 apontadores 1/2 0 1/4 1 3 apontadores 1 apontador Estruturas de Dados p. 7

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 = 2 i 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

Busca numa skip list BUSCA (r x) 1 devolva BUSCA-NÍVEL (r x lgn) Estruturas de Dados p. 9

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

Inserção numa skip list INSERE (r x) 1 INSERE-NÍVEL (r NOVACEL(x NÍVEL-ALEATÓRIO()) lgn) 2 N N + 1 Estruturas de Dados p. 10

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

Exercícios 1. Escreva o REMOVA (r x), que remove de uma skip list apontada por r a célula cujo conteúdo é x. Estruturas de Dados p. 11

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

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). Estruturas de Dados p. 11

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

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). Estruturas de Dados p. 11