Está en la página 1de 31

Bsqueda general de soluciones

Bsqueda no informada

Tema 3: Tcnicas bsicas de bsqueda para


la resolucin de problemas
Jos Luis Ruiz Reina
Jos Antonio Alonso
Franciso J. Martn Mateos
Departamento de Ciencias de la Computacin e Inteligencia Artificial
Universidad de Sevilla

Inteligencia Artificial I, 2012

Bsqueda general de soluciones

Bsqueda no informada

ndice

Bsqueda general de soluciones

Bsqueda no informada

Bsqueda general de soluciones

Bsqueda no informada

Recordar: mtodo de solucin de problemas


ABSTRACCION

Problema

Expresion
como espacio
de estados

Solucion
INTERPRETACION

Aplicacion de al
goritmos de bus
queda de solucion

Implementacion
en un lenguaje
de programacion

Bsqueda general de soluciones

Bsqueda no informada

Bsqueda de soluciones en espacios de estados


Objetivo: encontrar una secuencia de operadores que,

partiendo del estado inicial, obtenga un estado final


Idea bsica: exploracin del grafo del espacio de estados
En cada momento se analiza un estado actual (en un

principio, el inicial)
Si el estado actual es final, acabar (recopilando la sucesin

de operadores)
En caso contrario, obtener los sucesores del estado actual

(expandir)
Elegir un nuevo estado actual, dejando los restantes para

analizarlos posteriormente (si fuera necesario)


Repetir el proceso mientras haya estados por analizar

La eleccin del estado actual en cada momento determina

una estrategia de bsqueda

Bsqueda general de soluciones

Bsqueda no informada

rboles de bsqueda

El proceso anterior puede verse como la construccin

incremental de un rbol de bsqueda


Ejemplo en el problema de las jarras:
(0 0)

(4 0)
(4 3)

(0 3)
(1 3)

(3 0)

(1 0)

(3 3)

Bsqueda general de soluciones

Bsqueda no informada

rboles de bsqueda
Nodo de un rbol de bsqueda, componentes:
Estado
Secuencia de operadores que conducen al estado desde el

inicial (camino)
Nodo raz del rbol de bsqueda: estado inicial +

secuencia vaca
Nodos hoja del rbol de bsqueda:
Nodos cuya expansin no ha producido sucesores nuevos
Nodos pendientes de considerar (y expandir en su caso)

Diferencias entre el espacio de estados y el rbol de

bsqueda:
Arbol vs. grafo
Nodos del rbol de bsqueda: estado + camino
El rbol de bsqueda se construye incrementalmente y

refleja un proceso de bsqueda sobre el grafo del espacio


de estados

Bsqueda general de soluciones

Bsqueda no informada

Recordar: implementacin de un problema de espacio


de estados
Eleccin de una representacin (estructura de datos):
para los estados
para los operadores

La implementacin de un problema como espacio de

estados consta de:

Una variable global *ESTADO-INICIAL*


Una funcin ES-ESTADO-FINAL(ESTADO)
Una variable global *OPERADORES*.
Una funcin APLICA(OPERADOR,ESTADO)

La funcin APLICA(OPERADOR,ESTADO):
Devuelve NO-APLICABLE si OPERADOR no es aplicable a
ESTADO
En caso contrario, devuelve el estado resultante de aplicar
OPERADOR a ESTADO

Bsqueda general de soluciones

Bsqueda no informada

Implementacin de la bsqueda (funciones auxiliares)


Nodo de bsqueda: estado + camino
Funciones de acceso: ESTADO(NODO) y CAMINO(NODO)

Sucesores de un nodo:
FUNCION SUCESOR(NODO,OPERADOR)
1. Hacer ESTADO-SUCESOR igual a APLICA(OPERADOR,ESTADO(NODO))
2. Si ESTADO-SUCESOR=NO-APLICABLE
devolver NO-APLICABLE
en caso contrario,
devolver un nodo cuyo estado es ESTADO-SUCESOR y cuyo camino
es el resultado de aadir OPERADOR a CAMINO(NODO)
FUNCION SUCESORES(NODO)
1. Hacer SUCESORES vaco
2. Para cada OPERADOR en *OPERADORES*,
si SUCESOR(NODO,OPERADOR) =/= NO-APLICABLE,
incluir SUCESOR(NODO,OPERADOR) en SUCESORES
3. Devolver SUCESORES

