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

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

Listas e matrizes esparsas. SCC122 Estruturas de Dados

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

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

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

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

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Aplicações de listas e outras estruturas

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Aplicações de listas Outras estruturas

Aplicações de listas e outras estruturas

Fila e Deque. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Árvores Binárias de Busca

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Matrizes esparsas: definição

AULA 14 ESTRUTURA DE DADOS

Filas de Prioridade & Heaps

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

SCC Algoritmos e Estruturas de Dados I

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

BCC202 - Estrutura de Dados I

Universidade de São Paulo

Algoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs)

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

ÁRVORE BINÁRIA DE BUSCA

Filas Implementação Sequencial

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

Árvore Binária de Busca. Prof. César Melo

Linguagem C: Listas Encadeadas

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Algoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs)

Universidade Federal do Ma Curso de Ciência da Computação

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 07: Filas

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

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Listas Lineares Ordenadas

Matrizes 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

BCC202 - Estrutura de Dados I

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

Lista com saltos - generalidades

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

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

1. Listas sequenciais versus listas ligadas. Lista sequencial

Grafos tipo abstrato de dados

Tipos Abstratos de Dados - Exercício

Trabalho 2 Matriz Esparsa

Aplicação de Árvores: Código de Huffman

Árvores de Pesquisa (Parte I)

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

Estruturas de Dados Aula 11: TAD Pilha

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

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

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

Métodos Computacionais. Listas Encadeadas

Copiar para o ficheiro ArvoreBinaria.h e adaptar as funções associadas às operações sobre árvores binárias (3.1 a 3.12)

Filas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

SCC122 - Estruturas de Dados. Lista Estática Seqüencial

UNIVERSIDADE DA BEIRA INTERIOR

A 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).

Estruturas de Dados Estruturas de Dados Fundamentais

i a[i]

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Aula 05: Listas Encadeadas. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

TAD: Tipo Abstrato de Dados (parte 2)

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 06: Pilhas

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO

Módulo 10 Listas Encadeadas

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

12. Filas Interface do tipo fila

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

Lista Encadeada Simples. Métodos Computacionais Victor Casé

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

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 22/09/2010

SCC 202 Algoritmos e Estruturas de Dados I. Listas Lineares Encadeadas Alocação dinâmica

DAINF - Departamento de Informática

TAD: Tipo Abstrato de Dados (parte 2)

Matrizes. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 67

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Estruturas de Dados Filas

Lista Encadeada (Linked List)

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011

Transcrição:

Matrizes Esparsas 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 e de Computação (ICMC) Universidade de São Paulo (USP) 17 de agosto de 2010

Sumário 1 2 Representação Alternativa Listas Cruzadas Circulares

Sumário 1 2 Representação Alternativa Listas Cruzadas Circulares

O Problema Representação de matrizes com muitos elementos nulos 0 0 0 0 6 0 0 3 0 0 0 0 0 0 0 0 4 0 5 0 1 0 0 0 0 0 0 0 0 0

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 0 0 0 0 6 0 0 3 0 0 0 0 0 0 0 0 4 0 5 0 1 0 0 0 0 0 0 0 0 0

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 0 0 0 0 6 0 0 3 0 0 0 0 0 0 0 0 4 0 5 0 1 0 0 0 0 0 0 0 0 0

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 0 0 0 0 6 0 0 3 0 0 0 0 0 0 0 0 4 0 5 0 1 0 0 0 0 0 0 0 0 0

Representação por Listas Cruzadas Cada elemento identicado pela sua linha, coluna, e valor

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

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

Listas Cruzadas

Listas Cruzadas

TAD Matriz Esparsa Pode-se criar um TAD bastante simples para matrizes esparsas

TAD Matriz Esparsa Pode-se criar um TAD bastante simples para matrizes esparsas Operações principais

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

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

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

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

TAD Matriz Esparsa Operações auxiliares (podem ser criadas a partir das operações principais)

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

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

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

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

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

Estrutura de Dados A implementação é facilitada se as listas contêm o nó cabeça 1 #define NLINHAS 5 2 #define NCOLUNAS 6 3 4 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; 15 16 typedef struct { 17 CELULA linha[nlinhas]; 18 CELULA coluna[ncolunas]; 19 } MATRIZ;

Operações Vamos implementar as operações criar_matriz(...), limpar_matriz(...), inserir(...), remover(...) e consultar(...) do conjunto de operações principais

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

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

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 } 10 11 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 }

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 }

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 } 12 13 //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; 21 22 pnovo->direita = paux->direita; 23 paux->direita = pnovo; 24 25 ///////////inserir na coluna 26 paux = &matriz->coluna[col]; 27 28 //procurar posição de inserção 29 while (paux->abaixo!= NULL && paux->abaixo->lin < lin) { 30 paux = paux->abaixo; 31 } 32 33 pnovo->abaixo = paux->abaixo; 34 paux->abaixo = pnovo; 35 } 36 37 return 1; 38 } 39 40 return 0; 41 }

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 } 10 11 if (paux->direita->col == col) { 12 CELULA *prem = paux->direita; 13 paux->direita = paux->direita->direita; 14 free(prem); 15 } 16 17 return 1; 18 } 19 20 return 0; 21 }

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 } 10 11 paux = paux->direita; 12 } 13 14 dado->valor = 0; 15 16 return 1; 17 } 18 19 return 0; 20 }

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? 0 0 0 0 6 0 0 3 0 0 0 0 0 0 0 0 4 0 5 0 1 0 0 0 0 0 0 0 0 0

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? 0 0 0 0 6 0 0 3 0 0 0 0 0 0 0 0 4 0 5 0 1 0 0 0 0 0 0 0 0 0

Operações P.ex., somar -4 à coluna 5 0 0 0 0 6 0 0 3 0 0 0 0 0 0 0 0 4 0 5 0 1 0 0 0 0 0 0 0 0 0

Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional?

Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos

Desempenho Quando a representação por listas cruzadas é vantajosa em relação à representação convencional? Fator Espaço. Suponhamos matriz esparsa que armazena inteiros

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

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)

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

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)

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

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

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

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

Desempenho (Fator Espaço) Conclusão Em termos de espaço ocupado, é vantajoso utilizar a representação de listas cruzadas quando

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

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

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

Desempenho (Fator Tempo) As operações sobre listas cruzadas podem ser mais lentas e complexas do que para o caso bidimensional

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

Representação Alternativa Listas Cruzadas Circulares Sumário 1 2 Representação Alternativa Listas Cruzadas Circulares

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

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

Representação Alternativa Listas Cruzadas Circulares Representação alternativa 50 0 0 0 10 0 20 0 0 0 0 0 30 0 60 5

Representação Alternativa Listas Cruzadas Circulares Exercícios Desenvolva procedimentos para

Representação Alternativa Listas Cruzadas Circulares Exercícios Desenvolva procedimentos para Acessar o elemento a ij

Representação Alternativa Listas Cruzadas Circulares Exercícios Desenvolva procedimentos para Acessar o elemento a ij Eliminar a ij da matriz

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

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.