Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo: Aspiradora. Debe limpiar las dos localizaciones 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
Estados: Describen la ubicacin de la aspiradora y la situacin de las localizaciones (limpias sucias). Seran tres valores. En el caso del dibujo: 0-0-1 Estado inicial: Cualquiera Acciones: Desplazarse a la Izquierda , a la Derecha y Limpiar. Objetivo: Que no haya suciedad en ninguna de las celdas y la aspiradora est cualquier localizacin. Estados objetivos o finales: 0-0-0 1-0-0
Espacio de solucin
Es un grafo, que describe todos los posibles caminos que 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 descripcin de 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.
Acciones
(I)zquierda (D)erecha (L)impiar
I,L D
D, L
0
I
L,D
L,I
2
I
6
L D D
1
I L I
7
I
Bsqueda
Utilizando la informacin del espacio de solucin (grafo), se puede encontrar un camino desde el estado inicial al estado final, realizando las acciones que correspondan en cada momento Un agente decide qu hacer en cada estado examinando 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.
En general: El algoritmo de Bsqueda recibe como entrada un Problema (Espacio de solucin, estado inicial y estados finales) y devuelve la Solucin.
rbol y soluciones del ejemplo de la aspiradora, partiendo del estado inicial 0-1-1 (3)
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 profundidad la Frontera se implementa mediante una Pila. Para la estrategia de Primero en Anchura la Frontera se implementa mediante una Cola
El Algoritmo General: Para comenzar necesita: Lista de estados Lista de estados finales (objetivo) Grafo con el espacio de solucin ( funciones que permitan determinar las acciones y realizarlas) Durante el funcionamiento crea: rbol de bsqueda de la solucin Pila Cola para representar la frontera Al terminar construye una: Lista con la secuencia de acciones y estados
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 Lista Boolean Lista Boolean Lista Estado void Estado BuscarSolucionPP( Estadoinicial ) BuscarSolucionPA( Estadoinicial ) EsObjetivo( Estado ) CrearSolucion( Arbol ) BuscarEnCamino( Arbol, Estado ) Expandir( Arbol ) AdicionarEstado( parametros ) ObtenerAccionesPosible( Estado, Acciones ) RealizarAccion( Estado, Accion )
Funcin creasolucion:
Dado un rbol que en realidad es una Hoja correspondiente a un estado final, construye una lista con la solucin (camino con los nodos del rbol, desde la raz hasta la hoja). Lo construye recorriendo 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; }
Funcin buscarencamino:
Dado un Arbol (hoja) y un Estado verifica si ese estado ya est en el camino desde esa hoja hasta la Raz del rbol.
public boolean buscarencamino(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; }
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; }
Funcin BuscarSolucionPP:
Algoritmo principal que busca la solucin siguiendo la estrategia de Primero en Profundidad
public 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--; } } }
EJERCICIO
Temos 3 celdas (1,2,3), de las cuales 2 estn ocupadas por los objetos A y B. El objetivo es mover los objetos de manera tal que se llegue al objetivo siguiente:
EJERCICIO
1) Definir el conjunto de estados posibles 2) Definir el estado objetivo 3) Definir las acciones posibles 4) Construir el grafo