estrutura de dados i profº.: abc sampaio matrizes & matrizes especiais universidade federal do...

47
Estrutura de Dados I Estrutura de Dados I Profº.: ABC Sampaio Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Universidade Federal do Pará Centro de Ciências Exatas e Naturais Centro de Ciências Exatas e Naturais Curso de Bacharelado em Ciência da Computaçã urso de Bacharelado em Ciência da Computaçã

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Estrutura de Dados IEstrutura de Dados IProfº.: ABC SampaioProfº.: ABC Sampaio

Matrizes

&

Matrizes Especiais

Universidade Federal do ParáUniversidade Federal do ParáCentro de Ciências Exatas e NaturaisCentro de Ciências Exatas e Naturais

Curso de Bacharelado em Ciência da ComputaçãoCurso de Bacharelado em Ciência da Computação

Page 2: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

EquipeEquipe

Adriano Martins - 0008802001

Marcelo Malcher - 0008802801

Luiz Tomé - 0008803501

Page 3: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Noção de MatrizNoção de Matriz

Chama - se de matriz m x n toda tabela T de dados homogêneos organizados de forma contígua na memória.

Exemplo:

2 3 -5

4 0 10

7 1/3 -3/8

Page 4: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Armazenamento na memóriaArmazenamento na memória

Uma matriz é armazenada na memória de forma contígua, ou seja, seus elementos estão todos uma ao lado do outro, ocupando um espaço continuo na memória.

.... a11 a12 a13 ....

Page 5: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Classificação das Matrizes Classificação das Matrizes

Matrizes Unidimensionais – VetoresMatrizes N-dimensionais

Page 6: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Matrizes UnidimensionaisMatrizes Unidimensionais

Definição: Chamamos de matrizes unidimensionais aquelas que possuem apenas uma única dimensão. Essas matrizes são comumente chamadas de vetores (linha ou coluna)

Exemplo:

f d b

7

0.1

2.8

Page 7: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Matrizes – N-Dimensionais Matrizes – N-Dimensionais

Operações Em Pascal há somente duas operações básicas a serem efetuadas em uma matriz.

São elas - Consulta - Atribuição

Veremos agora a implementação em Pascal.

Page 8: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Pascal – ExibiçãoPascal – Exibição

Procedure exibicao (M : array [1..5,1..5] of real) ;

Var i, j: integer

for i := 1 to 5 do

for j := 1 to 5 do

writeln ( M [i,j] );

End;

Page 9: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Pascal - AtribuiçãoPascal - Atribuição

Procedure atribuicao (M: array [1..5,1..5] of real);

var i, j: integer;

For i := 1 to 5 do

for j := 1 to 5 do

writeln (‘Digite o conteúdo da matriz’);

readln( M [i,j] );

End;

Page 10: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Matrizes EspeciaisMatrizes Especiais

Matrizes Diagonais Matrizes Triangulares Matrizes Simétricas Matrizes Anti-Simétricas Matrizes Tri-diagonais Matrizes Faixas

Page 11: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Matrizes DiagonaisMatrizes Diagonais

Definição Modelagem Modelagem da Interface Implementação das Operações

Page 12: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

DefiniçãoDefinição

As Matrizes diagonais são aquelas cujos elementos fora da diagonal principal são nulos, ou seja, M[i,j]=0 caso i j .

-13 0 0 0

0 51 0 0

0 0 7 0

Freqüentemente, o termo Matriz Diagonal se aplica somente as matrizes quadradas (m = n), porém como o exemplo acima mostra incluímos também as retangulares.

OBS.:

Page 13: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Modelagem Modelagem

Uma matriz diagonal pode ser implementada no Pascal como um vetor linha ou coluna, que armazena apenas os elementos da diagonal principal.

Page 14: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Modelagem da InterfaceModelagem da Interface

Type Diagonal = object

Vet: array [1..3] of string;

Procedure Inicializa;

Procedure MostrarDiagonal;

Procedure Consulta(i,j:integer);

Procedure Altera (i,j:integer; X:string);

End;

Page 15: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

Procedure diagonal.inicializa;Var i: integer;Begin

For i:=1 to 3 doRead(vet[i]);

