Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Busqueda en IAparte1
Busqueda en IAparte1
Tcnicas IA de Bsqueda
Clemente Rubio-Manzano
Departamento de Sistemas de Informacin. Universidad del Bo-Bo
April 2, 2013
1 2 3 4
Introduccin Estrategias de Bsqueda Ciega Ejemplos Bsqueda Ciega Resolucin automtica de puzzles con bsqueda ciega Implementacin
La bsqueda es un mtodo computacional utilizado para la resolucin de problemas cuya especicacin est basada en estados. Cules son estos problemas ?
Single-agent path-nding: problemas para encontrar rutas: en ciudades, laberintos, lugares, etc 2 Two-player games: juegos de dos adversarios: ajedrez, damas, tres en raya, etc 3 Constraint satisfaction: satisfaccin de restricciones: 8-reinas, jarras, etc
1
Tipos de bsqueda
Tcnicas IA de Bsqueda Clemente RubioManzano Introduccin Estrategias de Bsqueda Ciega Ejemplos Bsqueda Ciega Resolucin automtica de puzzles con bsqueda ciega Implementacin
Conceptos bsicos
Tcnicas IA de Bsqueda Clemente RubioManzano Introduccin Estrategias de Bsqueda Ciega Ejemplos Bsqueda Ciega Resolucin automtica de puzzles con bsqueda ciega Implementacin
Espacio de estados: son todas la conguraciones que se pueden dar desde el estado inicial al objetivo. Operadores:
Accin que se realiza sobre un estado en un momento dado. Un operador es una aplicacin/funcin que modica un estado y genera un estado nuevo. No siempre puede actuar. hay ocasiones en las que un operador no puede aplicarse a un estado.
Solucin:
Secuencia de operadores que se requieren para pasar del estado inicial al objetivo.
Anchura: asigna mayor prioridad aquellos nodos que se encuentran a menor profundidad. De esta manera nos estamos asegurando que la bsqueda se realiza por todo el espacio de estados. Se garantiza encontrar la solucin ptima pero su utilizacin en IA es prohibitiva debido a la explosin combinatoria que genera.
Profundidad: tambin conocida como primero el mejor, es una variacin de la tcnica vuelta atrs (backtracking). En la vuelta atrs el siguiente estado a desarrollar es el que fue generado en ltimo lugar. En la bsqueda en profundidad el criterio de seleccin es el de mayor profundidad. No se garantiza encontrar una solucin ptima, depender de la conguracin inicial
Anchura
Tcnicas IA de Bsqueda Clemente RubioManzano Introduccin Estrategias de Bsqueda Ciega Ejemplos Bsqueda Ciega Resolucin automtica de puzzles con bsqueda ciega Implementacin
Profundidad
Tcnicas IA de Bsqueda Clemente RubioManzano Introduccin Estrategias de Bsqueda Ciega Ejemplos Bsqueda Ciega Resolucin automtica de puzzles con bsqueda ciega Implementacin
Comparacin
Tcnicas IA de Bsqueda Clemente RubioManzano Introduccin Estrategias de Bsqueda Ciega Ejemplos Bsqueda Ciega Resolucin automtica de puzzles con bsqueda ciega Implementacin
Ejemplo: Lugar
Tcnicas IA de Bsqueda Clemente RubioManzano Introduccin Estrategias de Bsqueda Ciega Ejemplos Bsqueda Ciega Resolucin automtica de puzzles con bsqueda ciega Implementacin
Nmero de estados = 9! (concepto de permutacin) Una permutacin es una combinacin ordenada (el orden importa) Hay dos tipos de permutaciones: con repeticin y sin repeticin (8 puzzle sin repeticin) 9! = 9 8 7 6 5 4 3 2 1 = 362880 estados
Operadores:
Representan un conjunto nito de acciones bsicas que transforman unos estados en otros. Mover el hueco hacia arriba:
Aplicabilidad: es aplicable a estados que no tengan el hueco en la primera la Resultado de aplicarlo: intercambiar las posiciones del hueco y del bloque que est encima de este.
Secuencia de acciones a realizar para conseguir el objetivo. Secuencia de operadores cuya aplicacin desde el estado inicial obtiene el estado nal.
class OchoPuzzle { Cola colaEstados;//necesitaremos una cola estadoTablero;//algo para almacenar el estado actual por ejemplo una cadena "12345 public OchoPuzzle(estadoInicial){ estadoTablero=estadoInicial; colaEstados = new Cola(); }
public void buscarSolucionAnchura() { insertarEstadoTablero(estadoTablero);//insertar un estado en la cola sin repeti while( !colaEstados.esVacia() ){ moverHuecoArriba(colaEstados.primero())); moverHuecoAbajo(colaEstados.primero()); moverHuecoIzquierda(colaEstados.primero(); moverHuecoDerecha(colaEstados.primero()); colaEstados.quitar(); } } //insertar estado en cola mtodo insertarEstadoTablero(estadoTablero); //movimiento hacia arriba con estadoTablero mtodo moverHuecoArriba(estadoTablero); //movimiento hacia abajo con estadoTablero mtodo moverHuecoAbajo(estadoTablero); //movimiento hacia la izquierda con estadoTablero mtodo moverHuecoIzquierda(estadoTablero); //movimiento hacia la derecha con estadoTablero mtodo moverHuecoDerecha(estadoTablero); }