Aprende programación






30 ago 2010

¿Hay diferencia entre vector y matriz?


Una pregunta muy sencilla ... prácticamente de 1º de ... no de ingeniería ... de formación básica. Al menos a mi siempre me han enseñado que el vector son colecciones de elementos de 1 dimensión y matrices las de 2 dimensiones que son las más utilizadas en el tema de juegos de tablero. Más de dos, las suelo llamar vectores de 3,4...N dimensiones, pero no recuerdo como me lo enseñaron.

El caso es que preparando una documentación he consultado en la wiki y he encontrado esto:
http://es.wikipedia.org/wiki/Vector_%28inform%C3%A1tica%29
En programación, una matriz o vector (llamados en inglés arrays) es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). 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 los de una, dos y tres dimensiones.

Toma ya! Según esta definición dá igual como se llame. Cuando nos referimos a matrices también estamos hablando de 1 dimensión. Estonces, mientras una gota fria bajaba en mi frente, pensaba ¿Habré estado equivocado durante estos 15 años?

El caso es que he buscado más información para comprobar si era yo el único que veia algo raro en esto o no y, menos mal, he encontrado gente como yo:
http://www.foroz.org/foroz/topic5540.html
http://www.forosdelweb.com/f13/diferencia-entre-vector-matriz-420381/
http://www.mailxmail.com/curso-aprende-programar/estructuras-datos-arreglos
http://elvex.ugr.es/decsai/c/apuntes/vectores.pdf

Pero también encontré lo contrario:
http://html.rincondelvago.com/arreglos.html

Veamos lo que dice la RAE:
Vector: No hay ninguna definición que encaje con colecciones de datos o algebra. ... ¿Agente que transporta algo de un lugar a otro? ... Un poco rebuscada ¿no?. Con esa definición una variable también podría ser un vector.
Matriz: Conjunto de números o símbolos algebraicos colocados en líneas horizontales y verticales y dispuestos en forma de rectángulo.

Y mi pregunta es ... ¿llamais vosotros a los arrays de 1 dimensión matrices? ¿Y como llamais a los de dos y tres dimensiones?

Un saludo para los que los llamaron "arreglos" y no se liaron con diferentes términos :P

7 comentarios:

  1. Pero vamos a ver Jorge, tron, esto en física/matemáticas es un clásico. Tu lo llamas siempre a todo matriz y ya esta. Y luego los vectores dices que son matrices de 1 fila y N columnas y a correr.

    Por poder, puedes hasta decir que los tipos básicos son matrices. Por ejemplo, podemos declarar que un Integer es una matriz de 1x1 y santas pascuas.

    Que maravillosa es la generalización. :-P

    ResponderEliminar
  2. A mi me enseñaron en la universidad que vector es de una dimensión y que matrices es a partir de dos. Con el tiempo me di cuenta que matrices se refiere a conjunto de elementos a partir de 1 dimensión para delante. Pero es un tema que se discute bastante en la red. XD

    ResponderEliminar
  3. Gracias por las respuestas ...

    En conclusión, somos unos calzonazos de los matemáticos.

    No es lo mismo:
    caso 1:
    int a[]={1,2,3,4};
    caso 2:
    int a[][]={{1,2,3,4}};

    En algebra todo se trata como si fuese una matriz y se utilizan operaciones de matrices AxB.
    En física se denomina vector a un conjunto de fuerzas que precisamente se ponen en forma de matriz para poder operar con estas.
    Pero en programación además de los valores también existen los tipos y no es lo mismo la función multiplicar(int[][],int[][]) que multiplicar(int[],int[][]).

    Bueno, habrá que conformarse con lo que hay. No podemos cambiar el mundo. :P

    ResponderEliminar
  4. mmmm.... Creo que existe una diferencia adicional que no estas tomando en cuenta.
    Generalmente las matrices tienen un número de columnas y filas definidos, es decir, ecuentras 3X2, 4X8 , etc. Pero cuando hablas de arreglos multidimensionales esto no se cumple, puedes definir algo como una estructura de 3 filas, pero la primera tiene 3 columnas, la segunda 2 columnas y la tercera 5 columnas. La diferencia principal es que ya conoces el número de filas y columnas de una matriz.

    ResponderEliminar
  5. Reos, muy buena aportación la tuya!. Totalmente cierto! En el caso de java, no siempre todas las filas tienen las mismas columnas por lo que tampoco se parecería a lo que se utiliza en Algebra donde siempre tienen las mismas filas y columnas.

    ResponderEliminar
  6. la matriz esta compuesta por los numeros reales y se define como arreglos y los vectores son conjunto de matrices compuestos; estos por filas y columnas

    ResponderEliminar
  7. Para que esto sea cierto, me refiero a los conceptos que estamos discutiendo, vayamos a algo fundamental:
    Similitudes

    -los dos almacenan

    Diferencias

    -el array es estático y el vector es dinámico quiere decir a la hora de declarar el array tenés que darle un valor.
    -el array solo almacena un tipo de dato y el vector puede almacenar varios tipos de datos
    -el array no tiene metodos ni clases
    -al declarar el vector no se le tiene que dar un valor
    -el vector tiene metodos
    -el vector es más pesado por que contiene metodos, clases...
    -cada vez que ingresas un valor en el vector tenés que darle un id.

    Espero que les haya servido....

    ResponderEliminar