End;

Procedure Diagonal.MostrarDiagonal;Var i: integer;Begin

For i:=1 to 3 doWriteln(vet[i]);

End;

Page 16: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das OperaçõesProcedure diagonal.consulta(i, j: integer);Begin If i <> j then writeln (‘0’) else writeln (vet[i]);End;

Procedure Diagonal.Altera(i,j: integer;X: string);Begin If i <> j then writeln (‘Matriz Diagonal, não é possível alterar esse elemento.’) else vet[i]) := X;End;

Page 17: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Matriz TriangularMatriz Triangular

Definição Modelagem Modelagem da Interface Implementação das Operações

Page 18: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

DefiniçãoDefinição

Uma matriz M é dita triangular inferior se mij = 0 com i < j, e triangular superior se mij = 0 com i > j

000

600

780

321

Triangular SuperiorM =

Page 19: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

ModelagemModelagem

Podemos representar uma matriz triangular como sendo um vetor linha em que seus elementos são os diferentes de 0 (zero). Dispostos ordenadamente de acordo com seus índices.

Page 20: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Modelagem da InterfaceModelagem da Interface

Type TriangularInf = objectvet: array [1..6] of integer; Procedure Inicializa; Procedure MostrarElementos; Procedure Consulta(i,j:integer);

Procedure Altera (i,j:integer; X:string);End;

Page 21: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das OperaçõesProcedure TriangularSup.inicializa;Var i: integer;Begin For i:=1 to 6 do Read(vet[i]);End;

Procedure TriangularSup.MostrarElementos;Var i: integerBegin For i:=1 to 6 do Writeln(vet[i]);End;

Page 22: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das OperaçõesProcedure TriangularSup.consulta(i, j: integer);Begin If i > j then writeln (‘0’) else writeln(vet[((i * (i-1) div 2)+ j)]);End;Procedure TrangularSup.Altera(i,j: integer;X: string);Begin If i > j then writeln (‘Erro: não é possível alterar esse elemento.’) else vet[((i * (i-1) div 2)+ j)] := X;End;

Page 23: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Matriz SimétricaMatriz Simétrica

Definição Modelagem Modelagem da Interface Implementação das Operações

Page 24: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

DefiniçãoDefinição

Uma matriz é dita simétrica quando ela é igual a sua transposta, ou seja, ela é simétrica em relação a diagonal principal.

450

51-3

0-32

Page 25: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

ModelagemModelagem

Uma matriz simétrica pode ser representada como um vetor linha que contém todos os seus elementos distintos ordenados de acordo com seus índices.

Page 26: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Modelagem da InterfaceModelagem da Interface

Type MatSimetrica = object

vet: array [1..6] of integer;

Procedure Inicializa;

Procedure MostrarSimetrica; Procedure Consulta(i,j:integer); Procedure Altera(i,j:integer; X: string);end;

Page 27: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

Procedure MatSimetrica.inicializa;Var i:integer;Begin

For i:=1 to 6 do Readln(vet[i]);

End;Procedure MatSimetrica.MostrarSimetrica;Var i: integer Begin For i:=1 to 6 do Writeln(vet[i]); End;

Page 28: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

Procedure MatSimetrica.Consulta(i,j: integer);Var aux:integer;Begin if i > j then Begin aux:=j; j:=i; i:=aux; End ;Writeln ( vet[((i * (i-1) div 2)+ j)] ); End;

Page 29: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

Procedure MatSimetrica.Altera(i,j: integer;X: string);Var aux:integer;Begin if i > j then Begin aux:=j; j:=i; i:=aux; End ; vet[((i * (i-1) div 2)+ j)] := X;End;

Page 30: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Matriz Anti-SimétricaMatriz Anti-Simétrica

Definição Modelagem Modelagem da Interface Implementação das Operações

Page 31: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

DefiniçãoDefinição

Uma matriz é dita anti-simétrica, se e somente se, ela for igual a sua transposta com o sinal trocado, ou seja, M = - Mt

052

-503

-2-30

Page 32: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

ModelagemModelagem

A matriz anti-simétrica,pode ser representada da mesma forma que a simétrica, usando um único vetor

