Vous êtes sur la page 1sur 2

4.

4.1.

Algoritmo de Ramicacin y Poda para el Puzzle(n2 1) o


Enunciado de la prctica. a

Se trata del juego del Puzzle(n2 1). En este caso, el objetivo es encontrar la solucin a este o juego que conlleve el menor nmero de movimientos aplicando el esquema de Ramicacin y Poda. u o El juego parte de un tablero de n2 piezas numeradas del 1 al n2 1. Dada una concreta disposicin o inicial de las piezas, queda una vac el hueco. El objetivo del juego es transformar, mediante a, movimientos legales de las piezas, la disposicin inicial en una disposicin nal tal que en cada o o casilla [i, j] se encuentre la pieza numerada (i 1) n + j, y el hueco est en la casilla [n, n]. e Los movimientos que se consideran legales son aquellos en los que el hueco se puede mover hacia arriba, abajo, derecha o izquierda, sin salirse del tablero y slo una posicin cada vez. Tambin es o o e posible interpretar que lo que se mueven son las piezas adyacentes al hueco, en horizontal o vertical una posicin. El siguiente ejemplo muestra una disposicin inicial y cul ser el resultado para o o a a Puzzle(8). 1 4 7 5 8 2 3 6 1 4 7 2 5 8 3 6

Cuadro 1: Posicin inicial aleatoria o

Cuadro 2: Posicin nal o

La salida del programa consistir en la secuencia de tableros que conduce a la nalizacin del a o juego.

4.2.

Realizacin de la prctica o a

La prctica constar de una memoria y de un programa correctamente escrito y que resuelva a a el problema planteado mediante el esquema de Ramicacin y Poda. o En la memoria se detallarn las respuestas a las preguntas planteadas y un listado comentado a del cdigo fuente. Se valorar que el cdigo est comentado de forma que se facilite su lectura. o a o e 4.2.1. Dise o del Algoritmo n

Contesta y desarrolla las siguientes preguntas: 1. Expn las caracter o sticas particulares de la aplicacin del esquema al problema en cuestin. o o 2. Describe el grafo asociado al espacio de soluciones. 3. Describe la funcin de coste que propones para seleccionar el nodo que en principio parece o ms prometedor. a 4. Describe cmo vas a realizar el clculo de una cota del valor de las soluciones que se encono a trarn generando sucesores a un determinado nodo. a 5. Describe la estructura de datos que vas a utilizar para almacenar en orden de prioridad los nodos creados y an no explorados. u 6. Escribe el pseudocdigo correspondiente al esquema y a su instanciacin al problema. o o 7. Analiza el coste computacional del programa desarrollado.

c Cruz Enrique Borges y Jose Luis Montaa n

4.2.2.

Funcionalidad de la prctica a

El programa se deber poder invocar desde la l a nea de comandos de Linux ( Windows) con la o siguiente sintaxis: $ java puzzle [-t][-a][-h] [fichero] El programa leer los datos del chero que se le pase como argumento. Ej: a C:\> java puzzle puzzle1.txt <ENTER> El chero de entrada representar al tablero inicial del juego. El tablero se representa por las a de la siguiente forma: Si la celda contiene un d gito el chero contendr dicho d a gito. El hueco se representa mediante el carcter * (asterisco). a Un salto de l nea representa el n de una la. Cada l nea es una la, y la primera l nea dene el tamao del tablero del puzzle (lado). n Se ignorar toda la la restante a partir de que se encuentre el carcter #. Se ignoran los blancos a a y las l neas en blanco. Por ejemplo: # Ejemplo 2 3 1 * 4.2.3. Argumentos y Parmetros a

La prctica tendr la siguiente sintaxis: a a $ puzzle [-t][-a][-h] <fichero> Opciones: -t : Realiza un test de correccin del puzzle de entrada. Si es incompleto o incorrecto segn o u las reglas del juego devuelve 1 en caso contrario devuelve 0. Sirve para comprobar errores sintcticos en la entrada. a -a : Modo traza. Muestra toda la secuencia de tableros que se van generando hasta alcanzar la solucin con menor nmero de movimientos. Hay que tratar que sea lo ms ilustrativa posible o u a sobre el proceso del problema por parte del algoritmo. -h : Modo ayuda. Muestra la sintaxis. Si no tiene argumentos se muestrar la sintaxis. a

4.3.
4.3.1.

Implementacin o
Estudio del Coste

Estudiar y calcular si es posible la complejidad del algoritmo. Hacer un estudio experimental con distintos tamaos de tablero. n 4.3.2. Casos de Prueba

Usar como caso de prueba el ejemplo inicial de la seccin 1. o 4.3.3. Dise o del programa y estructuras de datos n

Se seguir en el diseo del programa un enfoque modular, encapsulando en objetos las a n estructuras de datos utilizadas, y los mtodos de las mismas. Esto afecta en particular a e las estructuras de datos de tipo pila, cola, mont culo, conjunto etc. c Cruz Enrique Borges y Jose Luis Montaa n