Matrices y arreglos multidimensionales

miércoles 19 de agosto · 13:0014:15 · hace 3 días

Guía del maestro.docx

GUÍA 19-08-26 Estructuras de Datos

CN122 · miércoles 19/08/2026 · 13:00-14:15 · Sesión 4

Matrices y arreglos multidimensionales


CÓMO SE GUARDA UNA MATRIZ

La memoria es lineal, así que una matriz bidimensional se aplana. C usa orden por renglones: primero todo el renglón 0, luego el 1, y así.

  • Para m[F][C], el elemento m[i][j] está en el desplazamiento i·C + j.
  • En orden por columnas —Fortran, MATLAB— sería j·F + i. Importa al interoperar entre lenguajes.

LOCALIDAD DE REFERENCIA

Recorrer por renglones es mucho más rápido que por columnas, aunque el número de operaciones sea idéntico. La razón es la caché: al leer m[i][j] el procesador trae toda una línea de caché, que contiene los siguientes elementos del renglón. Recorrer por columnas desperdicia cada línea traída.

Es la primera vez en el curso en que la disposición física de los datos, y no el algoritmo, determina el desempeño. No será la última.

DECLARACIÓN DINÁMICA

  • Arreglo de apuntadores: int **m = malloc(F * sizeof(int*)); y luego cada renglón por separado. Permite renglones de distinta longitud, pero pierde la contigüidad.
  • Bloque único: int *m = malloc(F * C * sizeof(int)); con acceso m[i*C + j]. Conserva la localidad y es lo que conviene para cálculo numérico.

MATRICES DISPERSAS

Si la mayoría de los elementos son cero, guardar F·C celdas desperdicia memoria. Se guardan solo los no nulos como tercias (renglón, columna, valor). Se ahorra espacio y se paga con acceso más lento: otra vez el intercambio entre tiempo y espacio.

PRÁCTICA

Suma y multiplicación de matrices; medir la diferencia de tiempo entre recorrido por renglones y por columnas con matrices de 1000×1000.

Mis notas311 palabras
.docx
Tareas propias de esta sesión

Nada anotado en esta sesión todavía.