Universidad de lcalá Departamento de iencias de la omputación lgoritmia y omplejidad EJERIIOS DE GRFOS DE JUEGO Ejercicio 1). Se dispone de una matriz M de tamaño Fx (F es la cantidad de filas y la cantidad de columnas), cuyas celdas están vacías. Dos jugadores (denominados LNO y NEGRO) ven rellenando el tablero con piezas de su color respectivo, siguiendo estas reglas de juego: Los jugadores se alternan en el orden de poner sus piezas, empezando el jugador LNO. uando le toca a un jugador, escoge una casilla que todavía esté vacía y pone una ficha de su color. Todas las piezas del otro jugador que estén adyacentes (en horizontal, vertical o diagonal) se cambian de color. Si tras una jugada el tablero está lleno, el juego termina y gana el jugador que más piezas de su color tenga en el tablero. Diseñar un algoritmo que, usando los métodos de los Grafos de Juego, genere el grafo de juego para el jugador LNO indicando las estructuras de datos usadas. Ejercicio 2). Se tiene el siguiente juego para dos jugadores, llamados ZUL y ROJO: se dispone de una matriz M de tamaño Fx donde F y son números pares, y formada por celdas con valores entero positivos que representan los puntos del El objetivo es conseguir la mayor cantidad de puntos, atendiendo las siguientes reglas: Los jugadores se alternan en el orden de escoger casillas. El jugador ZUL escoge cualquier casilla del tablero. Tras el primer movimento, el juego se desarrolla como sigue: o Si le toca al jugador ZUL, tiene que coger una casilla libre en la misma fila que la última jugada del jugador ROJO. o Si le toca al jugador ROJO, tiene que coger una casilla libre en la misma columna que la última jugada del jugador ZUL. uando un jugador toma una casilla, se anota tantos puntos como el valor de la misma, y la casilla deja de estar disponible para los dos jugadores. Si un jugador no tiene ninguna casilla disponible (no necesariamente porque el tablero esté vacío) el juego termina. uando se termina el juego, gana el jugador que más puntos tenga. Diseñar un algoritmo que, mediante la metodología de Grafos de Juego, permita obtener la mejor forma de jugar para el jugador ZUL (se supone que los jugadores toman decisiones de manera óptima), indicando las estructuras de datos usadas. Jesús Lázaro García Pág. 1 / 5
Universidad de lcalá Departamento de iencias de la omputación lgoritmia y omplejidad Ejercicio 3). Se tiene la matriz de adyacencia de un grafo no dirigido formado por N nodos (numerados del 1 al N). Los nodos de este grafo pueden ser pintados con tres colores distintos (, y ), pero un nodo solo puede pintarse de un color si no está adyacente a otro nodo que esté pintado del mismo color. Inicialmente todo el grafo está sin pintar. Dos jugadores (Jug1 y Jug2) juegan a pintar el grafo siguiendo estas reglas: Empieza el Jug1: escoge un nodo, lo pinta del color que quiera y cede el turno al Jug2. Los jugadores se alternan a la hora de jugar los turnos (después del Jug1 va el Jug2, luego le vuelve a tocar al Jug1, etc). En cada turno, el jugador actual escoge un nodo sin pintar y lo pinta con un color de su elección. Si esa jugada hace que haya dos nodos adyacentes con el mismo color, el jugador actual pierde. En otro caso, le cede el turno al siguiente jugador. Si un jugador no puede seleccionar un nodo para pintar porque están todos pintados, el juego termina en un empate. Diseñar un algoritmo que genere el Grafo de Juego para este juego, indicando si el Jug1 tiene una estrategia ganadora. Veamos un ejemplo. Se tiene la matriz de adyacencia del grafo siguiente. En la esquina inferior derecha de cada nodo aparece su número (en este caso, N = 4) 1 F T T F 2 T F T T 3 T T F T 4 F T T F Vamos a simular un par de partidas: Jug1 pinta el nodo 1 con. Jug2 pinta el nodo 2 con. Jug1 pinta el nodo 4 con. Jug2 pinta el nodo 3 con y pierde (perderá con cualquier color) Jug1 pinta el nodo 2 con. Jug2 pinta el nodo 4 con. Jug1 pinta el nodo 3 con. Jug2 pinta el nodo 1 con. Empate. Jesús Lázaro García Pág. 2 / 5
Universidad de lcalá Departamento de iencias de la omputación lgoritmia y omplejidad Ejercicio 4). En una isla desierta hay dos náufragos que, para poder pasar el tiempo de manera más agradable, han ideado un El material necesario para jugar consiste en unos cuantos cocos partidos por la mitad (como si fueran cuencos) y varias perlas que han encontrado tras comerse unas ostras. Los cocos se colocan en círculo y en cada uno de ellos se deja la misma cantidad de perlas (al final se encuentra un ejemplo con 6 cocos y 24 perlas, lo que hace una cantidad de 4 perlas por coco). Las reglas que han inventado para el juego son las siguientes: Los dos jugadores toman turno de manera alternativa (empieza el Jugador 1, después va el Jugador 2, luego el Jugador 1 de nuevo, etc). Una jugada consiste en tres pasos: 1. El jugador selecciona un coco que tenga perlas, y lo vacía. 2. Empezando por el coco seleccionado, y después girando en el sentido de las agujas del reloj, el jugador va depositando una a una las perlas que ha cogido en el Paso 1. 3. uando deposita la última perla del Paso 2, el jugador gana todas las perlas que haya en el coco que ha recibido la última perla. omo ese coco se queda sin perlas, se retira del juego poniendose boca abajo (el coco no puede volver a ser seleccionado, ni puede recibir perlas de otras jugadas). uando un jugador solo pueda seleccionar un coco, ese jugador se lleva todas las perlas que quedan y se termina el Gana el jugador que más perlas tenga al acabar el Se pide diseñar detalladamente un algoritmo que, suponiendo que los dos jugadores juegan de manera óptima, obtenga de la manera más eficiente el grafo de juego a partir de los datos iniciales del problema, que son la cantidad de cocos y el número de perlas que hay en cada uno de ellos (todos los cocos empiezan con igual número de perlas). Vamos a ver el ejemplo de un juego con 6 cocos y 24 perlas (cada coco tiene 4 perlas) Empieza el Jugador 1. Escoge el coco que está marcado en negrita y reparte las 4 perlas, empezando a partir de ese coco y luego en sentido del reloj 1 5 y acaba cogiendo del último coco, que se retira del J 1 = 5 J 2 = 0 1 5 4 Jesús Lázaro García Pág. 3 / 5
Universidad de lcalá Departamento de iencias de la omputación lgoritmia y omplejidad hora le toca jugar al Jugador 2. Escoge el coco que está en negrita 1 5 4 reparte empezando por su coco, saltando el hueco vacío 2 6 coge las 6 perlas y retira el último coco del J 1 = 5 J 2 = 6 Vuelve a jugar el Jugador 1. Escoge el coco en negrita reparte las 2 perlas, por supuesto saltando el hueco vacío 1 5 2 coge las 2 perlas y retira el coco del J 1 = 7 J 2 = 6 1 El Jugador 2 escoge el coco 1 reparte (como hay pocos cocos da varias vueltas) 7 se lleva 7 perlas y quita el coco de la partida. J 1 = 7 J 2 = 13 Jugador 1 escoge reparte las 2 perlas 1 3 se lleva 3 perlas y quita el coco de la partida. J 1 = 10 J 2 = 13 1 uando le toca al Jugador 2 solo queda un coco: se lleva 1 perla y acaba el Resultado final: J 1 = 10, J 2 =14. Gana el Jugador 2. Jesús Lázaro García Pág. 4 / 5
Universidad de lcalá Departamento de iencias de la omputación lgoritmia y omplejidad Ejercicio 5). El juego Más_o_menos, para dos jugadores, consiste en lo siguiente: de entre unos límites inferior y superior de números (en los ejemplos a continuación, 1 y 50) un jugador escoge un número (digamos, el 12) y le pasa el turno al otro jugador. partir de este momento, cada jugador realiza dos acciones: la primera consiste en determinar el nuevo intervalo partiendo del último número escogido (siguiendo con el ejemplo, + generaría el intervalo 13-50 y el intervalo 1-11), y la segunda acción es escoger número y pasar el turno (ver ejemplos completos). El jugador que no pueda escoger un número (por no tener intervalo disponible) pierde. Diseñar el método que emule la actuación de un jugador que juegue de manera óptima, indicando las estructuras de datos usadas. Ejemplo 1: Ejemplo 2: Ejemplo 3: Jugador 1 (1-50): 12 Jug. 1 (1-50): 22 Jug. 1 (1-50): 40 Jugador 2: + (13-50): 40 Jug. 2: - (1-21): 18 Jug. 2: + (41-50): 50 Jugador 1: - (13-39): 37 Jug. 1: + (19-21): 20 Jug. 1: - (41-49): 47 Jugador 2: + (38-39): 38 Jug. 2: - (19-19): 19 Jug. 2: + (48-49): 48 Jugador 1: + (39-39): 39 Jug. 1: + (20-19): PIERDE Jug. 1: + (49-49): 49 Jugador 2: - (39-38): PIERDE Jug. 2: + (50-49): PIERDE Jesús Lázaro García Pág. 5 / 5