Вы находитесь на странице: 1из 38

Resolucin de

problemas mediante bsqueda

Introduccin

Agentes basados en el objetivo de resolucin de problemas.


Necesaria una formulacin de objetivos. Estados y posibles acciones. Ejemplo de mapa de carreteras. Un agente simple de resolucin de problemas:

La funcin RECOMMENDATION devuelve la primera accin en la secuencia. La funcin REMAINDER devuelve el resto.

Formulacin de problemas, I

Problema de aspiradora:
8 posibles estados Los estados estn contenidos en esta figura:

Dos tipos de problemas:


Problemas de estados nicos.
Aparecen en entornos accesibles (la percepcin determina completamente el estado) y deterministas.

Problemas de estados mltiples.


Aparecen por ejemplo en entornos no accesibles o no deterministas. Ejemplo (sin sensores; determinista, pero no accesible):

Formulacin de problemas, II

Si el entorno es no determinista (por ejemplo, La absorcin deposita algunas veces suciedad, pero slo cuando previamente no hay suciedad):
Si el entorno es accesible, para cada estado inicial, hay una secuencia fija de operadores que llevan al objetivo. Si el entorno es semiaccesible (por ejemplo, si tenemos un sensor de posicin y un sensor local del estado de suciedad):
entonces, no hay una secuencia fija que garantice una solucin a partir de cualquier estado: Estados (A=aspiradora, S=suciedad): (1, AS, S), (2, S, AS), (3, AS, ) (4, S, A), (5, A, S), (6, , AS) (7, A, ), (8, , A)

Formulacin de problemas, III

{1,3} --(absorcin)-->{5,7}--(derecha)--> {6,8}--(absorcin)-->{6,8} La solucin sera: absorcin, derecha, absorcin, absorcin si sucio. Es un rbol de posibles acciones (problema con contingencias). Posibles operadores para el estado inicial {1,3}:

L {1,3} L S {5,7} R {6,8} R S L R R S

L {2,4} S

{5,1,7,3} {.........}

Problemas bien definidos

Consideramos los problemas ms sencillos (problema de estado nico):


Estado inicial Espacio de estados. Posibles acciones (operadores) sobre cada estado.
Cada operador obtiene un estado a partir de otro estado.

Funcin objetivo (estados objetivo). Funcin de coste de aplicacin de los operadores.

Un problema de estados mltiples es un caso particular del caso de un problema de estado nico, en donde cada estado es un multiestado:
Estado inicial: multiestado Cada operador obtiene un multiestado a 6 partir de otro multiestado.

Ejemplos, I

Los objetivos de la resolucin de un problema mediante bsqueda son:


Encontrar una solucin La solucin debe tener coste total mnimo:
Coste de bsqueda: Tiempo y memoria necesarios. Coste del camino solucin.

Ejemplos:
Problema del 8-puzle.
Coste operadores: 1

Problema de las 8 reinas (en general de las N reinas/damas):


Coste operadores: 1 (el camino solucin siempre tiene coste 8). Posible representacin (1): estado: n reinas en el tablero operadores: aadir una reina a una posicin vaca. 7

Ejemplos, II
Posible representacin (2): estado: n reinas en el tablero (no atacndose). Operadores: aadir una reina en la columna vaca ms a la izquierda tal que no sea atacada por ninguna de las ya existentes. Menos operadores que en la representacin 1.

Criptoaritmtica.
FORTY + TEN TEN -----SIXTY

29786 + 850 850 -----31486

Estados: algunas letras sustituidas por dgitos. Operadores: sustituir una letra por un dgito que no aparece ya dentro del estado. La solucin se encuentra a profundidad conocida.

Ejemplos, III
Ejemplo de aspiradora.
Entorno accesible y determinista. Estados: 8. Operadores: L, R, S Estados objetivo: 7, 8 Coste: 1

Agente sin sensores (entorno no accesible, pero determinista) Estados: subconjuntos de los 8 Coste: 1 Estados objetivo: estados formados por una combinacin de 7,8.

Ejemplos, IV
Misioneros y canbales.
Hay 3 misioneros y 3 canbales en la orilla izquierda de un ro. Un bote puede transportar a 1 o 2 personas de una orilla a otra. Objetivo: pasar a todos a la otra orilla. Condicin: No puede ocurrir nunca que si en una orilla hay algn misionero, haya a la vez un nmero mayor de canbales (se los comeran). Estados: Parmetros: nmero misioneros lado izquierdo, nmero canbales lado izquierdo, posicin bote (izquierda o derecha). Se debe verificar la Condicin. Operadores: Transportar 1 misionero. Transportar 1 canibal. Transportar 2 misioneros. Transportar 2 canbales. Transportar 1 misionero y 1 canbal. Coste operador: 1. 10

