You are on page 1of 44

ARREGLO BIDIMENSIONAL (MATRIZ)

Un arreglo bidimensional es tambin conocido como


matriz en matemticas o tablas en aplicaciones
comerciales.
Si un arreglo se referencia por dos ndices se denomina
arreglo bidimensional, tambin llamado matriz.
Las matrices se organizan en forma lgica como una malla
de celdas dispuestas en filas y columnas. Cada elemento
es referenciado por el orden de la fila y el orden de la
columna.
Las matrices son de mucha utilidad en aplicaciones
matemticas pues permite representar matrices especiales
como las matrices simtricas, matrices huecas, etc.
ARREGLO BIDIMENSIONAL (MATRIZ)

DEFINICIN
Sea I, J: conjuntos de ndices o posiciones
Sea V un conjunto finito de valores
Un arreglo bidimensional es una aplicacin (funcin) T,
de I x J en V.
T: IxJ V
I, J es el rango de ndices, V rango de valores y T una
funcin que hace corresponder a cada par (i, j) I x J un
valor en V.
I est definido en [1, M] y corresponde al orden de la fila.
J est definido en [1, N] y corresponde al orden de la
columna.
T es del tamao M x N
ARREGLO BIDIMENSIONAL (MATRIZ)

Convenio notacional
Los elementos de un arreglo bidimensional A, pueden
denotarse:
Por medio de subndices
A11 , A21 , A31 , ... An1
Por medio de parntesis o corchetes
A(1,1), A(2, 1), A(3, 1), ... A(n,1)
A[1,1], A [2, 1], A [3, 1], ... A [n,1]
Independientemente los nmeros i, j reciben el nombre de
ndices y Aij , A(i, j) o A[i, j] indica la variable
subndicada.
ARREGLO BIDIMENSIONAL (MATRIZ)

A puede interpretarse matemticamente como una matriz


M x N donde M representa el nmero de filas y N
representa el nmero de columnas. El elemento A(i, j)
representa el valor correspondiente a la fila i y la columna j.
ARREGLO BIDIMENSIONAL (MATRIZ)

Dimensin del arreglo bidimensional


El arreglo bidimensional es una estructura esttica, que
requiere definir el tamao en bytes que se reservar en la
compilacin antes de ejecutar el programa. Cuando se
declara el arreglo se tiene que indicar el nmero mximo
de elementos en las filas y el nmero mximo de elementos
en las columnas
Ej: A(1: M, 1: N)
ARREGLO BIDIMENSIONAL (MATRIZ)

Representacin en memoria de un arreglo


bidimensional

El arreglo bidimensional ocupa posiciones contguas de


memoria, por lo que conociendo la direccin base, es
posible accesar a cualquier elemento sin tener que hacer
una exploracin secuencial.
Aunque el arreglo bidimensional es de orden M x N, sta se
puede representar en forma unidimensional en un vector V
de tamao M x N.
ARREGLO BIDIMENSIONAL (MATRIZ)

Representacin en memoria de un arreglo


bidimensional

Esta representacin puede ser por filas o por columnas.


En una representacin por filas, V contiene los elementos
del arreglo bidimensional A dispuestos por fila. Primero los
elementos de la fila 1, luego los elementos de la fila 2, y as
sucesivamente hasta los elementos de la fila M.
En una representacin por columnas, V contiene los
elementos del arreglo bidimensional A dispuestos por
columna. Primero los elementos de la columna 1, luego los
elementos de la columna 2, y as sucesivamente hasta los
elementos de la columna N.
ARREGLO BIDIMENSIONAL (MATRIZ)

Representacin en memoria de un arreglo


