¿Cuál es la relación entre matrices y matrices variables de programas de computadora?

“Arreglos variables de programas de computadora”: la terminología es un poco confusa, ¿cuán importante es la palabra “variable” en su pregunta?

En matemáticas, la suya es una matriz 3 × 3:

1 2 3
4 5 6
7 8 9

Una matriz tiene filas y columnas y es rectangular (también llamada tabla en algunos entornos).

Haga una nota especial de esta matriz 1 × 3:

1 2 3


En muchos lenguajes de programación, se puede definir una matriz simple de esta manera:

var myArray = [1, 2, 3];

Debería ser bastante obvio que la variable de matriz es idéntica a la matriz 1 × 3.

En algunos idiomas también puede definir matrices multidimensionales. En pseudocódigo:

var multidDim = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];

La definición de una matriz multidimensional se asigna perfectamente a la matriz 3 × 3.


Relación

  • Una matriz simple en lenguajes de programación se puede usar directamente para representar una sola columna o fila en una matriz
  • Una matriz multidimensional en un lenguaje de programación se puede usar directamente para representar cualquier matriz bidimensional
  • Cuando un lenguaje de programación no es compatible con matrices multidimensionales, es bastante trivial construir una abstracción que represente una matriz multidimensional pero aplanar los datos en una matriz simple

Adicionalmente:

Muchos lenguajes de programación tendrán bibliotecas nativas o de terceros con soporte directo para matrices, incluida la multiplicación de matrices y otras operaciones de nivel superior. Dependiendo del idioma, para fines de rendimiento, la biblioteca puede o no representar matrices usando tipos de matriz.

Realmente depende de qué lenguaje de programación e incluso entonces podría haber múltiples implementaciones disponibles. Pero la pregunta no especificó un lenguaje, por lo que trataré de responder en general, pero con detalles para C ++, ya que es una especie de linqua franca de los lenguajes de computadora.

La mayoría de los idiomas, con la notable excepción de matlab, no admiten directamente un tipo de datos de matriz. En C / C ++ tenemos matrices y std :: vector . Con la matriz de construcción o el vector, puede usar uno de los 2 enfoques para implementar matrices cuadradas.

  1. Ya sea una matriz de matrices o un enfoque de vector de vector. Puede usar esto directamente o envolverlo en su propia clase de matriz.
  2. También puede usar almacenamiento lineal para la matriz. Esto significa asignar un vector o matriz de longitud fila * cols y luego anular el operador (int row, int col) de modo que la fila de la tupla, la columna se convierta en un índice lineal.

Para los tipos de matrices triangulares o dispersas, es posible que desee utilizar contenedores STL alternativos.

Triangular funciona bien con el almacenamiento lineal, simplemente ajusta su indexación para reflejar la porción simétrica de la matriz y guardar el almacenamiento.

Los tipos de matrices dispersas se pueden admitir con std :: map , T> si los elementos deben iterarse en orden (anular menos que el operador para imponer el orden de las columnas de la fila) o para un mejor uso del rendimiento de indexación std :: unordered_map , T>.

Las matrices son “secuencias de objetos homogéneos” identificadas por índices.

En el caso particular de que “objetos” son “números” y “secuencia” son bidimensionales (o “secuencia de secuencias”, en otras palabras, tienen dos índices), las matrices pueden proporcionar el soporte de infraestructura para las matrices.

La correspondencia termina aquí, ya que las matrices son, esencialmente, agregados de elementos con un método de acceso basado en la indexación, mientras que las matrices también son objetos algebraicos.

La parte que falta en la creación de matrices a partir de matrices suele ser un conjunto de funciones (eventualmente en forma de operadores) que definen cómo se deben sumar, restar, escalar, multiplicar, transponer, invertir …

Tenga en cuenta también que las matrices pueden proporcionar soporte para otras cosas, como “cadenas”, que pueden estar sujetas a otro tipo de álgebra, definiendo concatenación, selección, extracción, tokenización, etc.

O puede ser compatible con … funciones empíricas (definidas en términos de interpolación de valores mapeados conocidos), con diferentes reglas sobre multiplicación y división, etc.

Puede pensar en la matriz como una matriz multidimensional (generalmente bidimensional). Como una cuadrícula de números: uno va de izquierda a derecha y otro hacia abajo desde la parte superior.

Imagine la fila en la base de datos y algunos atributos como columnas.

Si desea, por ejemplo, pasar por toda la matriz, puede usar un bucle externo y uno interno para acceder a cierto número de matrices int.

entonces la matriz [i] [j] se referiría a la i-ésima fila y la j-ésima columna (o viceversa).

More Interesting

Cómo elegir la estructura de datos correcta

¿Por qué el algoritmo RSA no lleva el nombre de Ellis, Cocks y Williamson, dado que lo inventaron primero?

¿Le da un algoritmo no recursivo que realiza un trabajo de árbol de orden?

¿Crees que la programación no es para mí?

¿Qué significa si un futuro programador apesta u odia los algoritmos de aprendizaje y las estructuras de datos?

¿Dónde se puede encontrar una implementación de árbol de sufijos de la subcadena común más larga?

¿Cómo funcionan los algoritmos de procesamiento de cadenas en CUDA?

¿Cuál es el algoritmo más eficiente para encontrar el késimo elemento más pequeño en una matriz que tiene n elementos desordenados?

¿Qué es el algoritmo?

Cómo generar una clave privada en el algoritmo RSA

¿Cuáles son los ejemplos prácticos de algoritmos de clasificación? He oído hablar de la clasificación de burbujas, la clasificación rápida y la clasificación por inserción. ¿Cuáles son los ejemplos prácticos de estos algoritmos? ¿Para qué se usan y dónde son necesarios en los sistemas de software?

¿Cuál es el número más pequeño [matemática] N [/ matemática] tal que [matemática] N \ equiv 2 \ mod 3, [/ matemática] [matemática] N \ equiv 1 \ mod 5, [/ matemática] [matemática] N \ equiv 4 \ mod 7 [/ matemáticas]?

Cómo implementar la codificación y decodificación de Huffman usando una matriz y no un árbol

¿Qué algoritmo debo usar para la generación de código para mi AST?

¿Cuál es el mejor método de clasificación para usar si solo un elemento está fuera de servicio?