Bsqueda general de soluciones

Bsqueda no informada

Implementacin de un procedimiento general de


bsqueda

FUNCION BUSQUEDA-GENERAL()
1. Hacer ABIERTOS la "cola" formada por el nodo inicial (es decir,
el nodo cuyo estado es *ESTADO-INICIAL* y cuyo camino es vaco);
Hacer CERRADOS vaco
2. Mientras que ABIERTOS no est vaca,
2.1 Hacer ACTUAL el primer nodo de ABIERTOS
2.2 Hacer ABIERTOS el resto de ABIERTOS
2.3 Poner el nodo ACTUAL en CERRADOS.
2.4 Si ES-ESTADO-FINAL(ESTADO(ACTUAL)),
2.4.1 devolver el nodo ACTUAL y terminar.
2.4.2 en caso contrario,
2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos
de SUCESORES(ACTUAL) cuyo estado no est
ni en ABIERTOS ni en CERRADOS
2.4.2.2 Hacer ABIERTOS igual a
GESTIONA-COLA(ABIERTOS,NUEVOS SUCESORES)
3. Devolver FALLO.

Bsqueda general de soluciones

Bsqueda no informada

Procedimiento general de bsqueda: comentarios


La implementacin anterior es independiente del problema
ABIERTOS puede verse como una cola en la que esperan

los nodos para ser analizados


CERRADOS contiene los nodos ya analizados:
Permite no iniciar la bsqueda en estados analizados
En particular, nos permite evitar ciclos en el proceso de

bsqueda
En determinados problemas es prescindible

GESTIONA-COLA(ABIERTOS,NUEVOS SUCESORES):
Aade NUEVOS-SUCESORES a ABIERTOS, reordenando

segn algn criterio concreto


Distintas concreciones de esta funcin dan lugar a distintos

algoritmos de bsqueda (estrategias de bsqueda)


Bsqueda no informada o ciega vs. bsqueda informada

Bsqueda general de soluciones

Bsqueda no informada

Propiedades a estudiar de los algoritmos de bsqueda

Completitud: si existe solucin, la encuentra?


Solucin ptima o mnima: obtiene la solucin de menor

nmero de pasos o de menor coste?


Complejidad en tiempo: cunto se tarda en encontrar una

solucin?
Complejidad en espacio: cunta memoria necesitamos?

Bsqueda general de soluciones

Bsqueda no informada

Observaciones sobre la complejidad

Siempre en notacin O, considerando el peor caso


En funcin del tamao del problema de entrada: r (factor

de ramificacin), p (mnima profundidad de una solucin) y


m (profundidad mxima en el rbol de bsqueda)
Complejidad en tiempo: nmero de nodos analizados
Complejidad en espacio: tamao mximo de ABIERTOS (y
CERRADOS)

durante el proceso de bsqueda

Bsqueda general de soluciones

Bsqueda no informada

Implementacin de la bsqueda en anchura


En la bsqueda en anchura, ABIERTOS se gestiona como

una cola (FIFO):


FUNCION BUSQUEDA-EN-ANCHURA()
1. Hacer ABIERTOS la cola formada por el nodo inicial (el nodo
cuyo estado es *ESTADO-INICIAL* y cuyo camino es vaco)
Hacer CERRADOS vaco
2. Mientras que ABIERTOS no est vaca,
2.1 Hacer ACTUAL el primer nodo de ABIERTOS
2.2 Hacer ABIERTOS el resto de ABIERTOS
2.3 Poner el nodo ACTUAL en CERRADOS.
2.4 Si ES-ESTADO-FINAL(ESTADO(ACTUAL)),
2.4.1 devolver el nodo ACTUAL y terminar.
2.4.2 en caso contrario,
2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos
de SUCESORES(ACTUAL) cuyo estado no est
ni en ABIERTOS ni en CERRADOS
2.4.2.2 Hacer ABIERTOS el resultado de incluir
NUEVOS-SUCESORES al final de ABIERTOS
3. Devolver FALLO.