bidimensional
Sea A una matriz de orden M x N (M filas y N columnas)
Sea LOC(A(i, j)) la direccin del elemento A(i, j) del
arreglo bidimensional A.
Si consideramos
BASE(A) la direccin de inicio de A
w nmero de palabras que ocupa A(i, j) en memoria
Entonces, si se representa por filas
LOC(A(i, j)) = BASE(A) + w (N * (i -1) + (j 1))
Si se representa por columnas
LOC(A(i, j)) = BASE(A) + w (M * (j -1) + (i 1))
ARREGLO BIDIMENSIONAL (MATRIZ)
REPRESENTADA POR FILAS REPRESENTADA POR COLUMNAS
A(1, 1) 2000 A(1, 1)
Colum
A(1, 2) Fila 2002 A(2, 1) na 1
1
A(1, 3) 2004 A(3, 1)
A(1, 4) 2006 A(1, 2)
Colum
A(2, 1) 2008 A(2, 2) na 2
A(2, 2) Fila 2010 A(3, 2)
2
A(2, 3) 2012 A(1, 3)
Colum
A(2, 4) 2014 A(2, 3) na 3
A(3, 1) 2016 A(3, 3)
A(3, 2) Fila 2018 A(1, 4)
3 Colum
A(3, 3) 2020 A(2, 4) na 4
A(3, 4) 2022 A(3, 4)
BASE(A)= 2000 W = 2 palabras M =3 N=4
Ejemplos:
Representacin por filas LOC(A(3, 2)) = 2000 + 2 * (N*(3 1) +( 2 1) ) = 2018
Representacin por columnas LOC(A(3, 2)) = 2000 + 2 * (M*(2 1)+(3 - 1)) = 2010
ARREGLO BIDIMENSIONAL (MATRIZ)
Acciones sobre matrices
1. Almacenamiento de la matriz
El almacenamiento de una matriz consiste en almacenar los
datos en cada una de las celdas de la matriz. La matriz
existe desde su declaracin, por tanto ya ocupa el espacio
que se ha reservado para el mismo.
Almacenamiento por filas
Los elementos se ingresan en orden de filas comenzando en
la fila 1, luego la fila 2 hasta la fila M. Cada fila es
ingresada de izquierda a derecha
Entrada: A matriz vaca
M nmero de filas
N nmero de columnas
Salida: A matriz cargada
ARREGLO BIDIMENSIONAL (MATRIZ)
Almacenamiento por filas

Accin Almac_Por_Filas (A, M, N)


Inicio
Para I desde 1 hasta M
Para J desde 1 hasta N
Leer dato
A(I, J) dato
FinPara
FinPara
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
Almacenamiento por columnas

Los elementos se ingresan en orden de columnas


comenzando en la columna 1, luego la columna 2 hasta la
columna N. Cada columna es ingresada de arriba hacia
abajo
Entrada: A matriz vaca
M nmero de filas
N nmero de columnas
Salida: A matriz cargada
ARREGLO BIDIMENSIONAL (MATRIZ)
Almacenamiento por columnas

Accin Almac_Por_Columnas (A, M, N)


Inicio
Para J desde 1 hasta N
Para I desde 1 hasta M
Leer dato
A(I, J) dato
FinPara
FinPara
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
2. Recorrido de una matriz
Recorre cada elemento de la matriz una nica vez y
muestra los datos.
El recorrido al igual que en la carga puede hacerse por
filas o columnas.

Recorrido por filas

Entrada: A matriz
M nmero de filas
N nmero de columnas
ARREGLO BIDIMENSIONAL (MATRIZ)
Recorrido por filas

Accin Recorre_Por_Filas (A, M, N)


