AgenteResolvente - Busqueda Ciega

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.