+ All Categories
Home > Documents > Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2...

Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2...

Date post: 02-Feb-2016
Category:
Upload: mercedes-escobar-perez
View: 217 times
Download: 1 times
Share this document with a friend
Popular Tags:
77
Fundamentos de vectores y matrices Vectores
Transcript
Page 1: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Fundamentos de vectores y matrices

Vectores

Page 2: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

2

¿Qué es un vector?

Un vector de datos es un conjunto de variables adyacentes de un tipo determinado.

Los vectores facilitan la administración de conjuntos de datos relacionados, ya que no se tienen que manipular individualmente.

Page 3: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

3

¿Cuál es la estructura básica de un vector?

Un vector se compone de variables o celdas consecutivas que pueden almacenar valores de un tipo específico. Cada celda puede almacenar un valor y a cada una se le asocia un entero conocido como “índice” que es la posición que ocupa dentro del vector. Todos los valores almacenados en el vector son del mismo tipo.

n -1n -20 1 2 3

...valornombrevector

nombre[3]celda específicaíndices índices

valor valor valor valor valor

Page 4: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

4

¿Cómo se declaran e inicializan los vectores?

Al igual que una variable simple un vector debe declararse primero y luego inicializarse.

Posteriormente se pueden guardar y recuperar valores en celdas independientes accediendo a ellas mediante el índice correspondiente.

También se puede “recorrer” el vector incrementando o decrementando el valor de una variable entera utilizada como índice.

Page 5: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

5

¿ Cómo se codifica un vector en Java?

La declaración de un vector se puede hacer de la siguiente manera:

tipo v []; // se declara v que es una referencia a un vectorv = new tipo [cantidadDeCeldas]; // se inicializa el vector

También se puede realizar con una sola instrucción:

tipo v [] = new tipo [cantidadDeCeldas];

El tamaño de un vector puede ser un valor literal o una variable entera:– int c[] = new int [variable];– int c[] = new int [5];

Page 6: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

6

¿Cómo se inicializan los vectores en Java?

Un vector puede ser declarado e inicializado en la misma instrucción:int c[] = {20, 45, 32, 5, 1};

Luego de inicializar el vector, su tamaño queda almacenado dentro del vector en una variable pública llamada length. Ejemplo:

Si c = new int [5]; entonces c.length vale 5.

Page 7: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

7

¿Cómo se pueden guardar y recuperar valores en celdas de un vector?

Para asignar un valor x a la posición i del vector indicando el índice de la celda deseada. Ejemplo: v[i] = x;

Para asignar a x el valor almacenado en la posición i del vector se hace lo mismo. Ejemplo:x = v[i]; //Denominado como “campo v sub i”.

// i se conoce como índice.

Page 8: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

8

¿Cómo se puede recorrer un vector?

Un vector puede ser fácilmente recorrido por medio de un ciclo for.

Se entiende por recorrido a una secuencia de accesos consecutivos a las celdas del vector.

El recorrido se logra variando el valor del índice de acceso a las celdas del vector.

Page 9: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 1 – Declaración, inicialización y recorrido de vectores

Ir al ejemplo

Page 10: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 1 – Declaración, inicialización y recorrido de vectores

Ir al ejercicio

Page 11: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

11

¿Qué sucede en la memoria al utilizar un vector de enteros en Java?

int vector []; // El vector es una referencia a un vectorvector = new int[5]; // Se crea el vector de 5 celdas (0-4)int i = 3; // i se usará para indicar el índicevector[i] = 8; // Se asigna a la celda 3 el valor 8

vector

referencia al vector

índice

i 3

vector[ i ] Se modifica a la celda vector[ 3 ]

3

?

0 1 2

? ? ?

4

8?

Page 12: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

12

0 1 2 3

2 4 3 51vector

índice

4

i

acumulador

suma

vector[ i ]

Ejemplo de recorrido sobre un vector de enteros en Java

00 12342691015 5

Page 13: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

13

¿Qué sucede si se trata de acceder al valor de una posición inexistente?

0 1 2 3

2 4 3 51vector

índice

4

i

vector[ i ]

5

¡Error!

Page 14: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

14

¿Qué sucede si se trata de acceder al valor de una posición inexistente? (continuación)

Si se trata de acceder a una posición no existente se producirá una excepción con el mensaje: ArrayIndexOutOfBoundsException

Significa que se está tratando de acceder a algo que está fuera de los límites establecidos para el vector.

Para que un programa no se caiga debido a esto es conveniente utilizar manejo de excepciones (try { } catch(){ }).

Page 15: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

15

¿Cómo pasar un vector como parámetro en un método utilizando Java ?

El nombre de un vector es una referencia que contiene la dirección inicial donde se ubican los datos asociados al mismo.

Los cambios efectuados a un vector dentro de un método que lo recibe como parámetro se mantienen aún después de finalizado el método.

Al pasar un vector como parámetro a un método solo se copia la dirección del vector hacia la referencia que existen dentro del método (no se genera una copia de los datos almacenados en las celdas del vector). A partir de este punto tanto la referencia utilizada para ejecutar el llamado (externa al método) y el parámetro que recibe la referencia, “apuntan” al inicio del mismo grupo de datos en memoria.

Page 16: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 2 – Demostración del pase de vectores como parámetro

Ir al ejemplo

Page 17: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 2 – Utilización de pase de vectores como parámetro

Ir al ejercicio

Page 18: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

18

Visualización del pase de un vector como parámetro utilizando Java

0 1 2 3

4 5 7 1512

4 5 6 7 8

22 24 30 9551

9

vectordatos

sumarUnoATodos(datos)

Pila

Note que al invocar un método se pasa el valor de “datos” (que está en el montículo o Heap) hacia “vector” (que está en la PILA) y “no se copian” los valores del vector hacia la pila.

Page 19: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

19

Visualización del pase de un vector como parámetro utilizando Java (continuación)

Después de la invocación al método, la referencia “vector” es eliminada de la pila al terminar el método, pero el vector “datos” quedó modificado.

0 1 2 3

5 6 8 1413

4 5 6 7 8

21 25 31 9652

9

vectordatos

sumarUnoATodos(datos)

Pila

Page 20: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

20

¿Cómo crear un vector de objetos en Java?

Cada celda de un vector es equivalente a una variable por lo que se puede declarar un vector de referencias a objetos.

En Java las referencias a objetos van a ser automáticamente inicializadas a null al crear el vector.

Posteriormente hay que crear cada objeto independientemente y asignarlo a la celda deseada.

Page 21: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

21

Visualización de un vector de objetos en Java

null

0

1

2

3

1y

1x

0y

0x

2y

2x

puntos

Page 22: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 3 – Demostración del uso de vectores y objetos

Ir al ejemplo

Page 23: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 3 – Utilización de vectores y objetos

Ir al ejercicio

Page 24: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

24

¿Para qué sirven los vectores en el ciclo de resolución de problemas?

Los vectores son de las estructuras más importantes en la mayoría de los lenguajes.

Normalmente sirven para almacenar, procesar, buscar y recuperar valores específicos dentro de un grupo de datos.

Page 25: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

25

¿Cuáles son los principales usos que se le dan a los vectores?

Entre los usos comunes que se les pueden dar son: Calcular valores nuevos a partir de secuencias de

valores leídos sin perder el detalle de los mismos. Para ordenar una serie de valores entre sí. Para buscar si un valor específico pertenece a un

grupo de valores previamente almacenados. Para indexar información. Para asociar valores entre sí. Para clasificar información.

Page 26: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

26

¿Cuáles son los cálculos más comunes usando vectores?

Calcular la suma de los valores almacenados.

Calcular el promedio. Encontrar el mayor valor dentro del vector. Encontrar el menor valor dentro del vector.

Page 27: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

27

¿Cómo calcular la suma?

El ejemplo del recorrido visto previamente muestra como, mediante el uso de una variable acumuladora, se puede ir sumando cada elemento del vector para finalmente acceder al valor acumulado.

Este tipo de procedimiento es típico y puede utilizarse para diferentes cálculos incluyendo el del promedio de un grupo de valores.

Page 28: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

28

¿Cómo se calcula el promedio de los valores de un vector?

Para calcular un promedio simplemente bastaría con acumular la suma y dividir entre el total de elementos que fueron sumados.

Si el promedio incluye a todos los elementos del vector basta con dividir entre el tamaño del mismo.

En caso contrario hace falta disponer de un contador para incrementarlo en uno cada vez que se suma un valor a la suma total y al final dividir entre dicho valor.

En caso típico es promediar solamente los valores mayores que cero dentro de un vector o que cumplen con algún criterio de selección específico.

Page 29: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

29

¿Cómo se pueden encontrar el máximo y el mínimo en un vector?

Otro ejemplo típico de recorrido en vectores incluye el encontrar la posición del elemento mayor o menor.

Normalmente se puede asumir que el valor más alto o más bajo se encuentra en la primera posición del vector, a partir de ahí se puede llevar a cabo un recorrido buscando otro elemento que sea más pequeño que el menor o más grande que el mayor.

Un error común es definir una variable para guardar el valor del menor o el mayor inicializando en 0 la misma. Por ejemplo: Si todos los números son negativos { -12, -6, -10} va a salir que el mayor es 0 aunque el mayor es -6. Aunque son cálculos simples siempre hay que tener cuidado con esto.

Page 30: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 4 – Demostración de cálculos básicos utilizando vectores

Ir al ejemplo

Page 31: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 4 – Aplicación de cálculos básicos utilizando vectores

Ir al ejercicio

Page 32: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

32

¿Cuáles son los algoritmos más comunes para ordenar los elementos de un vector?

Los algoritmos de ordenamiento son de los más estudiados en el campo de la computación.

Los algoritmos más comunes y simples de ordenamiento son: burbuja y selección.

Existen otros más eficientes y complejos tales como el ordenamiento rápido o “quicksort” cuyo estudio se lleva a cabo en cursos de Estructuras de Datos y Análisis de Algoritmos.

Page 33: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

33

¿En qué consiste el algoritmo de Burbuja?

El algoritmo de burbuja se basa en llevar a cabo recorridos por el vector comparando el elemento de cada celda con el de la siguiente celda.

En cada momento se intercambian los elementos o se dejan tal y como están para asegurar que el valor más alto encontrado “suba” o se desplace hacia la derecha.

El efecto de esto es lograr que el valor más alto o bajo (dependiendo de la forma en que se programe) “suba” hasta la última posición del vector a modo de “burbuja”.

Si este proceso se repite tantas veces como elementos tiene el vector, todos los elementos subieron hasta la posición más alta que podían encontrar, asegurando que que el vector ha quedado ordenado.

Page 34: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

34

0 1 2 3 4

Visualización de la ejecución del algoritmo de Burbuja

0

recorrido

3 2 5 410

vector

i

i fin

3 > 2, así que debe haber intercambio

fin = vector.length() – (recorrido + 1)

321

i+1

0213

10 > 4, así que debe haber intercambio

5 > 4, así que debe haber intercambio

El mayor está ubicado donde corresponde

El 2° mayor está ubicado donde corresponde

Fin del algoritmo. El vector está ordenado.

Page 35: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 5 – Ordenamiento de vectores con el algoritmo de Burbuja

Ir al ejemplo

Page 36: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 5 - Ordenamiento de vectores con el algoritmo de

Selección

Ir al ejercicio

Page 37: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

37

¿Cuales son los algoritmos de búsqueda más comunes en vectores?

Dependiendo del hecho de que un vector esté ordenado o no, así se puede utilizar alguno de los siguientes tipos de búsqueda:

Búsqueda secuencial: consiste en llevar a cabo un recorrido a lo largo de todos los elementos del vector. Esto hay que hacerlo si los elementos del vector no están ordenados.

Búsqueda binaria: consiste en descartar con cada comparación la mitad de los elementos restantes en el vector. Aplica solo si el vector está ordenado y puede reducir el tiempo de búsqueda llevando a cabo solo unas cuantas comparaciones.

Page 38: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 6 - Búsqueda secuencial de la posición de un elemento en un

vector

Ir al ejercicio

Page 39: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

39

¿Cómo se puede buscar dentro de un vector ordenado con búsqueda binaria?

La búsqueda binaria consiste en ubicar la posición de un elemento ubicado dentro de un rango de elementos.

El rango se define mediante la posición del elemento inicial y la posición del elemento final.

La idea central detrás del algoritmo de búsqueda binaria es que con una sola comparación se logre reducir a la mitad el rango de búsqueda dentro del vector. Se elimina la mitad del rango donde se sabe que el elemento no está.

Page 40: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

40

¿Cómo se puede buscar dentro de un vector ordenado con búsqueda binaria? (cont.)

Lo anterior se logra al comparar siempre el valor buscado con el que se encuentra en la posición ubicada en la mitad del camino entre la primera y última posición del rango de valores dentro de los que se está buscando.

– Si el valor es igual al encontrado se devuelve esa posición.– Si es menor se busca en el nuevo rango definido desde el inicio

hasta la mitad – 1. Si el valor es mayor se busca en el rango comprendido entre la mitad + 1 y el final.

– Si el inicio y el final llegan al mismo punto sin encontrar el elemento se devuelve una posición inválida indicando que el elemento no se encuentra en el vector.

Note que el proceso es naturalmente recursivo.

Page 41: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

41

Visualización de la búsqueda binaria en un vector. Búsqueda del valor 51.

0 1 2 3

4 5 7 1512

4 5 6 7 8

22 24 30 9551

9

vector

inicio medio fin

inicio medio fin

04 9466 787medio = (9 + 0) / 2 = 4medio = (9 + 4) / 2 = 6medio = (9 + 6) / 2 = 7medio = (9 + 7) / 2 = 8

15 < 51Se mueve “inicio”24 < 51Se mueve “inicio”30 < 51Se mueve “inicio”51 = 51Valor encontrado

Page 42: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

42

Visualización de la búsqueda binaria en un vector. Búsqueda del valor 48.

0 1 2 3

4 5 7 1512

4 5 6 7 8

22 24 30 9551

9

vector

inicio medio fin

inicio medio fin

987medio = (9 + 7) / 2 = 8

inicio = fin - 1Valor no encontrado

8

Se siguen los mismos pasos que para el caso anterior hasta este punto

51 > 48Se mueve “fin”

Page 43: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 6 – Búsqueda binaria de la posición de un elemento en un vector

Ir al ejemplo

Page 44: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

44

¿Cómo se pueden asociar, indexar y clasificar datos con vectores?

Además de permitir almacenar múltiples datos a la vez, la capacidad de utilizar índices para ubicar o “desreferenciar” el valor de una celda específica le da una versatilidad importante y muy útil a los vectores.

Métodos como utilizar un mismo índice para acceder a varios vectores a la vez, o utilizar el valor de un vector como índice en otro vector (uso de índices de forma anidada o indirecta) permiten codificar de forma inmediata operaciones comunes en las aplicaciones modernas.

Page 45: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

45

¿Cómo se pueden asociar valores entre sí mediante el uso de vectores?

Existen varias formas de asociar vectores, la más común es asumiendo que cada celda en una posición dada de un vector tiene relación con los valores de las celdas de otros vectores que se ubican en una posición con el mismo valor .

Esto permite recorrer varios vectores en un solo ciclo relacionando los valores de las celdas con posiciones comunes entre sí.

Page 46: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

46

Visualización de la relación entre celdas de vectores diferentes usando índices

1

2

3

4

One

Two

Three

Four

Uno

Dos

Tres

Cuatro

Un

Deux

Trois

Quatre0

1

2

3

0

1

2

3 0

1

2

3

0

1

2

3

2

22

2

Page 47: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 7 – Demostración de asociación de datos con vectores

Ir al ejemplo

Page 48: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

48

¿Cómo se puede indexar información mediante el uso de vectores?

Cuando se tiene una estructura o vector con datos pertenecientes a objetos compuestos cuya información no se quiere duplicar, se pueden crear otros vectores que contengan las posiciones o “índices” del vector de datos.

Cada vector con índices tendrá el orden en que se desean “recorrer” los datos del vector principal .

Si se quieren los datos en el orden especificado en un vector de indexación se recorre tomando los valores de cada celda y se utiliza cada uno como el índice para ubicar posiciones en el vector que contiene los datos.

La siguiente figura muestra el uso de tres índices de ordenamiento diferentes para un mismo vector de objetos.

Page 49: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

49

Visualización del uso de tres vectores como “índices”

0 Melvin 78Kg $100

1 Lucia 56Kg $200

2 Juan 87Kg $150

3 Nuria 60Kg $224

3

1

2

0

2

1

0

3

2

0

3

1

alfabético

deudas

kilos

Cada instancia en el vector contiene

nombre, peso e información de deudas

personas

Page 50: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 8 – Demostración de indexación de datos con vectores

Ir al ejemplo

Page 51: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

51

¿Cómo se puede clasificar información utilizando vectores?

Otro caso típico es tener un vector que se asocia mediante el índice a un vector y su contenido se utiliza como índice de un tercer vector.

La combinaciones que se den van a depender del problema que se quiere resolver y de la forma en que se visualice la información que se quiere representar.

Page 52: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

52

Visualización del uso de vectores para clasificar información

Nombre Apellido Salario Casado Hijos

Juan Pérez 200000 Si 8

Mario Vargas 100000 No 0

Rebeca Chaves 500000 No 1

Melvin Luna 600000 No 6

Graciela Sancho 450000 Si 0

Jorge Arias 60000 Si 2

0

1

2

3

4

5

0

1

2

3

4

5

solicitudesDeCredito

0

2

1

2

1

0

seAcepta

0

1

2

No

Si

Condicionado

codigos

Page 53: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 9 – Demostración de clasificación de datos con vectores

Ir al ejemplo

Page 54: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 7 – Utilización de vectores para resolución de problemas

Ir al ejercicio

Page 55: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Fundamentos de vectores y matrices

Matrices

Page 56: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

56

¿Qué es una Matriz?

Una matriz es típicamente una estructura bi-dimensional compuesta de celdas.

Cada celda es identificada por las coordenadas asociadas a cada una de las dos dimensiones que la componen.

La matriz puede ser vista como una tabla compuesta por filas y columnas.

Page 57: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

57

¿Cómo se puede representar gráficamente una matriz?

0 1 2 3 4

0 1 8 7 15 161 6 2 14 17 52 9 10 3 18 103 12 11 13 4 20

5 columnas

4 filas

Page 58: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

58

¿Cómo se implementa una matriz en Java?

En java una matriz se implementa mediante un vector de vectores.

Se puede declarar e inicializar primero un vector de filas, y luego declarar e inicializar cada una de las filas individualmente.

Page 59: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

59

Visualización en memoria de una matriz en Java

nombre[0]fila

.

.

.

n -1

0

1 m0 -10 1 2 3

...

0 1 2 3

...

0 1 2 3

...

m1 -1

mn-1 -1

nombre[0][3]celda

nombre

referencia referencia a la matriz,a la matriz,que es un que es un vector de vector de

referencias referencias a vectoresa vectores

Page 60: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

60

¿Cómo se puede tener acceso a las celdas de una matriz?

Para tener acceso a las celdas de una matriz se debe “desreferenciar” la celda deseada indicando los índices o coordenadas de la misma dentro de la matriz.

Aunque los índices no corresponde a filas o columnas es “útil” tener consistencia en la interpretación que se le da a cada coordenada. Por ejemplo asumir que la primera coordenada siempre representa filas y la segunda las columnas.

En la mayoría de los lenguajes se utilizan paréntesis cuadrados para indicar las coordenadas.

Page 61: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

61

¿Cómo se puede tener acceso a las celdas de una matriz en Java?

0 1 2 3 4

1 5 6 7 8

2 9 10 11 12

3 13 88 15 16

0 1 2 3

• La celda matriz[2][3] tiene el valor 12.

Nota: Lo anterior si se interpreta que la primera coordenada corresponde a las filas y la segunda a las columnas. Por comodidad se utilizará esta convención de aquí en adelante.

• La instrucción matriz[3][1]=88;

asigna un 88 a la celda de la fila 3 columna 1.

• Mediante la manipulación de los índices se puede llevar a cabo cualquier “recorrido” sobre las celdas de una matriz.

Page 62: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

62

¿Qué se entiende por “recorrido” de matrices?

Dependiendo del problema se puede requerir llevar a cabo secuencias de acceso a las celdas en forma consecutiva.

Por ejemplo: – sumar todos los valores de una fila específica, o de una columna.– imprimir los valores de las celdas que se encuentran alrededor de

una celda específica. A estas secuencias de accesos consecutivos se les llama

“recorridos”. Para recorrer eficientemente una matriz es conveniente

comprender como variar los índices para manipular el orden en que se visitan las celdas.

Page 63: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

63

Visualización de un recorrido en una matriz

En esta matriz de 2 filas y 3 columnas se visitan las celdas en el orden siguiente:(0,0) (0,1) (0,2) (1,0) (1,1) (1,2)(2,0) (2,1) (2,2)

Por lo que se imprime la salida:5 12 102 8 4514 21 37

5 12 10

2 8 45

14 21 37

Page 64: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 10 – Declaración, inicialización y recorrido de matrices

Ir al ejemplo

Page 65: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 8 – Declaración, inicialización y recorrido de matrices

Ir al ejercicio

Page 66: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

66

¿Cómo se puede recorrer la matriz en una dirección específica?

Para calcular la posición de una celda con respecto a otra con el fin de “recorrer” la matriz en una dirección específica basta con obtener “nuevas” coordenadas.

Las “nuevas coordenadas” se obtienen a partir de las “originales” dependiendo de la dirección deseada.

Se debe modificar cada índice de fila y columna ya sea sumando 1, restando 1 o dejando el valor igual.

Page 67: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

67

Visualización del recorrido de celdas en una dirección específica

Desplazarse ascendentemente en diagonal se logra decrementando la coordenada de la fila e incrementando la columna en cada iteración.

0 1 2 3 4

1 5 6 7 8

2 9 10 11 12

3 13 14 15 16

0 1 2 3

Si la columna se incrementa

Si la fila se decrementa

Page 68: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

68

¿Cómo se pueden recorrer las celdas vecinas de una celda en una matriz?

Una forma de desplazarse alrededor de una celda con coordenadas (fActual,cActual) de manera automática es obteniendo todas las posibles combinaciones de -1, 0 y 1 para obtener las coordenadas de las celdas restringidas a las filas y columnas anteriore y siguiente con respecto a la actual.

En otras palabras solo las celdas con valores entre fActual-1 y fActual+1 y entre cActual-1 y cActual+1 se deben tomar en cuenta. Sin embargo así no se puede controlar el orden de visita, sinó que solo se puede asegurar que todas las celdas vecinas son visitadas.

Page 69: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

69

Visualización del recorrido de las celdas vecinas

Las celdas alrededor de la celda actual (1 , 2) son aquellas con valores entre las columnas 0 y 2 y las filas 1 y 3. Los valores del rango se obtienen sumando y restando 1 a la fila y columna actual.

3

4

2

1

0

0

21

16

11

6

1

20191817

25242322

4321

5432

13

8

14

9 107

1512

Page 70: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

70

¿Cómo se puede generalizar el movimiento hacia una dirección dada?

El cálculo de las nuevas coordenadas al moverse en una dirección dada siempre se puede llevar a cabo con una simple suma.

Para subir, a la fila se le suma -1, para bajar se le suma 1

Para ir a la izquierda, a la columna se le suma -1, para ir a la derecha se le suma 1

El siguiente diagrama muestra los valores que hay que sumar a las coordenadas actuales para desplazarse en la dirección indicada.

Page 71: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

71

Visualización de valores necesarios para desplazarse en una dirección dada

0

1 2 31

4 5 62

7 8 90 1 2

columna actual

fila actual

+ 1 -1

-1

+ 1

( 1,1 )( 1, 0)

(1 , -1)

( 0, -1) (0 , 1)

(-1, 1)( -1, 0)(-1, -1)

Page 72: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

72

¿Cómo utilizar vectores para controlar un recorrido?

Una posible forma de generalizar el concepto de dirección es almacenando los valores de desplazamiento en vectores de dos vectores utilizados para el cálculo de índices. Uno para filas y otro para columnas.

El índice de cada uno de los dos vectores representa la dirección deseada y el contenido de cada celda es el valor que hay que sumarle a la posición actual para moverse en la dirección asociada al indice.

De esta forma se puede controlar el orden de visita a las celdas y pueden visitarse una misma celda varias veces en un recorrido.

Page 73: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

Autor: Edgar Casasola M. Diseño: Jorge Villalobos S.

73

Visualización de un recorrido controlado con vectores

0 1 1 10-1-1-1

1 -1 0 1-110-1

(1,1)(1,0)(1,-1)

(0,0)

(-1,0)

(0,1)

(-1,1)(-1,-1)

(0,-1)

4 5 6 73210

BAJAR BAJAR IZQUIERDA

IZQUIERDA SUBIR IZQUIERDA

BAJAR

DERECHADERECHASUBIR

DERECHASUBIR

sF = Sumar a fila

sC = Sumar a columna

índices

direcciones

SUBIR

DERECHA

Page 74: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 11 – Demostración de técnicas para el control de recorridos

específicos en matrices

Ir al ejemplo

Page 75: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 9 – Utilización de técnicas para el control de recorridos

específicos en matrices

Ir al ejercicio

Page 76: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJEMPLO 12 – Demostración del uso de matrices para resolución de

problemas

Ir al ejemplo

Page 77: Fundamentos de vectores y matrices Vectores. Autor: Edgar Casasola M. Diseño: Jorge Villalobos S. 2 ¿Qué es un vector? Un vector de datos es un conjunto.

EJERCICIO 10 – Utilización de matrices para resolución de

problemas

Ir al ejercicio


Recommended