Inicio
Para I desde 1 hasta M
Para J desde 1 hasta N
dato A(I, J)
Escribir dato
FinPara
FinPara
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
Recorrido por columnas
Entrada: A matriz
M nmero de filas
N nmero de columnas
Accin Recorre_Por_Columnas (A, M, N)
Inicio
Para J desde 1 hasta N
Para I desde 1 hasta M
dato A(I, J)
Escribir dato
FinPara
FinPara
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
3. Salvar una matriz
La matriz reside en memoria principal, por tanto es
voltil. Para no perder la informacin de una matriz se
debe copiar los datos de la matriz en un archivo que
resida en almacenamiento secundario. Esta operacin se
denomina SALVAR la matriz, y consiste en copiar los
elementos de la matriz A en una fila secuencial F.
La matriz se puede salvar por filas o por columnas.
Salvar una matriz por filas
Entrada: A matriz
M nmero de filas
N nmero de columnas
Salida: F fila secuencial
ARREGLO BIDIMENSIONAL (MATRIZ)
Salvar una matriz por filas
Accin Salvar_Matriz_Por_Filas (A, M, N, F)
Inicio
Primer(F)
Poner(F,N) // salva el nmero de columnas
Para I desde 1 hasta M
Para J desde 1 hasta N
V A(I, J)
Poner(F,V)
FinPara
FinPara
Marcar(F, )
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
4. Recuperar una matriz
Una matriz se salva en una fila secuencial para su
posterior recuperacin. Esta operacin se denomina
RECUPERAR y consiste en copiar los elementos de la
fila secuencial en la matriz
Si la matriz se ha salvado por filas, la recuperacin
tambin deber ser por filas. Si la matriz se ha salvado
por columnas, la recuperacin tambin deber ser por
columnas.
Entrada: F fila secuencial (debe existir)
Salida: A matriz cargada
M nmero de filas
N nmero de columnas
ARREGLO BIDIMENSIONAL (MATRIZ)
Accin Recuperar_Matriz (F, A, M, N)
Inicio
Primer(F)
Tomar(F,N)
Tomar(F,V) Mientras ( Ultimo(F))
I 1 J J+1
J 0 A(I, J) V
Si (J mod N = 0)
I I+1
J 0
FinSi
Tomar(F,V)
FinMientras
M I-1
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
5. Copia de una matriz
Entrada: A matriz de origen de orden M x N
Salida: B matriz copia de orden M x N
Accin Copia_Matriz(A, B, M, N)
Inicio
Para I desde 1 hasta M
Para J desde 1 hasta N
B(I, J) A(I, J)
FinPara
FinPara
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
6. Representacin de una matriz en un vector por filas
Esta representacin consiste en almacenar los datos de
la matriz en un vector por filas.
Los elementos se almacenan en el vector comenzando
por los elementos de la fila 1, luego los elementos de la
fila 2 hasta los elementos de la fila M. Cada fila es
almacenada de izquierda a derecha

Salida: A vector de orden M x N


(A representa a una matriz de orden
M x N)
ARREGLO BIDIMENSIONAL (MATRIZ)
6. Representacin de una matriz en un vector por filas
Accin Almac_Por_Filas(A, M, N)
Inicio
K 0
Para I desde 1 hasta M
// ingresa la fila I
Para J desde 1 hasta N
Leer dato
K K+1
A(K) dato
FinPara
FinPara
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
7. Recorrido de una matriz simulada
Accin Recorre_Matriz(A, M, N)
Inicio
K 0
Para I desde 1 hasta M
// muestra la fila I
Para J desde 1 hasta N
K K+1
Val A(K)
Escribir Val
FinPara
FinPara
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
8. Salvar la matriz simulada por filas
Significa guardar sus elementos en una fila secuencial.
Para poder recuperar la matriz en otra accin se puede
guardar junto con los datos en la fila secuencial, la
dimensin M y N nmeros de filas y columnas
Una solucin ms eficiente es guardar slo el nmero de
columnas N
Entrada: A vector de orden M x N
(A representa a una matriz de orden
M x N)
Salida: F fila secuencial
ARREGLO BIDIMENSIONAL (MATRIZ)
8. Salvar la matriz simulada por filas
Accin Salvar_Matriz_Simulada(A, M, N, F)
Inicio
Primer(F)
Poner(F, N)
Para I desde 1 hasta M*N
V A(I)
Poner(F,V)
FinPara
Marcar(F, )
Fin
ARREGLO BIDIMENSIONAL (MATRIZ)
9. Recuperar la matriz simulada por filas
Para recuperar la matriz simulada debe primero
recuperarse la dimensin de la matriz.
El primer elemento de la fila secuencial corresponde al
nmero de columnas. Luego se toman los elementos de
la fila y se almacenan en la matriz simulada por filas.

