Upload
jorgearmandodavilahurtado
View
227
Download
0
Embed Size (px)
Citation preview
8/12/2019 AgenteResolvente - Busqueda Ciega
1/25
8/12/2019 AgenteResolvente - Busqueda Ciega
2/25
8/12/2019 AgenteResolvente - Busqueda Ciega
3/25
Ejemplo: Aspiradora. Debe limpiar las doslocalizaciones sobre las cuales se puede mover
Condiciones:-Hay solo dos localizaciones (Izquierda y Derecha)
-Las localizaciones pueden estar limpias sucias
En cada momento la aspiradora sabe dnde est y si
hay suciedad no en cada lugar
8/12/2019 AgenteResolvente - Busqueda Ciega
4/25
Estados: Describen la ubicacin de la aspiradora y lasituacin de las localizaciones (limpias sucias). Seran
tres valores. En el caso del dibujo: 0-0-1
Estado inicial: CualquieraAcciones: Desplazarse a la Izquierda , a la Derecha y
Limpiar.Objetivo:Que no haya suciedad en ninguna de lasceldas y la aspiradora est cualquier localizacin.
Estados objetivos o finales: 0-0-0 1-0-0
8/12/2019 AgenteResolvente - Busqueda Ciega
5/25
Espacio de solucin
Es un grafo, que describe todos los posibles caminosque conducen a la solucin del problema. Los vrtices
son los estados y las aristas son las acciones que
conducen de un estado a otro
En el ejemplo de la aspiradora:-Existen 2x2x2 = 8 estados (vrtices) ya que hay dos
posibilidades para cada componente de la descripcinde los mismos
-Las aristas unen a los estados de acuerdo a los
resultados de las acciones aplicadas a cada estado. Las
acciones seran las etiquetas de las aristas.
8/12/2019 AgenteResolvente - Busqueda Ciega
6/25
Grafo: Ejemplo de la aspiradoraEstado
0:000
1:0012:010
3:011
4:100
5:101
6:110
7:111
Acciones
(I)zquierda
(D)erecha(L)impiar
D
I
D I
7 3
L , D
6
L
2
I D
I
0
I , L
L
L , I
1
L
5
DD
I
4
D, L
L
D
I
8/12/2019 AgenteResolvente - Busqueda Ciega
7/25
Bsqueda
Utilizando la informacin del espacio de solucin
(grafo), se puede encontrar un camino desde el estadoinicial al estado final, realizando las accionesquecorrespondan en cada momento
Un agente decide qu hacer en cada estadoexaminando las diferentes secuencias posibles de
acciones que le conducen a otros estados. Finalmente,
despus de realizar este proceso de exploracin,
encuentra una secuencia que lo conduce a la solucin
(objetivo)
Hallar esta secuencia es la Bsqueda.
8/12/2019 AgenteResolvente - Busqueda Ciega
8/25
Solucin
Es la secuencia de accionesque devuelve elalgoritmo de Bsqueda.
En general:
El algoritmo de Bsquedarecibe como entrada
un Problema(Espacio de solucin, estadoinicialy estados finales) y devuelve laSolucin.
8/12/2019 AgenteResolvente - Busqueda Ciega
9/25
Algoritmo de Bsqueda de Soluciones:
Utiliza un rbol de Bsqueda
Durante la bsqueda de la solucin el algoritmo va
construyendo un rbol en el que se almacena, en cada
nodo, informacin sobre los estados que se van
obteniendo al realizar las acciones.
La raz del rbol se corresponde con el estado inicial. Sus
hijos (otros estados) son los que resultan de realizar las
acciones a ese estado.
Se continua con la creacin del rbol, aplicando el
mismo razonamiento a cada hijo (sin repetir estados en
cada camino), hasta que se llegue al estado final
8/12/2019 AgenteResolvente - Busqueda Ciega
10/25
8/12/2019 AgenteResolvente - Busqueda Ciega
11/25
Algoritmo Bsqueda de Soluciones:
Durante el proceso de construccin del rbol se utiliza
una funcin que dado un Nodo (estado) obtiene los
estados que resultan de realizar todas las acciones en
ese estado. A esta operacin le llamaremos Expandir.
Debe expandir nodos que conduzcan a estados que noestn en el mismo camino. Esta funcin obtiene la
informacin a partir del Grafo.
-Estrategia de bsqueda: Criterio para elegir cul ser
el siguiente estado a Expandir. Utilizaremos dos
estrategias dentro la conocida como Bsqueda a
Ciegas (Primero en profundidad, primero en anchura)
8/12/2019 AgenteResolvente - Busqueda Ciega
12/25
Estrategias de Bsqueda
-Utiliza el concepto de Frontera(Todos los nodos del rbol
que han sido generados, pero no expandidos). Al
comienzo, la frontera contiene nicamente a la raz del
rbol.
-La estrategia de bsqueda consistir entonces en
determinar, de la frontera, cul ser el siguiente nodo a
expandir. En el caso de la estrategia Primero en
profundidadla Frontera se implementa mediante una Pila.Para la estrategia de Primero en Anchurala Frontera se
implementa mediante una Cola
8/12/2019 AgenteResolvente - Busqueda Ciega
13/25
El Algoritmo General:
Para comenzar
necesita:Listade estadosListade estados finales (objetivo)Grafo con el espaciode solucin ( funciones que
permitan determinar las acciones y realizarlas)
Durante el funcionamientocrea:rbol de bsqueda de la solucin
Pila Colapara representar la frontera
Al terminar construye una:Lista con la secuencia deacciones yestados
8/12/2019 AgenteResolvente - Busqueda Ciega
14/25
Algoritmo General:
-Construir lista de estados (estados)-Construir la lista de estados finales (objetivo)
-Construir el grafo (espacio)no..si se definen funciones
Utiliza las siguientes funciones:
Lista BuscarSolucionPP( Estadoinicial )Lista BuscarSolucionPA( Estadoinicial )Boolean EsObjetivo( Estado )Lista CrearSolucion( Arbol )Boolean BuscarEnCamino( Arbol, Estado )Lista Expandir( Arbol )Estado AdicionarEstado( parametros )void ObtenerAccionesPosible( Estado, Acciones )Estado RealizarAccion( Estado, Accion )
8/12/2019 AgenteResolvente - Busqueda Ciega
15/25
Los nodos del rbol de Bsqueda contienen:
-Estado(estado del espacio de estados que se
corresponde con el nodo)
-Padre(el nodo en el rbol que ha generado a ese nodo)
-Accin(la accin que se aplica al padre para generar elnodo)
-Profundidad(longitud del camino desde el estado
inicial al nodo)
Los estadoscontienen informacin sobre ladescripcin del estado y un IDque lo identifica de
manera nica en el conjunto de estados
8/12/2019 AgenteResolvente - Busqueda Ciega
16/25
Implementacin (Clase para los Estados):
public class TEstado{
public int P, I, D;
public int ID;
// constructor
public TEstado(int P, int I, int D ){
this.P = P;
this.I = I;
this.D = D;
this.ID = P*4 + I*2 + D;}
}
8/12/2019 AgenteResolvente - Busqueda Ciega
17/25
Implementacin (Clases para los nodos del rbol):
public class TNodoAB{
public TEstado estado;
public TArbol padre;
public String accion;
public int profundidad;
// constructor
public TNodoAB( TEstado e, TArbol p, String a, int pr )
{
estado = e;
padre = p;
accion = a;
profundidad = pr;}
}
8/12/2019 AgenteResolvente - Busqueda Ciega
18/25
Declaracin de los datos necesarios:
public TLista estados;
public TArbol arbol;
public TLista objetivo;
Construccin de la lista de estados (ejemplo Aspiradora):
estados= new TListaA();
objetivo= new TListaA();
8/12/2019 AgenteResolvente - Busqueda Ciega
19/25
Funcin esobjetivo:Dado un estado verifica si ste se encuentra en la lista
objetivo.
public boolean esobjetivo( TEstado e)
{
for ( int i = 0; i < objetivo.Cantidad(); i++ )
{
TEstado ee = (TEstado)objetivo.Obtener(i);
if ( ee.ID == e.ID)
return true;
}
return false;
}
8/12/2019 AgenteResolvente - Busqueda Ciega
20/25
Funcin creasolucion:Dado un rbol que en realidad es una Hoja correspondiente a unestado final, construye una lista con la solucin (camino con los
nodos del rbol, desde la raz hasta la hoja). Lo construyerecorriendo al rbol hacia arriba
public TLista crearsolucion(TArbol araiz)
{
TLista res;
res = new TListaP();
while ( !araiz.Vacio() )
{
TNodoAB nodo = (TNodoAB)araiz.ObtenerDato();
res.Insertar(nodo,0);araiz = nodo.padre;
}
return res;
}
8/12/2019 AgenteResolvente - Busqueda Ciega
21/25
Funcin buscarencamino:Dado un Arbol (hoja) y un Estado verifica si ese estado ya est en elcamino desde esa hoja hasta la Raz del rbol.
public booleanbuscarencamino(TArbolA araiz, TEstado e)
{
while ( !araiz.Vacio() )
{
TNodoAB nodo = (TNodoAB)araiz.ObtenerDato();if ( nodo.estado.ID == e.ID)
return true;
araiz = nodo.padre;
}
return false;}
8/12/2019 AgenteResolvente - Busqueda Ciega
22/25
Funcin expandir:Dado un Arbol (hoja) realiza el proceso de Expandir el nodo,realizando las acciones descritas en el Grafo.public TLista expandir(TArbol araiz) {
TLista res;TNodoAB nodo;
res = new TListaP();
nodo = (TNodoAB)araiz.ObtenerDato();
int ID = nodo.estado.ID;
for ( int i = 0; i < espacio.CantidadArcos(ID); i++) {
int IDd = espacio.ObtenerVerticeLlegada(ID, i);TEstado e = (TEstado)estados.Obtener(IDd);
if ( !buscarencamino( araiz, e ) ) {
TNodoAB n;
n = new TNodoAB( e,araiz,(String)espacio.ObtenerArco(ID,i),
nodo.profundidad+1 );
TArbolA hijo = new TArbolA();
hijo.CrearHoja();hijo.ModificarDato(n);
araiz.AdicionarHijo(hijo);
res.Adicionar(hijo);
}
}
return res;
}
F i B S l i PP
8/12/2019 AgenteResolvente - Busqueda Ciega
23/25
Funcin BuscarSolucionPP:Algoritmo principal que busca la solucin siguiendo la estrategia dePrimero en Profundidadpublic TLista BuscarSolucionPP( TEstado e ) {
TNodoAB raiz,nodo; TArbol araiz; TPila frontera;raiz = new TNodoAB( e, new TArbolA(), "", 0 );
arbol = new TArbolA();
arbol.CrearHoja();
arbol.ModificarDato(raiz);
frontera = new TPilaP();
frontera.Push(arbol);
while ( true ) {if ( frontera.Vacia()) return new TListaA(); //sin solucion
araiz = (TArbolA)frontera.Pop();
nodo = (TNodoAB)araiz.ObtenerDato();
if ( esobjetivo(nodo.estado)) return crearsolucion(araiz);
TListaP exp = expandir(araiz);
int c = exp.Cantidad();
while ( c > 0 ) {
TArbol aux = (TArbol)(exp.Obtener(c-1));
frontera.Push(aux);
exp.Eliminar(c-1);
c--;
}
}}
8/12/2019 AgenteResolvente - Busqueda Ciega
24/25
EJERCICIO
Temos 3 celdas (1,2,3), de las cuales 2 estnocupadas por los objetos A y B. El objetivo es moverlos objetos de manera tal que se llegue al objetivosiguiente:
Un objeto se puede mover slo a la celda vaca.
8/12/2019 AgenteResolvente - Busqueda Ciega
25/25
EJERCICIO
1) Definir el conjunto de estados posibles
2) Definir el estado objetivo
3) Definir las acciones posibles4) Construir el grafo
4) Modificar el programa de la aspiradora para quefuncione para este problema.