Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
|
|
- Marco Antônio Chaves de Vieira
- 6 Há anos
- Visualizações:
Transcrição
1 Matrizes Esparsas SCC Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade de São Paulo (USP) 17 de agosto de 2010
2 Sumário 1 2 Representação Alternativa Listas Cruzadas Circulares
3 Sumário 1 2 Representação Alternativa Listas Cruzadas Circulares
4 O Problema Representação de matrizes com muitos elementos nulos
5 O Problema Representação de matrizes com muitos elementos nulos P.ex., matriz abaixo, de 5 linhas por 6 colunas: apenas 5 dos 30 elementos são não nulos
6 O Problema Representação de matrizes com muitos elementos nulos P.ex., matriz abaixo, de 5 linhas por 6 colunas: apenas 5 dos 30 elementos são não nulos Precisamos de uma representação que evite o armazenamento de tantos zeros
7 O Problema Representação de matrizes com muitos elementos nulos P.ex., matriz abaixo, de 5 linhas por 6 colunas: apenas 5 dos 30 elementos são não nulos Precisamos de uma representação que evite o armazenamento de tantos zeros Solução: utilizar listas cruzadas como estruturas de dados
8 Representação por Listas Cruzadas Cada elemento identicado pela sua linha, coluna, e valor
9 Representação por Listas Cruzadas Cada elemento identicado pela sua linha, coluna, e valor Cada elemento a ij não-nulo pertence a uma lista de valores não nulos da linha i e também a uma lista de valores não nulos da coluna j
10 Representação por Listas Cruzadas Cada elemento identicado pela sua linha, coluna, e valor Cada elemento a ij não-nulo pertence a uma lista de valores não nulos da linha i e também a uma lista de valores não nulos da coluna j Assim, para matriz de nl linhas e nc colunas, teremos nl listas de linhas e nc listas de colunas
11 Listas Cruzadas
12 Listas Cruzadas
13 TAD Matriz Esparsa Pode-se criar um TAD bastante simples para matrizes esparsas
14 TAD Matriz Esparsa Pode-se criar um TAD bastante simples para matrizes esparsas Operações principais
15 TAD Matriz Esparsa Pode-se criar um TAD bastante simples para matrizes esparsas Operações principais criar_matriz(m) : Cria uma nova matriz esparsa M vazia
16 TAD Matriz Esparsa Pode-se criar um TAD bastante simples para matrizes esparsas Operações principais criar_matriz(m) : Cria uma nova matriz esparsa M vazia inserir(m, lin, col, valor) : Insere um valor na posição (lin, col) da matriz esparsa M
17 TAD Matriz Esparsa Pode-se criar um TAD bastante simples para matrizes esparsas Operações principais criar_matriz(m) : Cria uma nova matriz esparsa M vazia inserir(m, lin, col, valor) : Insere um valor na posição (lin, col) da matriz esparsa M remover(m, lin, col) : Remove o valor na posição (lin, col) da matriz esparsa M
18 TAD Matriz Esparsa Pode-se criar um TAD bastante simples para matrizes esparsas Operações principais criar_matriz(m) : Cria uma nova matriz esparsa M vazia inserir(m, lin, col, valor) : Insere um valor na posição (lin, col) da matriz esparsa M remover(m, lin, col) : Remove o valor na posição (lin, col) da matriz esparsa M consultar(m, lin, col) : Retorna o valor na posição (lin, col) da matriz esparsa M
19 TAD Matriz Esparsa Operações auxiliares (podem ser criadas a partir das operações principais)
20 TAD Matriz Esparsa Operações auxiliares (podem ser criadas a partir das operações principais) somar_matriz(m1, M2, R) : Soma as matrizes M1 e M2 e armazena o resultado em R
21 TAD Matriz Esparsa Operações auxiliares (podem ser criadas a partir das operações principais) somar_matriz(m1, M2, R) : Soma as matrizes M1 e M2 e armazena o resultado em R multiplicar_matriz(m1, M2, R) : Multiplica as matrizes M1 e M2 e armazena o resultado em R
22 TAD Matriz Esparsa Operações auxiliares (podem ser criadas a partir das operações principais) somar_matriz(m1, M2, R) : Soma as matrizes M1 e M2 e armazena o resultado em R multiplicar_matriz(m1, M2, R) : Multiplica as matrizes M1 e M2 e armazena o resultado em R somar_coluna(m, V, Col) : Soma uma constante V a todos os elementos da coluna Col da Matriz M
23 TAD Matriz Esparsa Operações auxiliares (podem ser criadas a partir das operações principais) somar_matriz(m1, M2, R) : Soma as matrizes M1 e M2 e armazena o resultado em R multiplicar_matriz(m1, M2, R) : Multiplica as matrizes M1 e M2 e armazena o resultado em R somar_coluna(m, V, Col) : Soma uma constante V a todos os elementos da coluna Col da Matriz M somar_linha(m, V, Lin) : Soma uma constante V a todos os elementos da linha Lin da Matriz M
24 TAD Matriz Esparsa Operações auxiliares (podem ser criadas a partir das operações principais) somar_matriz(m1, M2, R) : Soma as matrizes M1 e M2 e armazena o resultado em R multiplicar_matriz(m1, M2, R) : Multiplica as matrizes M1 e M2 e armazena o resultado em R somar_coluna(m, V, Col) : Soma uma constante V a todos os elementos da coluna Col da Matriz M somar_linha(m, V, Lin) : Soma uma constante V a todos os elementos da linha Lin da Matriz M E mais: inverter, transpor, calcular determinante, etc...
25 Estrutura de Dados A implementação é facilitada se as listas contêm o nó cabeça 1 #define NLINHAS 5 2 #define NCOLUNAS typedef struct { 5 int valor; 6 } DADO; 7 8 typedef struct CELULA { 9 int lin; 10 int col; 11 DADO dado; 12 struct CELULA *direita; 13 struct CELULA *abaixo; 14 } CELULA; typedef struct { 17 CELULA linha[nlinhas]; 18 CELULA coluna[ncolunas]; 19 } MATRIZ;
26 Operações Vamos implementar as operações criar_matriz(...), limpar_matriz(...), inserir(...), remover(...) e consultar(...) do conjunto de operações principais
27 Operações Vamos implementar as operações criar_matriz(...), limpar_matriz(...), inserir(...), remover(...) e consultar(...) do conjunto de operações principais As demais operações principais e auxiliares cam como exercício
28 Operações Vamos implementar as operações criar_matriz(...), limpar_matriz(...), inserir(...), remover(...) e consultar(...) do conjunto de operações principais As demais operações principais e auxiliares cam como exercício Entretanto, vamos discutir alguns aspectos importantes dessas operações
29 Criar Matriz 1 void criar(matriz *matriz) { 2 int i; 3 4 for (i = 0; i < NLINHAS; i++) { 5 matriz->linha[i].direita = NULL; 6 matriz->linha[i].abaixo = NULL; 7 matriz->linha[i].lin = -1; 8 matriz->linha[i].col = -1; 9 } for (i = 0; i < NCOLUNAS; i++) { 12 matriz->coluna[i].direita = NULL; 13 matriz->coluna[i].abaixo = NULL; 14 matriz->coluna[i].lin = -1; 15 matriz->coluna[i].col = -1; 16 } 17 }
30 Limpar Matriz 1 void limpar_matriz(matriz *matriz) { 2 int i; 3 4 for (i = 0; i < NLINHAS; i++) { 5 CELULA *paux = matriz->linha[i].direita; 6 7 while (paux!= NULL) { 8 CELULA *prem = paux; 9 paux = paux->direita; 10 free(prem); 11 } 12 } 13 }
31 Inserir Valor 1 int inserir(matriz *matriz, int lin, int col, DADO *dado) { 2 if (lin < NLINHAS && col < NCOLUNAS) { 3 ///////////inserir na linha 4 5 //aponta para a posição anterior de inserção 6 CELULA *paux = &matriz->linha[lin]; 7 8 //procurar posição de inserção 9 while (paux->direita!= NULL && paux->direita->col < col) { 10 paux = paux->direita; 11 } //célula já preenchida na martiz 14 if (paux->direita!= NULL && paux->direita->col == col) { 15 paux->direita->dado = *dado; 16 } else { 17 CELULA *pnovo = (CELULA *)malloc(sizeof(celula)); 18 pnovo->dado = *dado; 19 pnovo->lin = lin; 20 pnovo->col = col; pnovo->direita = paux->direita; 23 paux->direita = pnovo; ///////////inserir na coluna 26 paux = &matriz->coluna[col]; //procurar posição de inserção 29 while (paux->abaixo!= NULL && paux->abaixo->lin < lin) { 30 paux = paux->abaixo; 31 } pnovo->abaixo = paux->abaixo; 34 paux->abaixo = pnovo; 35 } return 1; 38 } return 0; 41 }
32 Remover Valor 1 int remover(matriz *matriz, int lin, int col) { 2 if (lin < NLINHAS && col < NCOLUNAS) { 3 //aponta para a posição anterior de remoção 4 CELULA *paux = &matriz->linha[lin]; 5 6 //procurar posição de remoção 7 while (paux->direita!= NULL && paux->direita->col < col) { 8 paux = paux->direita; 9 } if (paux->direita->col == col) { 12 CELULA *prem = paux->direita; 13 paux->direita = paux->direita->direita; 14 free(prem); 15 } return 1; 18 } return 0; 21 }
33 Consultar Valor 1 int consultar(matriz *matriz, int lin, int col, DADO *dado) { 2 if (lin < NLINHAS && col < NCOLUNAS) { 3 CELULA *paux = matriz->linha[lin].direita; 4 5 while (paux!= NULL) { 6 if (paux->col == col) { 7 *dado = paux->dado; 8 return 1; 9 } paux = paux->direita; 12 } dado->valor = 0; return 1; 17 } return 0; 20 }
34 Operações E quando um elemento da matriz original se torna não nulo, em consequência de alguma operação? É necessário inserir na estrutura?
35 Operações E quando um elemento da matriz original se torna não nulo, em consequência de alguma operação? É necessário inserir na estrutura? E quando um elemento da matriz original se tornar nulo? É necessário eliminar da estrutura?
36 Operações P.ex., somar -4 à coluna
37 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional?
38 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos
39 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros
40 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros ponteiro ocupa o mesmo espaço de memória que um inteiro
41 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros ponteiro ocupa o mesmo espaço de memória que um inteiro Matriz Esparsa (Listas Cruzadas)
42 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros ponteiro ocupa o mesmo espaço de memória que um inteiro Matriz Esparsa (Listas Cruzadas) Espaço ocupado por matriz de nl linhas, nc colunas e n valores não-nulos
43 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros ponteiro ocupa o mesmo espaço de memória que um inteiro Matriz Esparsa (Listas Cruzadas) Espaço ocupado por matriz de nl linhas, nc colunas e n valores não-nulos 5n espaços para ponteiros (um para cada campo do registro: linha, coluna, valor, direita, abaixo)
44 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros ponteiro ocupa o mesmo espaço de memória que um inteiro Matriz Esparsa (Listas Cruzadas) Espaço ocupado por matriz de nl linhas, nc colunas e n valores não-nulos 5n espaços para ponteiros (um para cada campo do registro: linha, coluna, valor, direita, abaixo) 5nl espaços para ponteiros para o vetor linha
45 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros ponteiro ocupa o mesmo espaço de memória que um inteiro Matriz Esparsa (Listas Cruzadas) Espaço ocupado por matriz de nl linhas, nc colunas e n valores não-nulos 5n espaços para ponteiros (um para cada campo do registro: linha, coluna, valor, direita, abaixo) 5nl espaços para ponteiros para o vetor linha 5nc espaços para ponteiros para o vetor coluna
46 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros ponteiro ocupa o mesmo espaço de memória que um inteiro Matriz Esparsa (Listas Cruzadas) Espaço ocupado por matriz de nl linhas, nc colunas e n valores não-nulos 5n espaços para ponteiros (um para cada campo do registro: linha, coluna, valor, direita, abaixo) 5nl espaços para ponteiros para o vetor linha 5nc espaços para ponteiros para o vetor coluna espaço total: 5n + 5nl + 5nc
47 Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros ponteiro ocupa o mesmo espaço de memória que um inteiro Matriz Esparsa (Listas Cruzadas) Espaço ocupado por matriz de nl linhas, nc colunas e n valores não-nulos 5n espaços para ponteiros (um para cada campo do registro: linha, coluna, valor, direita, abaixo) 5nl espaços para ponteiros para o vetor linha 5nc espaços para ponteiros para o vetor coluna espaço total: 5n + 5nl + 5nc Na representação bidimensional: espaço total: nl nc
48 Desempenho (Fator Espaço) Conclusão Em termos de espaço ocupado, é vantajoso utilizar a representação de listas cruzadas quando
49 Desempenho (Fator Espaço) Conclusão Em termos de espaço ocupado, é vantajoso utilizar a representação de listas cruzadas quando 5n + 5nl + 5nc < nl nc
50 Desempenho (Fator Espaço) Conclusão Em termos de espaço ocupado, é vantajoso utilizar a representação de listas cruzadas quando 5n + 5nl + 5nc < nl nc ou seja, quando n < [(nl 5) (nc 5) 25]/5
51 Desempenho (Fator Espaço) Conclusão Em termos de espaço ocupado, é vantajoso utilizar a representação de listas cruzadas quando 5n + 5nl + 5nc < nl nc ou seja, quando n < [(nl 5) (nc 5) 25]/5 Como (nl 5) (nc 5) é aproximadamente o tamanho da matriz, pode-se dizer, de uma maneira geral, que há ganho de espaço, quando um número inferior a 1/5 dos elementos da matriz forem não nulos
52 Desempenho (Fator Tempo) As operações sobre listas cruzadas podem ser mais lentas e complexas do que para o caso bidimensional
53 Desempenho (Fator Tempo) As operações sobre listas cruzadas podem ser mais lentas e complexas do que para o caso bidimensional Portanto, para algumas aplicações, deve ser feita uma avaliação do compromisso entre tempo de execução e espaço alocado
54 Representação Alternativa Listas Cruzadas Circulares Sumário 1 2 Representação Alternativa Listas Cruzadas Circulares
55 Representação Alternativa Listas Cruzadas Circulares Representação alternativa Existem ocasiões nas quais não se sabe a princípio qual será o número máximo de linhas ou colunas da matriz esparsa
56 Representação Alternativa Listas Cruzadas Circulares Representação alternativa Existem ocasiões nas quais não se sabe a princípio qual será o número máximo de linhas ou colunas da matriz esparsa Nessas situações, os vetores Coluna e Linha podem ser substituídos por listas ligadas circulares
57 Representação Alternativa Listas Cruzadas Circulares Representação alternativa
58 Representação Alternativa Listas Cruzadas Circulares Exercícios Desenvolva procedimentos para
59 Representação Alternativa Listas Cruzadas Circulares Exercícios Desenvolva procedimentos para Acessar o elemento a ij
60 Representação Alternativa Listas Cruzadas Circulares Exercícios Desenvolva procedimentos para Acessar o elemento a ij Eliminar a ij da matriz
61 Representação Alternativa Listas Cruzadas Circulares Exercícios Desenvolva procedimentos para Acessar o elemento a ij Eliminar a ij da matriz Somar a constante c todos os elementos da coluna j
62 Representação Alternativa Listas Cruzadas Circulares Exercícios Desenvolva procedimentos para Acessar o elemento a ij Eliminar a ij da matriz Somar a constante c todos os elementos da coluna j pode resultar em inserção ou eliminação nas listas.
Matrizes Esparsas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas
Leia maisListas e matrizes esparsas. SCC122 Estruturas de Dados
Listas e matrizes esparsas SCC Estruturas de Dados Matriz: definição Matriz é um arranjo (tabela) retangular de números dispostos em linhas e colunas 8 9 6 4 7 3 3x3 B 8 9 4 3 5 3 4 3x4 A nº de elementos
Leia maisListas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de
Leia maisAplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I
Aplicações de listas e outras estruturas SCC-52 Algoritmos e Estruturas de Dados I Grandes números Problema: lidar com números muito grandes Em C, inteiros (mesmo long int) são limitados Como somar números
Leia maisAplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I
Aplicações de listas e outras estruturas SCC-52 Algoritmos e Estruturas de Dados I Grandes números Problema: lidar com números muito grandes Em C, inteiros (mesmo long int) são limitados Como somar números
Leia maisFila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Fila e Deque SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisListas e matrizes esparsas Orthogonal List Representation (Listas Cruzadas) 21/10/2010
Listas e matrizes esparsas Orthogonal List Representation (Listas Cruzadas) 1/1/1 Matriz: definição Matriz é um arranjo (tabela) retangular de números dispostos em linhas e colunas 8 9 6 1 4 7 3 3x3 B
Leia maisListas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de
Leia maisAplicações de listas e outras estruturas
19/1/11 Aplicações de listas e outras estruturas SCC- Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Grandes números Problema: lidar com números muito grandes Em C, inteiros (mesmo long int)
Leia maisÁrvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich
Árvores Binárias SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista. Figuras editadas por Isadora Maria Mendes http://www.icmc.usp.br/~paulovic
Leia maisAplicações de listas Outras estruturas
Aplicações de listas Outras estruturas SCC-22 Algoritmos e Estruturas de Dados I Lucas Antiqueira Grandes números 2 Grandes números Problema: lidar com números muito grandes Em C, inteiros (mesmo long
Leia maisAplicações de listas e outras estruturas
plicações de listas e outras estruturas Baseado no material de Thiago. S. Pardo lgoritmos e Estruturas de Dados I Problema: lidar com números muito grandes Em C, inteiros (mesmo long int) são limitados
Leia maisFila e Deque. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
Fila e Deque SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto
Leia maisPilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista
Pilha SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisMatrizes esparsas: definição
Matrizes esparsas: definição o objetivo é mostrar os métodos de armazenamento e manipulação de matrizes esparsas esparsidade de uma matriz é a relação entre o número de elementos nulos de uma matriz e
Leia maisAULA 14 ESTRUTURA DE DADOS
AULA 14 ESTRUTURA DE DADOS Matriz esparsa Norton T. Roman & Luciano A. Digiampietri Matriz Uma matriz bidimensional é um conjunto de elementos (ou tabela) composta por m linhas e n colunas. Matriz Uma
Leia maisFilas de Prioridade & Heaps
Filas de Prioridade & SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto
Leia maisPilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista
Pilha SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisPilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I
Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais
Leia maisSCC Algoritmos e Estruturas de Dados I
SCC 202 - Algoritmos e Estruturas de Dados I Lista 4 de Exercícios (Listas Generalizadas, Listas Cruzadas) 1. Sobre listas generalizadas, responda os seguintes itens: (a) Quais suas vantagens? (b) Quais
Leia maisPonteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
Ponteiros SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 09: Listas (Parte 2) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes Email:
Leia maisUniversidade de São Paulo
Universidade de São Paulo Instituto de Ciências Matemáticas e Computação SCE5763 - Tipos e Estrutura de Dados - Luis Gustavo Nonato 2 a Lista de Exercícios 1. Seja A um array de inteiros. Escreva algoritmos
Leia maisAlgoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs)
Algoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs) SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic
Leia maisLISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados
LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS Listas Lineares Como visto anteriormente, as operações básicas para o nosso TAD Lista Linear são: FLVazia Vazia Retira Insere Imprime A implementação através de arrays
Leia maisÁRVORE BINÁRIA DE BUSCA
ÁRVORE BINÁRIA DE BUSCA Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos inserir e remover elementos
Leia maisFilas Implementação Sequencial
SCE 202 182 Algoritmos e Estruturas de Dados I Filas Implementação Sequencial Conceito Coleção ordenada de itens (lista ordenada) em que a inserção de um novo item se dá em um dos lados no fim e a remoção
Leia maisÁrvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM
Árvores Binária de Busca Prof. César Melo DCC/ICE/UFAM Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos
Leia maisÁrvore Binária de Busca. Prof. César Melo
Árvore Binária de Busca Prof. César Melo Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos inserir e
Leia maisLinguagem C: Listas Encadeadas
Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Introdução 2 3 Organização Introdução 1 Introdução 2 3 Introdução Introdução
Leia maisListas Ligadas (Encadeadas) Listas Simplesmente Encadeadas
Listas Ligadas (Encadeadas) Matrizes são estruturas de dados muito úteis fornecidas nas linguagens de programação. No entanto, elas têm pelo menos duas limitações: 1- Seu tamanho tem que ser conhecido
Leia maisAlgoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs)
Algoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs) SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic
Leia maisUniversidade Federal do Ma Curso de Ciência da Computação
Universidade Federal do Ma Curso de Ciência da Computação Estrutura de Dados Prof. Anselmo C. de Paiva Depto de Informática Limitações dos vetores Vetores Simples, Rápidos Mas, é necessário especificar
Leia maisInstituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -
Instituto de C Filas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução
Leia maisBruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 07: Filas
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Aula 07: Filas O que é uma fila? 1 4 3 2 Fila 1 2 3 4 O que é uma fila? 1 Fila 1 2 3 4 O que é uma fila? 1 2 Fila 2 3 4 O que é uma fila? 1 3 2
Leia maisListas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações
Listas - Outras Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações 5 e 7/10/2010 Listas Circulares Encadeadas Dinâmicas Se o nó next do último nó apontar para o primeiro, teremos
Leia maisÁrvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura
Árvores B Prof. Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Fonte: Material da Prof a Ana Eliza Lopes Moura Situação Problema Memória Principal Volátil e limitada Aplicações Grandes
Leia maisEstrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção
Leia maisEstruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 12 - Filas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisListas Lineares Ordenadas
Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre
Leia maisMatrizes Esparsas. atribuição (M, i, j, v) (i, j) IND. v nulo. v não nulo v nulo v não nulo. há espaço. não há espaço. retira substitui nada
Matrizes Esparsas atribuição (M, i, j, v) (i, j) IND (i, j) IND v nulo v não nulo v nulo v não nulo retira substitui nada há espaço não há espaço insere erro! estouro da representação 83 Matrizes Esparsas
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) ASN Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Material elaborado com base nos slides do Prof. Reinaldo Fortes (curso
Leia maisEstruturas de Dados Aula 10: Listas (parte 2) 19/04/2011
Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011 Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo
Leia maisLista com saltos - generalidades
Lista com saltos - generalidades - Foram propostas em 1989 por William Pugh, professor da Universidade de Maryland; - Permitem operações de consulta, inserção e remoção mais eficientes do que as listas
Leia maisEstrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 4: Listas Estáticas e Dinâmicas Listas Estáticas: com Vetores Dinâmicas: Listas Ligadas (com ponteiros) Variáveis e Métodos de Controle:
Leia maisFilas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I
Filas Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 12 Algoritmos e Estruturas de Dados I O que é uma fila? 1 4 2 3 Fila 1 2 3 4 TAD Fila Tipo Abstrato de dados com a seguinte característica:
Leia maisQuestão 1: O histograma deve ser: [0, 1, 4, 2, 0, 3, 0,, 0, 2] Exemplo: Para a matriz
MAC122 rincípios de Desenvolvimento de Algoritmos Lista de exercícios 01 rof.: aulo Miranda Instituto de Matemática e Estatística (IME) Universidade de São aulo (US) Alocação Dinâmica & Matrizes Questão
Leia mais1. Listas sequenciais versus listas ligadas. Lista sequencial
Alocação Dinâmica Listas Ligadas 1. Listas sequenciais versus listas ligadas Lista sequencial Uma lista sequencial é um conjunto de elementos contíguos na memória. Um vetor é o melhor exemplo de lista
Leia maisGrafos tipo abstrato de dados
Algoritmos e Estruturas de Dados II Grafos tipo abstrato de dados Thiago A. S. Pardo Profa. M. Cristina Material de aula da Profa. Josiane M. Bueno 1 Tipo Abstrato de Dados Última aula: TAD grafo? 2 Tipo
Leia maisTipos Abstratos de Dados - Exercício
Tipos Abstratos de Dados - Exercício void somar_racionais (RACIONAL *a, RACIONAL *b, RACIONAL *c) c->num = a->num * b->den + b->num * a->den; c->den = a->den * b->den; int equivalencia_racionais (RACIONAL
Leia maisTrabalho 2 Matriz Esparsa
Trabalho 2 Matriz Esparsa SCC-502 Algoritmos e Estruturas de Dados 1 M. Cristina/Jorge 1 Introdução O trabalho deverá ser feito individualmente e submetido para o sistema SSP (Sistema de Submissão de Programas),
Leia maisAplicação de Árvores: Código de Huffman
Aplicação de Árvores: Código de Huffman SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas
Leia maisÁrvores de Pesquisa (Parte I)
Baseado no material do Prof. Reinaldo Fortes para o curso de 2014-01 Arquivo original: 21._arvores_(parte_1) Árvores de Pesquisa (Parte I) Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Algoritmos
Leia maisÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior
ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior Árvore Binária de Busca (ABB) o valor associado à raiz é sempre maior que o valor associado a qualquer nó da sub-árvore à esquerda
Leia maisTabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou
Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou também denominada de tabela hashing com endereçamento aberto.
Leia maisEstruturas de Dados Aula 11: TAD Pilha
Estruturas de Dados Aula 11: TAD Pilha Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 10; Estruturas
Leia maisAula 14 Listas Duplamente Encadeadas. prof Leticia Winkler
Aula 14 Listas Duplamente Encadeadas prof Leticia Winkler 1 Lista Duplamente Encadeada É um tipo de lista encadeada que pode ser vazia (NULL) ou que pode ter um ou mais nós, sendo que cada nó possui dois
Leia maisÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO
Leia maisLista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35
Lista Ordenada Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Definição Operações Representações Contígua Encadeada Aplicação Exercícios 2
Leia maisINF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 8 Listas Encadeadas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados (c) Dept. Informática
Leia maisMétodos Computacionais. Listas Encadeadas
Métodos Computacionais Listas Encadeadas Vetores Declaração de vetor implica na especificação de seu tamanho Não se pode aumentar ou diminuir tamanho Outra alternativa no uso de vetores é alocar dinamicamente
Leia maisCopiar para o ficheiro ArvoreBinaria.h e adaptar as funções associadas às operações sobre árvores binárias (3.1 a 3.12)
Considere as seguintes declarações (NodoArv e PNodoArv), adaptadas dos apontamentos: struct NodoArv { int Elemento; struct NodoArv *Esquerda; struct NodoArv *Direita; ; typedef struct NodoArv *PNodoArv;
Leia maisFilas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Filas David Menotti Algoritmos e Estruturas de Dados II DInf UFPR O que é uma fila? 1 4 3 2 Fila 1 2 3 4 O que é uma fila? Fila 1 2 3 4 O que é uma fila? 1 Fila 2 3 4 O que é uma fila? 1 2 Fila 3 4 O que
Leia maisSCC122 - Estruturas de Dados. Lista Estática Seqüencial
SCC122 - Estruturas de Dados Lista Estática Seqüencial Lista Uma lista é uma estrutura que armazena elementos de forma alinhada, ou seja, com elementos dispostos um após o outro. Ex.: Listas de nomes,
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Especial Resolução 19/07/2013 A. [4.75 val] Algoritmos de ordenação e de pesquisa (usando memória estática
Leia maisA regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).
Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,
Leia maisEstruturas de Dados Estruturas de Dados Fundamentais
Estruturas de Dados Estruturas de Dados Fundamentais Prof. Eduardo Alchieri Estruturas de Dados Fundamentais Todos os tipos abstratos de dados (pilhas, filas, deques, etc.) podem ser implementados usando
Leia maisi a[i]
Técnicas de Hashing Outra forma de se fazer busca em uma tabela, é construir-se a tabela de forma a facilitar a busca, colocando-se cada elemento numa posição pré-determinada. Tal posição é obtida aplicando-se
Leia maisEstrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas
Estrutura de Dados: Lista Linear Parte I Introdução e Listas Sequenciais Estáticas Estrutura de dados: Lista Linear Def. Uma Lista Linear é uma coleção ordenada de componentes de um mesmo tipo. Ela é ou
Leia maisAlgoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.
Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados
Leia maisAula 05: Listas Encadeadas. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP
Aula 05: Listas Encadeadas Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento guarda quem é o próximo Elementos
Leia maisTAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0502 Algoritmos e Estruturas de Dados I Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c Denominados de módulos Cada módulo deve
Leia maisInstituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -
Instituto de C Linguagem C: Listas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Listas Encadeadas Definição Funções básicas Tópicos Principais
Leia maisBruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 06: Pilhas
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Aula 06: Pilhas O que é uma pilha? Pilha 4 4 3 3 2 1 2 1 O que é uma pilha? Pilha 4 4 3 3 2 1 2 1 TAD Pilha Tipo Abstrato de dados com a seguinte
Leia maisUNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO SCC-602 Algoritmos e Estruturas de Dados I - EC Profa. Graça Nunes 2º. Semestre de 2010 Prova 1(Gabarito) 16/09/2010 Nome: Nro
Leia maisMódulo 10 Listas Encadeadas
Estruturas de Dados Módulo 10 Listas Encadeadas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas
Leia mais12. Filas Interface do tipo fila
12. Filas W. Celes e J. L. Rangel Outra estrutura de dados bastante usada em computação é a fila. Na estrutura de fila, os acessos aos elementos também seguem uma regra. O que diferencia a fila da pilha
Leia maisAula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP
Aula 16: Pesquisa em Memória Primária - Árvores de Busca Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Árvores de Pesquisa A árvore de pesquisa é uma estrutura de dados muito eficiente para
Leia maisLista Encadeada Simples. Métodos Computacionais Victor Casé
Lista Encadeada Simples Métodos Computacionais 2011.2 Victor Casé O que é? É um Tipo Abstrato de Dados Organizar os dados de forma Linear e Dinâmico Você pode pensar visualmente assim : Linear? Existem
Leia maisHeaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35
Heaps Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Introdução Definição de Heap Heap Binária Implementação com vetor Fila de Prioridades
Leia maisPRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 22/09/2010
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA Bacharelado em Ciência da Computação e Engenharia da Computação INF 01203 Estruturas de Dados Profa. Renata Galante (galante@inf.ufrgs.br
Leia maisSCC 202 Algoritmos e Estruturas de Dados I. Listas Lineares Encadeadas Alocação dinâmica
SCC 202 Algoritmos e Estruturas de Dados I Listas Lineares Encadeadas Alocação dinâmica Lista Encadeada Dinâmica Utiliza alocação dinâmica de memória ao invés de arranjos (vetores) pré-alocados. Inserção
Leia maisDAINF - Departamento de Informática
DAINF - Departamento de Informática Algoritmos 2 - Árvore binária de busca Prof. Alex Kutzke ( http://alex.kutzke.com.br/courses ) 30 de Novembro de 2015 Slides adaptados do material produzido pelo Prof.
Leia maisTAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Modularização em C Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c
Leia maisMatrizes. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 67
Matrizes Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 67 Conteúdo Introdução vetores e matrizes Representações de matrizes TADs TAD Vetor TAD Vetor
Leia maisFilas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,
Filas Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, pelo uso da CPU Algoritmos e Estruturas de Dados I José
Leia maisEstruturas de Dados Filas
Estruturas de Dados Filas Roteiro Introdução Definição de Fila (Queue) Aplicações Operações sobre Fila Implementação de Fila Com vetores Com listas encadeadas Exercícios Introdução Estamos acostumados
Leia maisLista Encadeada (Linked List)
Lista Encadeada (Linked List) As listas ou listas encadeadas são a estrutura de dados mais simples concebível excetuando-se naturalmente os arrays. Listas encadeadas nada mais são que uma seqüência de
Leia maisListas: nós de cabeçalho, listas não homogêneas, listas generalizadas
Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas SCC-502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Lista com nó de cabeçalho Nó de cabeçalho Header, sentinela, etc.
Leia maisListas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Listas Encadeadas David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento guarda quem é o próximo Elementos não
Leia maisEstruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011
Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011 Fontes Bibliográficas Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia mais