Bsqueda general de soluciones

Bsqueda no informada

Bsqueda en anchura
Arbol de bsqueda en anchura en el problema de las

jarras:
(0 0) 1

(4 0) 2
(4 3) 4

(0 3) 3
(1 3) 5

(3 0) 6

(1 0) 7

(3 3) 8

(0 1) 9

(4 2) 10

(4 1) 11

(0 2) 12

(2 3) 13

(2 0)

Bsqueda general de soluciones

Bsqueda no informada

Bsqueda en anchura
Bsqueda en anchura para el problema de las jarras:
Nodo

Actual

Sucesores

1
2
3
4
5
6
7
8
9
10
11
12
13

(0 0)
(4 0)
(0 3)
(4 3)
(1 3)
(3 0)
(1 0)
(3 3)
(0 1)
(4 2)
(4 1)
(0 2)
(2 3)

((4 0) (0 3))
((4 3) (1 3))
((3 0))
()
((1 0))
((3 3))
((0 1))
((4 2))
((4 1))
((0 2))
((2 3))
((2 0))

Abiertos
((0 0))
((4 0) (0 3))
((0 3) (4 3) (1 3))
((4 3) (1 3) (3 0))
((1 3) (3 0))
((3 0) (1 0))
((1 0) (3 3))
((3 3) (0 1))
((0 1) (4 2))
((4 2) (4 1))
((4 1) (0 2))
((0 2) (2 3))
((2 3) (2 0))

Bsqueda general de soluciones

Bsqueda no informada

Propiedades de la bsqueda en anchura

Complejidad en tiempo O(r p ), donde:


r : factor de ramificacin.
p: profundidad de la solucin ms corta.
Complejidad en espacio O(r p ).
Es completa.
Obtiene una solucin con el mnimo nmero de

operadores.

Bsqueda general de soluciones

Bsqueda no informada

Limitaciones de la bsqueda en anchura


Tiempo y espacio exponenciales, la hace muchas veces

inasumible en la prctica
Suponiendo ramificacin 10, 106 nodos por seg. y 1000

bytes por nodo:


Profundidad
2
4
6
8
10
12
14
16

Nodos
110
11110
106
108
1010
1012
1014
1016

Tiempo
0.11 ms.
11 ms.
1.1 s.
2 min.
3 horas
13 das
3.5 aos
350 aos

Espacio
107 Kb
10.6 Mb
1 Gb
103 Gb
10 Tb
1 Pb
99 Pb
10 Eb

Bsqueda general de soluciones

Bsqueda no informada

Implementacin de la bsqueda en profundidad


Bsqueda en profundidad, ABIERTOS se gestiona como una

pila (LIFO):
FUNCION BUSQUEDA-EN-PROFUNDIDAD()
1. Hacer ABIERTOS la pila formada por el nodo inicial (el nodo
cuyo estado es *ESTADO-INICIAL* y cuyo camino es vaco)
Hacer CERRADOS vaco
2. Mientras que ABIERTOS no est vaca,
2.1 Hacer ACTUAL el primer nodo de ABIERTOS
2.2 Hacer ABIERTOS el resto de ABIERTOS
2.3 Poner el nodo ACTUAL en CERRADOS.
2.4 Si ES-ESTADO-FINAL(ESTADO(ACTUAL)),
2.4.1 devolver el nodo ACTUAL y terminar.
2.4.2 en caso contrario,
2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos
de SUCESORES(ACTUAL) cuyo estado no est
ni en ABIERTOS ni en CERRADOS
2.4.2.2 Hacer ABIERTOS el resultado de incluir
NUEVOS-SUCESORES al principio de ABIERTOS
3. Devolver FALLO.

Bsqueda general de soluciones

Bsqueda no informada

Bsqueda en profundidad
Arbol de bsqueda en profundidad para el problema de las

jarras:
(0 0) 1

(4 0) 2
(4 3) 3

(0 3)
(1 3) 4
(1 0) 5

(0 1) 6