Ejemplos, V

Otros ejemplos (ms reales):


Problema de mapa de carreteras.
Viajar de una ciudad a otra recorriendo la menor distancia posible.

Problema del viajante de comercio.


Un viajante debe viajar recorriendo un conjunto de ciudades. Debe partir de una ciudad inicial y, tras recorrer todas las ciudades, volver a la ciudad de inicio. Problema clsico: debe visitar exactamente 1 vez todas las ciudades (excepto la de inicio que la visita 2 veces).

Diseo de circuitos. Navegacin de robots. Montaje mecnico de robots. Planificacin de toma de imgenes (telescopio Hubble).

11

Algoritmo general de bsqueda, I

Problema del mapa de carreteras:


Espacio de estados (finito). rbol de nodos (infinito), generable.

Un nodo:
Un estado (del espacio de estados). Su nodo padre. Operador que lo gener. Profundidad en el rbol de bsqueda. Coste desde nodo inicial.

12

Algoritmo general de bsqueda, II

Algoritmo general de bsqueda (pseudo-C):


funcion bsqueda-general (problema, estrategia) returns una solucin o fallo { inicializa rbol de bsqueda con estado inicial loop { if no es posible expandir ninguna hoja, return fallo elige un nodo hoja a expandir, segn la estrategia if el nodo es objetivo, return la solucin else expande nodo y aade los nodos resultantes al rbol de bsqueda } }

Con ms detalle:
13

Estrategias de bsqueda ciega, I


Bsqueda ciega: sin informacin. Criterios:


Completitud (encuentra la solucin) Optimalidad (encuentra la mejor solucin) Complejidad espacial (memoria necesaria) Complejidad temporal (tiempo necesario)

Estrategias de bsqueda:
Hiptesis:
Todos los operadores tienen el mismo coste (por ejemplo 1). El factor de ramificacin es siempre finito. m=profundidad mxima del rbol de bsqueda d=profundidad de la mejor solucin b=factor de ramificacin

14

Estrategias de bsqueda ciega, II

Estrategias:
Bsqueda en anchura:
Completo y ptimo O(b d ) Complejidad espacial = Complejidad temporal = nmero de nodos expandidos =

1 b d 1 1 b b 2 ... b d O(b d ) 1 b
Para b=10, 1000 nodos/segundo, 100 bytes/nodo: prof. 2, 111 nodos, 0.1 seg., 11 Kb prof. 6, 1.000.000 nodos, 18 minutos, 111 Mb 12 prof. 12, 10 nodos, 35 aos, 111 Tb

15

Estrategias de bsqueda ciega, III


Bsqueda en profundidad:
No es ptimo Puede encontrar un camino peor No es completo Puede no acabar m Complejidad temporal = O(b ) Complejidad espacial = nmero de nodos necesarios = un camino hasta una hoja y los hermanos de cada nodo del camino =

O(bm)

16

Estrategias de bsqueda ciega, IV


Bsqueda limitada en profundidad: Se utiliza un lmite de profundidad (l)
No es ptimo Puede encontrar un camino peor No es completo, en general, aunque: s es completo cuando

l d
Complejidad temporal =

O (b )
Complejidad espacial = nmero de nodos necesarios = un camino hasta una hoja y los hermanos de cada nodo del camino =

O(bl )
17

Estrategias de bsqueda ciega,V


Bsqueda iterativa en profundidad:
Son bsquedas en profundidad con lmites: 0, 1, 2, 3, 4, ... Es ptimo y completo. Complejidad espacial = como en la bsqueda en profundidad:

O(bd )

Complejidad temporal = nmero total de expansiones (los nodos con profundidad de la mejor solucin se expanden 1 vez; los siguientes 2 veces, los siguientes 3 veces, ....) =

1b 2b
d

d 1 2

3b

d 2

....

(d 1)b db ( d 1)1 O (b )
d

Mtodo preferido cuando no se conoce la profundidad de la solucin. 18

Estrategias de bsqueda ciega,VI


Bsqueda bidireccional:
Buscar simultneamente desde estado inicial hasta objetivo y viceversa hasta que ambas bsquedas se encuentren. Optimo y completo. Complejidad espacial y temporal:

