Documente Academic
Documente Profesional
Documente Cultură
Ing. Claudia Pereira Facultad de Ciencias Exactas Universidad Nacional del Centro de la Provincia de Buenos Aires
donde los xi pertenecen a un cierto dominio. Funcin FACTIBLE: determina si una tupla cumple o no con las restricciones del problema. Funcin SOLUCIN: determina si una tupla factible es solucin al problema. Funcin OBJETIVO a optimizar o satisfacer.
Backtracking: Introduccin
Implcitas: describen las relaciones que deben cumplirse entre los xi.
Backtracking: Introduccin
TCNICA BACKTRACKING
Forma cada tupla de manera progresiva.
Verifica si cada xi aadido a la tupla (x1,x2,..,xi) conduce a una solucin factible. Si FACTIBLE (x1,x2,..,xi) = Falso Corta la bsqueda Prueba con otro valor vlido de xi Si no existen valores vlidos retrocede Si FACTIBLE (x1,x2,..,xi) = Verdadero Repite el procedimiento para incorporar x i+1 a la tupla
Backtracking: Introduccin
ESPACIO DE SOLUCIONES
(x1) (x2) (x3) ........... (x3 ,x1) .... (xn) (xn ,x1) (xn ,x1) .................. (xn ,x1 ,...x1)...(xn ,xn ,...xn)
hijos
niveles
..................
#niveles
#hijos
O (#hijos #niveles )
Backtracking: Introduccin
i=0
Funciones de PODA Poda por costo Ventaja Si existe solucin al problema entonces esta tcnica la encuentra.
Backtracking: Introduccin
ESQUEMA GENERAL
BACK (estado e, solucion *sol) \\ e: nodo del rbol de soluciones { \\sol: solucin que retorna if ( HOJA (e)) CalcularSolucin (e, sol); else { int nrohijo = 1; estado siguiente; while ( HIJOS (nrohijo, e, siguiente ) ) { if ( !PODADO ( siguiente, sol) ) BACK ( siguiente, sol); ++nrohijo; } } }
Backtracking: Introduccin
Espacio de soluciones
Estado inicial
Estado solucin
Ejemplo: el caballo de Atila
Solucin
Ejemplo: el caballo de Atila
Complejidad temporal
Depende de la cantidad de estados generados
O (#hijos #niveles )
T (casillasPisadas) O( 3
Atila
#casillasPisadas
BIBLIOGRAFA
Computer Algorithms C++; Horowitz, Sahni, Rajasekaran. Algorithms in C; Sedgewick Apuntes de ctedra.