#07 – Estructuras de Datos (III)

Llegados a este punto, vamos a ver la siguiente estructura de datos, la cual deriva directamente de las listas: las matrices. Las matrices son muy importantes en el desarrollo de videojuegos, ya que se trata de un buen elemento sobre el que representar el espacio.

Matrices

A grandes rasgos, podemos ver una matriz como una lista de listas. ¿Se entiende esto? Quizás la siguiente imagen ayude a comprenderlo:

Creación

Si nos fijamos en la imagen anterior, no debería de costar mucho deducir cómo se crea una matriz: creamos una lista con la dimensión de las filas deseadas, y luego, para cada posición de la lista, una nueva con el número de columnas deseadas. Crear una matriz 3·3 quedaría así en Python:

matriz = []
for i in range(3):
	matriz.append([0] * 3)

Lectura

Para acceder a los elementos de una matriz (ya sea para leerlos o editarlos) se utiliza el operador [], al igual que en las listas. Pero ojo, las matrices tienen dos dimensiones, por lo que se usará de la forma matriz[][]. Sabiendo esto, sólo necesitamos un bucle que recorra las filas y las columnas:

for i in range(3):
	for j in range(3):
		print(matriz[i][j])

Dimensión

No existe un operador o función que nos proporcione la dimensión de la misma. No obstante, podemos obtenerla mediante la función len(), la cual ya se ha comentado anteriormente. En el caso de las matrices, mediante len(matriz) obtendremos el número de filas, mientras que con len(matriz[0]) obtendremos el número de columnas.

Operaciones con Matrices

A continuación veremos unos algoritmos de ejemplos de las principales operaciones entre matrices.

Suma

La suma es la más sencillas de ellas. Simplemente consiste en sumar el elemento de ambas matrices que ocupa la misma posición. Pero cuidado, para que dos matrices se puedan sumar, han de tener la misma dimensión. De lo contrario, la suma resulta imposible. Veamos el código para sumar dos matrices de dimensión m·n:

for i in range(m):
	for j in range(n):
		resultado[i][j] = matrizA[i][j] + matrizB[i][j]

Producto

Aquí la cosa ya se complica un poco más. Para poder multiplicar dos matrices, el número de columnas de la primera matriz ha de ser igual al número de filas de la segunda, es decir, las dimensiones de la operación han de ser p·q * q·r. La matriz resultante tendrá las dimensiones p·r. Para calcular cada elemento de la matriz resultado, se utiliza la siguiente fórmula:

(Aquí sólo veremos el algoritmo. Si tenéis curiosidad sobre el proceso, Wikipedia)

Os recuerdo que para programar las matemáticas van a ser necesarias sí o sí. Muchas operaciones ha codificar suelen consistir en sumatorios, por lo que quizás debáis practicar un poco su uso. El expuesto anteriormente se codificaría de la siguiente manera:

for i in range(p):
	for j in range(r):
		for k in range(q):
			resultado[i][j] += matrizA[i][k] * matrizB[k][j]

Con esto dejamos aparcadas las estructuras de datos, y ya estamos listos para comenzar con lo que de verdad dará a nuestros programas todo su potencial: las funciones. Mientras tanto, el ejercicio 8 os servirá para repasar y profundizar todo lo aprendido hasta ahora.


¿Quieres estar al día de todo lo publicado en el blog?
Pues para ello puedes suscribirte mediante ese bonito formulario que tienes más abajo, o simplemente puedes seguirme en mi cuenta personal de Twitter (o ambas cosas si te animas :D)

Marcar como favorito enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *