TÉCNICA DE DISEÑO BACKTRACKING

Slides:



Advertisements
Presentaciones similares
INGENIERIA INFORMATICA Y BUSQUEDAS CON ADVERSARIOS
Advertisements

Búsqueda en árboles de juego
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
GRAFOS ESTRUCTURAS DE DATOS.
Programación II Recursividad
Programación Básica con NQC Pedro F. Toledo – Patricio Castillo 18/08/2006.
Búsqueda con retroceso
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
La maquina de Turing La máquina de Turing es una caja negra (tan simple como una máquina de escribir y tan compleja como un ser humano) capaz no sólo de.
Grupo 4 Matías Melgar Pablo Carbonell
MATEMÁTICAS DISCRETAS.
Operaciones sobre un árbol
Introducción a la Estadística Informática
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Algoritmos Aleatorizados
ANALISIS SINTACTICO DESCENDENTE
CAPITULO 2 La Representación del Conocimiento
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.

XXV Olimpiada Thales. Al llegar el verano, mi amiga Adita Lovelace ha diseñado una curiosa forma de repasar 2º de la ESO. Se ha creado una tarjeta con.
Inteligencia Artificial Resolver problemas mediante búsqueda
Inteligencia Artificial Resolver problemas mediante búsqueda
Arboles Binarios de expresiones
Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Métodos Numéricos Método de la regla falsa Balderas Nieves Dulce Ivett.
Teoría de Grafos.
GRAFOS HUGO ARAYA CARRASCO.
Estructuras de Control Iterativas
Semana 5 Subprogramas..
Trabajo presentado por: LUIS FERNANDO OBANDO ING
Optimización Combinatoria usando Algoritmos Evolucionistas Problemas de Optimización. Idea: Encontrar una solución "factible" y "óptima" de acuerdo a algún.
TEMA 5 ORDENACION, BUSQUEDA, MODIFICACION, BUSQUEDA HASH.
Heaps Mauro Maldonado Abril/2005. Introducción La estructura heap es frecuentemente usada para implementar colas de prioridad. En este tipo de colas,
Optimización, Búsqueda Heurística
Problemas de Decisión y Optimización

Agentes de resoluciones d problemas Parte I. Un agente puede adoptar una meta o un propósito para satisfacer.
Introducción al análisis de algoritmos
Estructura de Datos y Algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Parte I. Estructuras de Datos.
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Surge cuando se necesita un modelo costo-efectividad que permita transportar ciertos bienes desde un lugar de origen a un destino que necesita aquellos.
Árboles.
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
Árboles de Búsqueda Binaria
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Diseño y análisis de algoritmos
Problema de inclusión en una Curva Digital Por Orellana Muñoz, Alfonso Paz Vicente, Rafael Pérez Medina, Gerardo Rodríguez Naranjo.
TPE 1 - Sistemas de Producción: Rolling Cubes Sistemas de Inteligencia Artifcial Bergez, Brasca y García.
Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías. Proyecto PAPIME PE
APUNTADORES.
Métodos de diseño de Algoritmos
PROPIEDADES GEOMÉTRICAS
UNA ECUACION PARA LAS LEYES DEL MOVIMIENTO
Conceptos Avanzados de Programación
BUSQUEDA EN UN ESPACIO DE ESTADOS.
ALGORITMO QUE ES ??.
Matemáticas II. Profesor: Ing. Yadhira M. Rangel Carrillo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.

75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Ing. Haydeli del Rosario Roa Lopez
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
Coloreado de Mapas con Backtracking
1 Clase 6: control (1ª parte) iic1102 – introducción a la programación.
Transcripción de la presentación:

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

CARACTERÍSTICAS DEL PROBLEMA La solución puede expresarse como una n-tupla (x1,x2,...xn) donde los xi 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. Backtracking: Introducción

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

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

Cantidad total de nodos: ESPACIO DE SOLUCIONES hijos (x1) (x2) (x3) ........... (xn) (x1 ,x1) (x1 ,x2) ...(x1 ,xn) (x3 ,x1) .... (xn ,x1) (xn ,x1) .................. .................. niveles (x1 ,x1 ,...x1) (x1 ,x1 ,...x2).... (xn ,x1 ,...x1)... (xn ,xn ,...xn) #niveles  #hijos i i=0  O (#hijos #niveles ) Cantidad total de nodos: Backtracking: Introducción

Costo computacional exponencial Solución Funciones de PODA Desventaja 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

ESQUEMA GENERAL 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; } } Backtracking: Introducción

PROBLEMA: EL CABALLO DE ATILA 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.

CARACTERIZACIÓN DEL PROBLEMA Solución  (pos1, pos2, pos3,......posn) posi es una casilla del jardín de m x m casillas Restricciones: Explícitas: posi {pos1, pos2, pos3,......posmxm} Implícitas: en la tupla solución, No hay dos posiciones iguales pos1 es una casilla del borde del jardín posi y posi+1 son casillas son adyacentes pos1 y posn son casillas adyacentes deben estar todas las casillas pisadas  Ejemplo: el caballo de Atila

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

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

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

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

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