P2a La Nelson - Brijaldo Consulta
P2a La Nelson - Brijaldo Consulta
P2a La Nelson - Brijaldo Consulta
Algebra Lineal
Grupo P2A
Consulta
En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión
principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser
recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las
más fáciles de imaginar son las de una, dos y tres dimensiones.
Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice
de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se
va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que esta estructura puede
cambiar de tamaño fácilmente durante la ejecución de un programa, siendo esta última una
estructura dinámica (al no tener un tamaño definido).
Todo vector se compone de un determinado número de elementos, lo cual lo hace que sea una
estructura estática. Cada elemento es referenciado por la posición que ocupa dentro del vector.
Dichas posiciones son llamadas índice y siempre son correlativos. Existen tres formas de indexar los
elementos de una matriz:
Indexación base-cero (0): en este modo el primer elemento del vector será la componente
cero ('0') del mismo, es decir, tendrá el índice '0'. En consecuencia, si el vector tiene 'n'
componentes, el último elemento tendrá como índice el valor 'n-1'. El lenguaje C y el
lenguaje Java son un ejemplo típico que utiliza este modo de indexación.
Indexación base-uno (1): en esta forma de indexación, el primer elemento de la matriz tiene
el índice '1' y el último tiene el índice 'n' (para una matriz de 'n' componentes).
Indexación base-n (n): este es un modo versátil de indexación en la que el índice del primer
elemento puede ser elegido libremente, en algunos lenguajes de programación se permite
que los índices puedan ser negativos e incluso de cualquier tipo escalar (también cadenas
de caracteres).
La representación de un elemento en un vector se suele hacer mediante el identificador del vector
seguido del índice entre corchetes, paréntesis o llaves:
La forma de acceder a los elementos de la matriz es directa; esto significa que el elemento deseado
es obtenido a partir de su índice y no hay que ir buscándolo elemento por elemento (en
contraposición, en el caso de una lista, para llegar, por ejemplo, al tercer elemento hay que acceder
a los dos anteriores o almacenar un apuntador o puntero que permita acceder de manera rápida a
ese elemento).
Para trabajar con vectores muchas veces es preciso recorrerlos. Esto se realiza por medio de bucles.
La siguiente fuente escrita en el lenguaje C muestra un algoritmo típico para recorrer un vector
'{\displaystyle V}V' y aplicar una función '{\displaystyle f(...)}f(...)' a cada una de las componentes del
vector:
Lo habitual es que un vector tenga una cantidad fija de memoria asignada, aunque dependiendo del
tipo de vector y del lenguaje de programación un vector podría tener una cantidad variable de datos.
En este caso, se les denomina vectores dinámicos, en oposición, a los vectores con una cantidad fija
de memoria asignada se los denomina vectores estáticos.
El uso de vectores dinámicos requiere realizar una apropiada gestión de memoria dinámica. Un uso
incorrecto de los vectores dinámicos, o mejor dicho, una mala gestión de la memoria dinámica,
puede conducir a una fuga de memoria. Al utilizar vectores dinámicos siempre habrá que liberar la
memoria utilizada cuando ésta ya no se vaya a seguir utilizando.
Lenguajes más modernos y de más alto nivel, cuentan con un mecanismo denominado recolector
de basura (como es el caso de Java) que permiten que el programa decida si debe liberar el espacio
basándose en si se va a utilizar en el futuro o no un determinado objeto.
Ejemplos: