Title: Arreglos IV: Arreglos multidimensionales
1Arreglos (IV)Arreglos multidimensionales
- Clase 15
- Introducción a la Programación
- Marcos Sepúlveda(marcos_at_ing.puc.cl)
2Resumen de la clase anterior
- Hemos visto como operar con arreglos
unidimensionales (vectores) y bidimensionales
(matrices). - Hemos llevado a cabo varios ejemplos.
3Modelo de Control
- Cómo medir el logro?
- Esfuerzo
- Cuánto hice?
- Trabajo Efectivo (Throughput)
- Qué logré?
- Trascendencia
- Para qué lo hice?
4Ejemplo Invitando a salir a una niña
- En este ejemplo se emplearán vectores y matrices
para implementar una solución basada en el modelo
de control para un problema cotidiano
seleccionar una niña para invitarla a salir. - Los criterios que se considerarán para llevar a
cabo la selección son - Atracción física
- Compatibilidad en gustos
- Cercanía del lugar donde vive
5Ejemplo Invitando a salir a una niña
- Se tendrán en cuenta tan sólo algunos gustos (5),
y que se tienen o no se tienen de manera absoluta
(no existen los más o menos). - Deportes
- Cine
- Música
- Viajes
- Poesía
6Ejemplo Invitando a salir a una niña
- Representaremos los gustos con valores binarios
de tipo int. Un valor 1 indica que le agrada, y
un valor 0 indica que no le gusta. Así,
representamos al usuario del programa con un
vector de 5 posiciones de tipo int, para
almacenar el valor de cada uno de los 5 gustos. - De igual manera se almacena la información
relativa a cada una de las niñas que se
considerarán. - Por ejemplo, si al usuario le agradan los
deportes pero no el cine, le gusta escuchar
música y viajar, pero detesta la poesía, será
representado por
7Ejemplo Invitando a salir a una niña
- Considerando el criterio de distancia que se debe
recorrer hasta su casa, se agruparán las
candidatas en las siguientes categorías - Vive en mi barrio
- Vive en mi comuna, pero fuera de mi barrio
- Vive en mi ciudad, pero fuera de mi comuna
- Vive en mi región, pero fuera de mi ciudad
- Vive en Chile, pero fuera de mi región
8Ejemplo Invitando a salir a una niña
- El grado de atracción física brindará un criterio
para ordenar las niñas dentro de cada una de las
categorías dadas anteriormente. Además,
consideraremos únicamente 3 niñas en cada uno de
los grupos anteriores. Así, las candidatas que
pertenecen a un mismo grupo zonal, se verán como
una matriz de enteros
9Ejemplo Invitando a salir a una niña
- Finalmente, si tenemos una matriz como la
anterior para cada grupo dentro de la
clasificación por distancia, la totalidad de las
candidatas formará una estructura tridimensional
(cubo), en donde cada una de las dimensiones,
respetando el orden dado a continuación, se
interpretará como - Cercanía
- Menor índice indica mayor cercanía
- Ranking de atracción física dentro de su zona
- Menor índice indica mayor ranking
- Gusto
10Ejemplo Invitando a salir a una niña
11Ejemplo Invitando a salir a una niña
- El vector correspondiente a cada niña se
identifica con los subíndices del grupo zonal (z)
y ubicación en el ranking (r) de esa zona - zr
- El valor para un determinado gusto (g) de una
niña ubicada en el ranking (r) del grupo zonal
(z), define un valor entero de la matriz, de la
siguiente manera - zrg
- Si el valor en la posición 213 de la matriz
es 0, quiere decir que en el grupo de las niñas
que viven en mi ciudad pero fuera de mi comuna
(z2), la que está ubicada en segundo lugar en el
ranking de atracción física (r1), no le gusta
viajar (g3).
12Ejemplo Invitando a salir a una niña
- Dentro de nuestro programa, definiremos las
siguientes constantes y estructuras de datos - define NUM_NINAS_X_ZONA 3
- define NUM_GUSTOS 5
- define NUM_ZONAS 5
- / Vector donde se representan los gustos del
usuario / - int usuarioNUM_GUSTOS
- / Matriz donde se representan las ninas con sus
gustos, - separadas por zonas y ordenadas en cada zona
segun el - criterio de atraccion fisica (menor indice es
mejor) / - int ninasNUM_ZONASNUM_NINAS_X_ZONANUM_GUSTOS
13Ejemplo Invitando a salir a una niña
14Ejemplo Invitando a salir a una niña
- Modelo de Control y Redefinición de Objetivos
- Un aspecto fundamental al aplicar el modelo de
control es definir la forma en que se
replantearán los objetivos cuando no se logre una
solución con la configuración actual. - En nuestro caso, el objetivo inicial consistirá
en conseguir una niña que comparta todos los
gustos del usuario, que viva en su mismo barrio y
que sea la de mayor ranking de atracción física
en esa zona. - En caso de no conseguir este objetivo, se dará
preferencia a la compatibilidad, es decir, éste
será el último criterio en relajarse. En primera
instancia se relajará el ranking de atracción
física y luego la zona.
15Ejemplo Invitando a salir a una niña
- Se recomienda, a modo de ejercicio, modificar el
programa para variar la forma en que se cambian
los objetivos, es decir, el orden en que se
relajan las exigencias. Por ejemplo, podría
implementarse una solución en la que lo más
importante sea la cercanía, seguido de atracción
física y finalmente compatibilidad.
16Ejemplo Invitando a salir a una niña
- Ejemplo de ejecución
- Usuario ( 1 1 1 0 0 )
- Ninas
- Zona 0
- Nina0 ( 0 1 0 1 1 )
- Nina1 ( 1 0 0 1 0 )
- Nina2 ( 0 1 1 1 0 )
- Zona 1
- Nina0 ( 0 1 1 0 0 )
- Nina1 ( 0 0 1 1 1 )
- Nina2 ( 0 1 1 0 1 )
- Zona 2
- Nina0 ( 0 0 0 1 0 )
- Nina1 ( 0 1 0 0 0 )
- Nina2 ( 1 1 0 0 1 )
- Zona 3
- Nina0 ( 1 1 1 1 1 )