Page 33: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Modelagem da InterfaceModelagem da Interface

Type MatAntiSimetrica = object

vet: array [1..3] of integer;

Procedure Inicializa;

Procedure MostrarAntiSimetrica; Procedure Consulta(i,j:integer); Procedure Altera(i,j:integer; X: real);End;

Page 34: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

Procedure MatAntiSimetrica.inicializa;Var i:integer;Begin

For i:=1 to 3 do Readln(vet[i]);

End;Procedure MatAntiSimetrica.MostrarAntiSimetrica;Var i: integer Begin For i:=1 to 3 do Writeln(vet[i]); End;

Page 35: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

Procedure MatAntiSimetrica.Consulta(i,j: integer);Var aux:integer; AS: Boolean;Begin AS:=False; if i > j then Begin aux:=j; j:=i; i:=aux; AS := True; End ;

Page 36: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

if i = j then writeln(‘0’)

else Begin

If AS then writeln ( (-1*vet[((i * (i-1) div 2)+ j)]) );

else writeln (vet[((i * (i-1) div 2)+ j)]);

End;

End;

Page 37: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

Procedure MatAntiSimetrica.Altera(i,j: integer; X:real);Var aux:integer; AS: Boolean;Begin AS:=False; if i > j then Begin aux:=j; j:=i; i:=aux; AS := True; End ;

Page 38: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

if i = j then writeln(‘Matriz Anti-Simétrica, impossível alterar esse elemento.’)

else

Begin

If AS then vet[((i * (i-1) div 2)+ j)]) := -X;

else writeln (vet[((i * (i-1) div 2)+ j)]) := X;

End;

End;

Page 39: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Matriz Tri-DiagonaisMatriz Tri-Diagonais

Definição Modelagem Modelagem da Interface Implementação das Operações

Page 40: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

DefiniçãoDefinição

É a matriz onde todos os seus elementos são nulos exceto a diagonal principal e as

diagonais vizinhas mais próximas.

19000

26400

0-1-210

00254

0003-1

Page 41: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

ModelagemModelagem

Uma matriz tri-diagonal pode ser implementada transferindo os elementos das três diagonais para um vetor linha.

Page 42: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Modelagem da InterfaceModelagem da Interface

Type TriDiagonal = objectvet: array [1..7] of string;Procedure Inicializa;Procedure MostrarTriDiagonal;

Procedure Consulta(i,j:integer); Procedure Altera(i,j:integer; X: string); End;

Page 43: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das OperaçõesProcedure TriDiagonal.Inicializa;Var i: integer;Begin For i:=1 to 7 do Readln (vet[i]);End;

Procedure TriDiagonal.MostrarTriDiagonal;Var i:integer;Begin For i:=1 to 7 do Writeln (vet[i]);End;

Page 44: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Implementação das OperaçõesImplementação das Operações

Procedure TriDiagonal.consulta(i, j: integer);

Begin

If (i > j + 1) or (j > i + 1) then

writeln (‘0’)

else writeln (vet [2i +j - 2]);

End;

Procedure TriDiagonal.Altera(i,j: integer;X: string);

Begin

If (i > j + 1) or (j > i + 1) then

writeln (‘Matriz Tri-Diagonal, não é possível alterar esse elemento.’)

else vet [2i +j - 2] := X;

End;

Page 45: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

Matriz FaixaMatriz Faixa

Definição Modelagem Modelagem da Interface Implementação das Operações

Page 46: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

DefiniçãoDefinição

É semelhante a Matriz Tri-Diagonal, porém possibilita ao usuário definir a faixa de vizinhança da diagonal principal a qual os elementos serão não-nulos.

03-45900

0013260

000-183-2

0000-404

0000057

M é uma matriz de faixa 2x1

M =

Page 47: Estrutura de Dados I Profº.: ABC Sampaio Matrizes & Matrizes Especiais Universidade Federal do Pará Centro de Ciências Exatas e Naturais Curso de Bacharelado

ModelagemModelagem

Existem duas formas possíveis de se modelar esta matriz. A primeira consiste em usar um único vetor com todos os elementos diferentes de zero; a segunda consiste em usar n vetores de acordo com o número diagonais da faixa.