O(b 2 )
Problemas: Clculo de predecesores. Varios estados objetivo. Encontrar las bsquedas. Determinacin del tipo de bsqueda en cada direccin.

19

Estrategias de bsqueda ciega,VII

Los resultados anteriores pueden no verificarse cuando los costes de los arcos son variables. Bsqueda de coste uniforme:
Costes variables para los arcos

pero:

coste() k 0,
Para un nodo n, se define g(n)=coste desde nodo inicial. Se expande el nodo con menor valor de g. Completo y ptimo. Si todos los arcos tienen el mismo coste, se tiene bsqueda en anchura.
Si todos los arcos tienen el mismo coste 1, g(n)=profundidad(n)

Complejidad espacial y temporal = ~ ~ coste de mejor solucin d O(b ), d minimo valor costes

20

Estrategias de bsqueda ciega,VIII

Un resumen se puede ver en:

21

Eliminacin de estados repetidos, I

En ejemplos como para los m+1 estados:


A B C ........

su rbol de bsqueda contendra 2 ramas.

22

Eliminacin de estados repetidos, II

Para evitar que se repitan estados, se podran considerar tres mtodos:


1) No generar un nodo hijo de un nodo si los dos pertenecen al mismo estado. 2) Evitar ramas con ciclos (en un camino desde el nodo inicial, hay dos nodos que pertenecen el mismo estado).
El mtodo 2) incluye al 1)

3) Si al generar un nodo, su estado asociado, ya ha sido generado por otro nodo, eliminar el nodo peor (y sus descendientes) del rbol de bsqueda
El mtodo 3) incluye al 2) y, por tanto, al 1) Este mtodo es el ms caro (hay que mantener todos los nodos en memoria).

........

23

Problemas de satisfaccin de restriciones, I


Variables. Posibles valores en dominios (conjuntos finitos o infinitos). Restricciones


Eecuaciones (condiciones) entre las variables.

Ejemplos:
Problema 8 damas. Criptoaritmtica.

24

Problemas de satisfaccin de restriciones, II

Los problemas discretos (el dominio es finito) se pueden resolver utilizando bsqueda:
Estado inicial: todas las variables sin asignar. Profundidad mxima=nmero de variables=profundidad de todas las soluciones.
Se puede utilizar, por tanto, bsqueda en profundidad.

Cardinal espacio bsqueda=producto de cardinales de los dominios de las variables. Se pueden hacer:
Eliminacin de ramas en donde alguna restriccin no se satisface (y se hace backtracking) Propagacin de restricciones, para reducir los posibles valores de las variables por asignar. 25

Ejemplo, I

El problema del 8-puzle se podra representar en LISP.

