martes, 7 de marzo de 2017

07/MARZO/2017

ARREGLOS UNIDIMENSIONALES

Un arreglo unidimensional es un tipo de datos estructurado que está formado por una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Los datos que se guarden en los arreglos todos deben ser del mismo tipo.

El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria.

Los arreglos nos permiten hacer un conjunto de operaciones para manipular los datos guardados en ellos, estas operaciones son: ordenar, buscar, insertar, eliminar, modificar entre otras.

ARREGLOS MULTIDIMENSIONAL

En programación, un vector multidimensional es un vector que se indexa mediante una lista ordenada de enteros. El número de enteros que se utiliza en esta lista para indexar el vector multidimensional es siempre el mismo y se conoce como la dimensionalidad del vector. Por otra parte, los límites de cada uno de los enteros que forman parte del índice, determinan la dimensión del vector. A un vector con dimensionalidad k se le suele llamar k-dimensional. Los vectores 1-dimensional se corresponden con los vectores ordinarios en los que los elementos están dispuestos en una única fila (o columna); los vectores 2-dimensional son otra forma de llamar a las clásicas matrices en las que sus elementos están dispuestos en varias filas y columnas (dos dimensiones). En la práctica, la dimensionalidad de un vector raras veces excede de tres.

Representación en memoria[editar]

La forma de disponer los elementos de un vector 1-dimensional en la memoria de un ordenador es trivial, ya que ésta, en sí misma, tiene la forma de un vector 1-dimensional (muy grande). Cuando se quiere almacenar vectores n-dimensionales, sin embargo, el problema ya no es evidente. Supongamos que queremos representar esta simple matriz de dos dimensiones:
{\displaystyle \mathbf {A} ={\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix}}}
La forma más común de indexar esta matriz (o vector 2-dimensional) es utilizando la convención RC (del inglés Row-Column, fila-columna), en la que los elementos se referencian indicando primero la fila y luego la columna (ejemplo, {\displaystyle A_{row,col}\,}), de esta forma se tiene que:
{\displaystyle A_{1,1}=1,\ A_{1,2}=2,\ \ldots ,\ A_{3,2}=8,\ A_{3,3}=9\,}
La indexación de vectores multidimensionales se puede hacer de alguna de estas maneras:
·         Orden fila-principal: Los elementos de cada fila son almacenados en orden, primero una fila, luego otra, y así sucesivamente. Este método se utiliza sobre todo en los arrays estáticos declarados en C.
1
2
3
4
5
6
7
8
9
·         Orden columna-principal: Análogo al anterior pero esta vez almacenando los elementos por columnas en vez de por filas:
1
4
7
2
5
8
3
6
9
https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Array_of_array_storage.svg/200px-Array_of_array_storage.svg.png
Vector 2-dimensional almacenado en un vector 1-dimensional de vectores 1-dimensionales.
·         Vector de X dimensiones: Típicamente, los vectores multidimensionales se representan utilizando un vector 1-dimensional que contiene referencias (o punteros) a otros vectores 1-dimensionales. Estos subvectores pueden ser, indistintamente, las filas o las columnas de la matriz, todo depende del criterio o la interpretación que se quiera tomar.
Las dos primeras formas son más compactas y tienen potencialmente mejor localización de referencia, pero también son más limitadas; los vectores deben ser rectangulares, en el sentido de que ninguna fila puede contener más elementos otra. Los vectores de vectores, por otro lado, permiten la creación de vectores desiguales, también llamados vectores dentados, en la que el rango válido de un índice depende del valor de otro, o dicho con otras palabras, que las diferentes filas (o columnas) pueden ser de diferentes tamaños. Los vectores de vectores también son de utilidad en los lenguajes de programación que sólo permiten vectores 1-dimensionales como primitivas.
En muchas aplicaciones, como aplicaciones numéricas que trabajan con matrices, hay que iterar sobre vectores rectangulares 2-dimensionales de forma predecible. Por ejemplo, calcular un elemento de la matriz producto A x B implica iterar sobre una fila de A y una columna de B simultáneamente. Al indexar los elementos de la matriz según se encuentre está almacenada en memoria, se deben optimizar las operaciones de localización de cada elemento tanto como se pueda. A veces, un compilador puede determinar automáticamente el diseño de la serie secuencial de elementos de un vector para que se almacenen también secuencialmente en memoria, en nuestro ejemplo, podría elegir el orden de fila-principal para A, y el orden columna-principal para B. Existen más formas de almacenar los elementos de una matriz en memoria, que serán más eficientes para otro tipo de problemas, por ejemplo si se quiere iterar sobre la diagonal principal de una matriz

No hay comentarios:

Publicar un comentario