(4 1) 7

(2 3) 8

Bsqueda general de soluciones

Bsqueda no informada

Bsqueda en profundidad
Tabla de bsqueda en profundidad para el problema de las

jarras:
Nodo
1
2
3
4
5
6
7
8

Actual

Sucesores

(0 0)
(4 0)
(4 3)
(1 3)
(1 0)
(0 1)
(4 1)
(2 3)

((4 0) (0 3))
((4 3) (1 3))
()
((1 0))
((0 1))
((4 1))
((2 3))

Abiertos
((0 0))
((4 0) (0 3))
((4 3) (1 3) (0 3))
((1 3) (0 3))
((1 0) (0 3))
((0 1) (0 3))
((4 1) (0 3))
((2 3) (0 3))

Bsqueda general de soluciones

Bsqueda no informada

Propiedades de la bsqueda en profundidad

No es completa (puede no terminar)


S lo es en espacios finitos

Cuando termina, no necesariamente obtiene una solucin

mnima.
Complejidad en tiempo O(r m ), donde:
r : factor de ramificacin.
m: mxima profundidad de la bsqueda.

Complejidad en espacio:
en la implementacin dada anteriormente (que usa la lista
de CERRADOS), O(r m )

Bsqueda general de soluciones

Bsqueda no informada

Observaciones sobre la complejidad en espacio


En la implementacin que se ha dado:
El mximo tamao de la lista de ABIERTOS es O(r m)
La complejidad exponencial la introduce la lista de
CERRADOS
Deteccin de ciclos en la bsqueda:
En algunos espacios de estados no hay posibilidad de

caminos cclicos (y por tanto no se necesita la lista de


CERRADOS para detectar ciclos)
En general, para detectar ciclos slo es necesario
almacenar los nodos de la rama que se est explorando en
cada momento
Es decir, es sencillo implementar una bsqueda en
profundidad que, an detectando ciclos, tiene complejidad
espacial O(r m)
Por tanto, en general consideraremos que la bsqueda en

profundidad tiene complejidad espacial O(r m)

Bsqueda general de soluciones

Bsqueda no informada

Bsqueda en profundidad acotada

Podemos paliar en cierto modo la incompletitud de la

bsqueda en profundidad
Idea: no explorar caminos ms all de una determinada

longitud.
Problema: tampoco es completa, si la cota es menor de la

longitud de la solucin ms corta


Aunque en muchos casos se puede conocer de antemano

una cota adecuada.

Bsqueda general de soluciones

Bsqueda no informada

Implementacin de la bsqueda en profundidad


acotada
FUNCION BUSQUEDA-EN-PROFUNDIDAD-ACOTADA(COTA)
1. Hacer ABIERTOS la pila formada por el nodo inicial (el nodo
cuyo estado es *ESTADO-INICIAL* y cuyo camino es vaco);
Hacer CERRADOS vaco
2. Mientras que ABIERTOS no est vaca,
2.1 Hacer ACTUAL el primer nodo de ABIERTOS
2.2 Hacer ABIERTOS el resto de ABIERTOS
2.3 Poner el nodo ACTUAL en CERRADOS.
2.4 Si ES-ESTADO-FINAL(ESTADO(ACTUAL)),
2.4.1 devolver el nodo ACTUAL y terminar.
2.4.2 en caso contrario, si la profundidad del ACTUAL
es menor que la cota,
2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos
de SUCESORES(ACTUAL) cuyo estado no est
ni en ABIERTOS ni en CERRADOS
2.4.2.2 Hacer ABIERTOS el resultado de incluir
NUEVOS-SUCESORES al principio de ABIERTOS
3. Devolver FALLO.

Bsqueda general de soluciones

Bsqueda no informada

Propiedades de la bsqueda en profundidad acotada


Complejidad en tiempo O(r c ), donde:
r : factor de ramificacin
c: cota de la profundidad

Complejidad en espacio: O(rc)


En general, no es completa
Si la cota es demasiado pequea
Incluso si la cota se toma mayor que la longitud de una

solucin, la implementacin anterior podra no encontrar