Entrada: F fila secuencial (no vaca)


Salida: A vector de orden M x N
M el nmero de filas
N el nmero de columnas
ARREGLO BIDIMENSIONAL (MATRIZ)

9. Recuperar la matriz simulada por filas


Accin Recuperar_Matriz_Simulada(F, A, M, N)
Inicio
M 0
Tomar(F,N)
Tomar(F,V)
K 0
Mientras ( Ultimo(F))
K K+1
A(K) V
Si (K mod N = 0)
M M+1
FinSi
Tomar(F,V)
FinMientras
Fin
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES
Generalmente los arreglos bidimensionales (matrices)
tienen formas particulares que no requieren reservar
espacio para todas las posiciones, dado que las
informaciones asociadas a estas posiciones son todas
idnticas y frecuentemente con valor 0.
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES
MATRICES TRIANGULARES
Una matriz triangular A(1:M, 1:M) se define como una
matriz cuadrada que cumple:
A(i, j) = 0 para i < j
Es decir que los nicos valores que requieren
almacenamiento son aquellos asociados a los ndices
(i, j) / i j
Suponiendo un almacenamiento por fila, estos son:
A(1, 1), A(2, 1), A(2, 2), A(3, 1), A(3, 2), A(3, 3),
A(4, 1), ...., A(m, 1), A(m, 2), ..... A(m, m-1), A(m, m)
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES

MATRICES TRIANGULARES

4 0 0 0 0
3 -5 0 0 0
1 0 6 0 0
-7 8 -1 3 0
5 -2 0 2 -8
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES
MATRICES TRIANGULARES
Una matriz triangular puede almacenarse en un vector V,
de modo que solo se guarde en el vector los elementos
significativos (distintos de cero).
En el vector V se han almacenado un elemento de la fila
uno, seguido de dos elementos de la fila dos y as
sucesivamente hasta llegar a los M elementos de la fila M.
El nmero de elementos que es necesario recorrer antes de
alcanzar al primer elemento de la fila i, corresponde al
nmero de elementos de las filas 1 hasta i-1, es decir
1+2+3+...+i-1. La sumatoria es igual a i*(i-1)/2
La funcin que permite calcular la posicin del elemento
A(i,j) es: F(i, j) = (i*(i-1)/2) + j para i j
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES
MATRICES TRIANGULARES
Se puede separar espacio para un vector de m*(m+1)/2
elementos, ahorrndose la mitad del espacio requerido
para todos los elementos de la matriz A(1:M, 1:M).
Acceso a un elemento de la matriz triangular
Entrada : V, I, J
Salida : V(Pos) Pos = (I*(I-1)/2)+J
en el nombre de la funcin Valor
Precondicin A debe ser cuadrada
CASOS DE MATRICES CON CARACTERSTICAS
PARTICULARES
Acceso a un elemento de la matriz triangular

Funcin Valor(V, I, J): tipo del elemento


Inicio
Si (I < J)
Valor 0
Sino
Pos (I*(I-1)/2)+J
Valor V(Pos)
FinSi
Fin
CASOS DE MATRICES CON CARACTERSTICAS
PARTICULARES
MATRIZ SIMTRICA
Una matriz simtrica A(1:M, 1:M) se define como una matriz
cuadrada igual a su transpuesta, es decir si cumple:
A(i, j) = A(j, i) para todo i y j
Puesto que A(i, j) = A(j, i) solo necesitamos almacenar los
elementos por encima o por debajo de la matriz (incluida la
diagonal). Podremos por tanto almacenarla en un vector V
como una matriz triangular.
Verificar si una matriz es simtrica
Entrada : A matriz
Salida : mensaje A es simtrica o
A no es simtrica
Precondicin A debe ser cuadrada
CASOS DE MATRICES CON CARACTERSTICAS
PARTICULARES

MATRIZ SIMTRICA