;;; EJEMPLO DE REPRESENTACION DE UN PROBLEMA (sin variables) (setf *estado0* '((0 1) (1 2) (2 3) (3 4) (4 NIL) (5 5) (6 6) (7 7) (8 8))) (setf *problema-8-puzle* '(:8-puzle (:estado-inicial *estado0*) (:operadores (:mueve-arriba (:accion #'mueve-arriba)) (:mueve-abajo (:accion #'mueve-abajo)) (:mueve-izquierda (:accion #'mueve-izquierda)) (:mueve-derecha (:accion #'mueve-derecha))) (:estados-objetivo #'reconoce)))

26

Ejemplo, II
(defun reconoce (estado) (equal estado '((0 1) (1 2) (2 3) (3 4) (4 8) (5 5) (6 6) (7 7) (8 NIL)))) (defun posible-mover-arriba-p (estado) (let ((posicion (posicion NIL estado))) (not (member posicion '(0 1 2))))) (defun posible-mover-abajo-p (estado) (let ((posicion (posicion NIL estado))) (not (member posicion '(6 7 8))))) (defun posible-mover-izquierda-p (estado) (let ((posicion (posicion NIL estado))) (not (member posicion '(0 3 6))))) (defun posible-mover-derecha-p (estado) (let ((posicion (posicion NIL estado))) (not (member posicion '(2 5 8)))))

27

Ejemplo, III
(defun mueve-arriba (estado) (if (posible-mover-arriba-p estado) (let* ((nuevo-estado (copy-tree estado)) (posicion-vacia (posicion NIL nuevo-estado)) (posicion-arriba (- posicion-vacia 3)) (ficha-arriba (ficha posicion-arriba nuevo-estado))) (coloca posicion-arriba NIL nuevo-estado) (coloca posicion-vacia ficha-arriba nuevo-estado) nuevo-estado))) ;;; Anlogos mueve-abajo, mueve-izquierda ;;; y mueve-derecha

28

Ejemplo, IV
(defun posicion (ficha estado) (first (first (member ficha estado :test #'(lambda (x y) (eql x (second y))))))) (defun coloca (posicion ficha estado) (setf (second (nth posicion estado)) ficha)) (defun ficha (posicion estado) (second (nth posicion estado)))

29

Ejemplo, V
;;; EJEMPLO DE REPRESENTACION DE UN ;;; PROBLEMA (con variables) (setf *estado0* '((0 1) (1 2) (2 3) (3 4) (4 NIL) (5 5) (6 6) (7 7) (8 8))) (setf *problema-8-puzle* '(:8-puzle (:estado-inicial *estado0*) (:operadores (:mueve (:variables (direccion '(arriba abajo derecha izquierda))) (:accion #'mueve))) (:estados-objetivo #'reconoce)))

30

Ejemplo, VI
(defun reconoce (estado) (equal estado '((0 1) (1 2) (2 3) (3 4) (4 8) (5 5) (6 6) (7 7) (8 NIL)))) (defun posible-mover-p (direccion estado) (cond ((eql direccion 'arriba) (posible-mover-arriba-p estado)) ((eql direccion 'abajo) (posible-mover-abajo-p estado)) ((eql direccion 'izquierda) (posible-mover-izquierda-p estado)) ((eql direccion 'derecha) (posible-mover-derecha-p estado)))) (defun posible-mover-arriba-p (estado) (let ((posicion (posicion NIL estado))) (not (member posicion '(0 1 2))))) ;;; Anlogo para posible-mover-abajo-p, ;;; posible-mover-izquierda-p y posible31 mover-derecha-p

Ejemplo, VII
(defun mueve (direccion estado) (if (posible-mover-p direccion estado) (let* ((nuevo-estado (copy-tree estado)) (posicion-vacia (posicion NIL nuevo-estado)) (posicion-nueva (nueva-posicion direccion posicion-vacia)) (ficha-nueva (ficha posicion-nueva nuevo-estado))) (coloca posicion-nueva NIL nuevo-estado) (coloca posicion-vacia ficha-nueva nuevo-estado) nuevo-estado))) 32

Ejemplo, VIII
(defun nueva-posicion (direccion posicion-vacia) (cond ((eql direccion 'arriba) (- posicion-vacia 3)) ((eql direccion 'abajo) (+ posicion-vacia 3)) ((eql direccion 'izquierda) (- posicion-vacia 1)) ((eql direccion 'derecha) (+ posicion-vacia 1)))) (defun posicion (ficha estado) (first (first (member ficha estado :test #'(lambda (x y) (eql x (second y)))))))

33

Ejemplo, IX
(defun coloca (posicion ficha estado) (setf (second (nth posicion estado)) ficha))

(defun ficha (posicion estado) (second (nth posicion estado)))


;;; REPRESENTACION CON ESTRUCTURAS DE LISP (defstruct problema nombre estado-inicial operadores test-objetivo)

(defstruct operador nombre accion (variables nil))


34

Ejemplo, X
(setf *operadores* (list (make-operador :nombre 'mueve-arriba :accion #'mueve-arriba) (make-operador :nombre 'mueve-abajo :accion #'mueve-abajo) (make-operador :nombre 'mueve-derecha :accion #'mueve-derecha) (make-operador :nombre 'mueve-izquierda :accion #'mueve-izquierda)))

(setf *problema-8-puzle* (make-problema :nombre '8-puzle :estado-inicial *estado0* :operadores *operadores* :estados-objetivo #'reconoce))

35

Ejemplo, I

Realizar bsqueda en anchura (suponemos costes=1):


A B C F

D G E

Estado inicial: A; estados objetivo = {G}

36

Ejemplo, II

Solucin (eliminando estados repetidos)


A 1 2 B 5 D E 3 C 4 F

7
G

Estado inicial: A; estados objetivo = {G}

37

Otros ejemplos

Problema del viajante de comercio. Anlisis sintctico. Otros de la hoja 3 de problemas:


Localizacin de una moneda falsa. Reconocimiento de cadenas de caracteres para una expresin regular. etc

38

Вам также может понравиться