solucin, debido a CERRADOS
La versin que no usa CERRADOS s es completa cuando la
cota es mayor que la profundidad de una solucin
No necesariamente obtiene una solucin mnima

Bsqueda general de soluciones

Bsqueda no informada

Bsqueda en profundidad iterativa

Cuando no se conoce la cota, una opcin para evitar la

incompletitud es realizar bsquedas acotadas,


incrementando la cota gradualmente
Implementacin de la bsqueda en profundidad iterativa
FUNCION BUSQUEDA-EN-PROFUNDIDAD-ITERATIVA(COTA-INICIAL)
1. Hacer N=COTA-INICIAL
2. Si BUSQUEDA-EN-PROFUNDIDAD-ACOTADA(N) no devuelve fallo,
2.1 devolver su resultado y terminar.
2.2 en caso contrario, hacer N igual a N+1 y volver a 2

Bsqueda general de soluciones

Bsqueda no informada

Bsqueda en profundidad iterativa


Arbol de bsqueda en profundidad iterativa (problema de

las jarras):
(0 0) 1,2,5,11,19,29,41

(4 0) 3,6,12,20,30,42

(0 3) 4,9,16,25,36

(4 3) 7,13,21,31,43 (1 3) 8,14,22,32,44 (3 0) 10,17,26,37


(1 0) 15,23,33,45

(3 3) 18,27,38

(0 1) 24,34,46

(4 2)

(4 1) 35,47

(0 2) 40

(2 3) 48

(2 0)

28,39

Bsqueda general de soluciones

Bsqueda no informada

Propiedades de la bsqueda en profundidad iterativa

Complejidad en tiempo O(r p ), donde:


r : factor de ramificacin.
p: profundidad de solucin.
Complejidad en espacio, O(rp).
Es completa
Obtiene una solucin con el mnimo nmero de

operadores (en la versin que no usa CERRADOS)

Bsqueda general de soluciones

Bsqueda no informada

Propiedades de la bsqueda en profundidad iterativa


La bsqueda iterativa es el mtodo preferido si el espacio

de bsqueda es grande y no se conoce la profundidad de


la solucin
La redundancia en la expansin queda compensada con la
completitud
Adems, la redundancia no es significativa
Ejemplo, r = 10 y p = 5:
Bsqueda acotada, nodos analizados:

1 + 10 + 100 + 1000 + 10000 + 100000 = 111111


Bsqueda iterativa, nodos analizados:

1 + 11 + 111 + 1111 + 11111 + 111111 = 123456


Tan slo un 10 % ms
Razn: la mayora de los nodos estn en el ltimo nivel del

rbol

Bsqueda general de soluciones

Bsqueda no informada

Comparacin de procedimientos

Tiempo
Espacio
Completa
Mnima

Anchura

Profundidad

O(r p )
O(r p )
S
S

O(r m )
O(rm)
No
No

Profundidad
acotada
O(r c )
O(rc)
S, si c >= p
No

r : factor de ramificacin.
p: profundidad de la solucin.
m: mxima profundidad de la bsqueda.
c: cota de la profundidad.

Profundidad
iterativa
O(r p )
O(rp)
S
S

Bsqueda general de soluciones

Bsqueda no informada

Bibliografa
Russell, S. y Norvig, P. Inteligencia artificial: Un enfoque

moderno (segunda edicin) (Prentice Hall, 2004).


Cap. 3: Solucin de problemas mediante bsqueda

Russell, S. y Norvig, P. Artificial Intelligence (A Modern

Approach) (PrenticeHall, 2010). Third Edition


Cap. 3: Solving problems by searching.

Luger, G.F. Artificial Intelligence (Structures and Strategies

for Complex Problem Solving (4 edition) (AddisonWesley,


2002)
Cap. 3: Structure and strategies for state space search
Nilsson, N.J. Inteligencia artificial (Una nueva sntesis)

(McGrawHill, 2001)]
Cap. 8: Bsqueda a ciegas
Poole, D.; Mackworth, A. y Goebel, R. Computational

Intelligence (A Logical Approach) (Oxford University Press,


1998).
Cap. 4: Searching

También podría gustarte