La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Arreglos (IV): Arreglos multidimensionales Clase #15 Introducción a la Programación Marcos

Presentaciones similares


Presentación del tema: "Arreglos (IV): Arreglos multidimensionales Clase #15 Introducción a la Programación Marcos"— Transcripción de la presentación:

1 Arreglos (IV): Arreglos multidimensionales Clase #15 Introducción a la Programación Marcos

2 2 Resumen de la clase anterior Hemos visto como operar con arreglos unidimensionales (vectores) y bidimensionales (matrices). Hemos llevado a cabo varios ejemplos.

3 3 Modelo de Control ¿Cómo medir el logro? Esfuerzo ¿Cuánto hice? Trabajo Efectivo (Throughput) ¿Qué logré? Trascendencia ¿Para qué lo hice?

4 4 Ejemplo: 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

5 5 Ejemplo: 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

6 6 Ejemplo: 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:

7 7 Ejemplo: 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

8 8 Ejemplo: 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:

9 9 Ejemplo: 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: 1.Cercanía Menor índice indica mayor cercanía 2.Ranking de atracción física dentro de su zona Menor índice indica mayor ranking 3.Gusto

10 10 Ejemplo: Invitando a salir a una niña Estructura de datos

11 11 Ejemplo: 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: [z][r] 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: [z][r][g] Si el valor en la posición [2][1][3] 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 ( z=2 ), la que está ubicada en segundo lugar en el ranking de atracción física ( r=1 ), no le gusta viajar ( g=3 ).

12 12 Ejemplo: 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 usuario[NUM_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 ninas[NUM_ZONAS][NUM_NINAS_X_ZONA][NUM_GUSTOS] ;

13 13 Ejemplo: Invitando a salir a una niña Modelo de Control

14 14 Ejemplo: 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.

15 15 Ejemplo: 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.

16 16 Ejemplo: Invitando a salir a una niña Ejemplo de ejecución Usuario: ( ) Ninas: Zona 0: Nina[0]: ( ) Nina[1]: ( ) Nina[2]: ( ) Zona 1: Nina[0]: ( ) Nina[1]: ( ) Nina[2]: ( ) Zona 2: Nina[0]: ( ) Nina[1]: ( ) Nina[2]: ( ) Zona 3: Nina[0]: ( ) Nina[1]: ( ) Nina[2]: ( ) Zona 4: Nina[0]: ( ) Nina[1]: ( ) Nina[2]: ( ) Solucion: Zona=1 Ranking=0 Compatibilidad: 4 gustos Fue necesario considerar 19 candidatas (esfuerzo)


Descargar ppt "Arreglos (IV): Arreglos multidimensionales Clase #15 Introducción a la Programación Marcos"

Presentaciones similares


Anuncios Google