La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

PROBLEMA DEL CABALLO DE ATILA Ing. Claudia Pereira Facultad de Ciencias Exactas Universidad Nacional del Centro de la Provincia de Buenos Aires TÉCNICA.

Presentaciones similares


Presentación del tema: "PROBLEMA DEL CABALLO DE ATILA Ing. Claudia Pereira Facultad de Ciencias Exactas Universidad Nacional del Centro de la Provincia de Buenos Aires TÉCNICA."— Transcripción de la presentación:

1 PROBLEMA DEL CABALLO DE ATILA Ing. Claudia Pereira Facultad de Ciencias Exactas Universidad Nacional del Centro de la Provincia de Buenos Aires TÉCNICA DE DISEÑO BACKTRACKING

2 Backtracking: Introducción La solución puede expresarse como una n-tupla (x 1,x 2,...x n ) donde los x i pertenecen a un cierto dominio. Función FACTIBLE: determina si una tupla cumple o no con las restricciones del problema. Función SOLUCIÓN: determina si una tupla factible es solución al problema. Función OBJETIVO a optimizar o satisfacer. CARACTERÍSTICAS DEL PROBLEMA

3 Restricciones del problema: Explícitas: describen el dominio de los x i. Implícitas: describen las relaciones que deben cumplirse entre los x i. CARACTERÍSTICAS DEL PROBLEMA Backtracking: Introducción

4 Forma cada tupla de manera progresiva. Verifica si cada x i añadido a la tupla (x 1,x 2,..,x i ) conduce a una solución factible. Si FACTIBLE (x 1,x 2,..,x i ) = Falso Corta la búsqueda Prueba con otro valor válido de x i Si no existen valores válidos retrocede Si FACTIBLE (x 1,x 2,..,x i ) = Verdadero Repite el procedimiento para incorporar x i+1 a la tupla Backtracking: Introducción TÉCNICA BACKTRACKING

5 Backtracking: Introducción (x 1 )(x 2 )(x 3 ) (x n ) (x 1,x 1 )(x 1,x 2 )...(x 1,x n )(x 3,x 1 )....(x n,x 1 ) (x 1,x 1,...x 1 )(x 1,x 1,...x 2 ) hijos niveles (x n,x 1,...x 1 )...(x n,x n,...x n ) #niveles #hijos i i=0 Cantidad total de nodos: O (#hijos #niveles ) ESPACIO DE SOLUCIONES

6 Costo computacional exponencial Solución Funciones de PODA Ventaja Si existe solución al problema entonces esta técnica la encuentra. Poda por factibilidad Poda por costo Backtracking: Introducción Desventaja

7 Backtracking: Introducción BACK (estado e, solucion *sol) \\ e: nodo del árbol de soluciones { \\sol: solución que retorna if ( HOJA (e)) CalcularSolución (e, sol); else { int nrohijo = 1; estado siguiente; while ( HIJOS (nrohijo, e, siguiente ) ) { if ( !PODADO ( siguiente, sol) ) BACK ( siguiente, sol); ++nrohijo; } } ESQUEMA GENERAL

8 Enunciado: Todos sabemos que por donde pisa el caballo de Atila jamás vuelve a crecer el pasto. El caballo fue directamente hacia el jardín de n x n casillas. Empezó su paseo por una casilla cualquiera y volvió a ella, es decir, hizo un recorrido cerrado. No visitó dos veces una misma casilla, se movió de una casilla a otra vecina en forma horizontal o vertical, pero nunca en diagonal. Por donde pisó el caballo, el pasto jamás volvió a crecer. Luego de terminado el recorrido en algunas casillas todavía había pasto (señal de que en ellas no había estado el caballo). Escriba un algoritmo que deduzca el recorrido completo que hizo el caballo. PROBLEMA: EL CABALLO DE ATILA

9 Ejemplo: el caballo de Atila Solución (pos 1, pos 2, pos 3,......pos n ) pos i es una casilla del jardín de m x m casillas Restricciones: Explícitas: pos i {pos 1, pos 2, pos 3,......pos mxm } Implícitas: en la tupla solución, No hay dos posiciones iguales pos 1 es una casilla del borde del jardín pos i y pos i+1 son casillas son adyacentes pos 1 y pos n son casillas adyacentes deben estar todas las casillas pisadas CARACTERIZACIÓN DEL PROBLEMA

10 Estado inicial Movimientos del caballo No puede seguir avanzando Estado solución Ejemplo: el caballo de Atila Estados factibles Espacio de soluciones

11 Espacio de soluciones: Ejemplo: el caballo de Atila Solución recorrido

12 Ejemplo: el caballo de Atila else { estado sgte; int nrohijo=1; while ( hijos(nrohijo, e, sgte)) { if ( sgte.esFactible() ) Atila( sgte, nroPisada+1); nrohijo++;} } void Atila (estado e, int nroPisada) { e.marcar(nroPisada); if ( ! e.HayMovimientos() ) { if(( nroPisada== e.cantPisadas() ) && (e.vecinaOrigen())) imprimirSolucion(e); } Algoritmo para todas las soluciones

13 Depende de la cantidad de estados generados Ejemplo: el caballo de Atila T Atila ( casillasPisadas ) O( 3 #casillasPisadas ) O (#hijos #niveles ) Complejidad temporal

14 Computer Algorithms C++; Horowitz, Sahni, Rajasekaran. Algorithms in C; Sedgewick Apuntes de cátedra. BIBLIOGRAFÍA


Descargar ppt "PROBLEMA DEL CABALLO DE ATILA Ing. Claudia Pereira Facultad de Ciencias Exactas Universidad Nacional del Centro de la Provincia de Buenos Aires TÉCNICA."

Presentaciones similares


Anuncios Google