1 3 -7 5 -2
3 6 0 -1 4
-7 0 2 3 0
5 -1 3 -4 1
-2 4 0 1 5
Accin Verifica_Matriz_Simtrica(A, M, N)
Inicio Si (M N)
Escribir matriz no es cuadrada
Sino
simtrica verdad
I 1
Mientras (I < N simtrica)
J I+1
Mientras (J N simtrica)
Si (A(I, J) A(J, I))
simtrica falso
Finsi
J J+1
FinMientras
I I+1
FinMientras
Si (simtrica)
Escribir matriz es simtrica
Sino
Escribir matriz no es simtrica
FinSi

Fin
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES
Matrices Huecas
Una matriz es hueca si la mayora de sus elementos son
ceros. Cuando una matriz es hueca es conveniente
almacenar en una estructura solo los datos significativos
(diferentes de cero). Los elementos diferentes de cero son
representados en una lista y son almacenados por filas.
Para accesar a un elemento es necesario recorrer la lista.
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES
Primera representacin de matrices huecas
Cada elemento diferente de cero es representado por la
terna (ndice de fila, ndice de columna, valor del
elemento)
Esta representacin es til si permite ahorrar espacio con
respecto a la representacin habitual, porque el tiempo de
acceso es por lo general ms largo a causa del recorrido
obligatorio de la lista para accesar a un elemento
determinado. Por lo tanto, el nmero de elementos
diferentes de cero debe ser inferior a M*N/3 para una
matriz A(1:M, 1:N)
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES
Primera representacin de matrices huecas
Por ejemplo: la matriz A:

0 7 0 9
3 0 0 0
0 4 6 0
8 0 0 1
Es representada por:
(1,2,7) (1,4,9) (2,1,3) (3,2,4) (3,3,6) (4,1,8) (4,4,1)
fila 1 fila 2 fila 3 fila 4
Acceso a un elemento de una matriz hueca
Entrada : V, I, J, Noceros
Salida : Valor del elemento I, J de la matriz
Funcin Valor(V, I, J, Noceros): tipo del elemento
Inicio
K 1
Mientras (V(K) < I K < 3*(Noceros - 1)) // bsqueda de la fila
K K+3
FinMientras
Mientras (V(K) = I V(K+1) < J K< 3*(Noceros-1))
// bsqueda de elemento en la fila I
K K+3
FinMientras
Si (V(K) = I V(K+1) = J)
Valor V(K+2)
Sino
Valor 0
FinSi
Fin
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES
Segunda Representacin de matrices huecas
En esta representacin no es necesario repetir el ndice de
fila para cada elemento de una fila.
Es suficiente para cada fila anteponer el nmero de
elementos diferentes de 0 de cada fila (eventualmente
cero). De esta manera se economiza espacio y se acelera el
recorrido de la lista.
Cada elemento diferente de cero es representado por un
par (ndice de columna, valor del elemento).
La matriz A del ejemplo anterior es representada por:
2 (2,7) (4,9) 1 (1,3) 2 (2,4) (3,6) 2(1,8) (4,1)
fila 1 fila 2 fila 3 fila 4
CASOS DE MATRICES CON
CARACTERSTICAS PARTICULARES
Segunda Representacin de matrices huecas

Acceso a un elemento de una matriz hueca


Entrada : V, I, J
Salida : Valor del elemento I, J de la matriz
en el nombre de la funcin Valor
Funcin Valor(V, I, J): tipo del elemento
Inicio K 1
L 1
Mientras (L < I) // bsqueda de la fila
L L+1
K K + (2*V(K)) + 1
FinMientras
N V(K) // nmero de elementos no ceros en la fila I
Si (N = 0)
L 0
Sino
L 1
FinSi
Mientras (V(K+L) < J L < N*2) // bsqueda del elemento en la fila I
L L+2
FinMientras
Si (N 0 V(K + L) = J)
Valor V(K+L+1)
Sino
Valor 0
FinSi
Fin

You might also like