47
Tema 2: T ´ ecnicas b ´ asicas de b ´ usqueda Jos ´ e A. Alonso Jim ´ enez Carmen Graciani D´ ıaz Francisco Jes ´ us Mart´ ın Mateos Jos ´ e Luis Ruiz Reina Dpto. Ciencias de la Computaci ´ on e Inteligencia Artificial UNIVERSIDAD DE S EVILLA IIA 2004-05 C c I a T ´ ecnicas b ´ asicas de b ´ usqueda 2.1

Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Tema 2: Tecnicas basicas de busqueda

Jose A. Alonso Jimenez

Carmen Graciani Dıaz

Francisco Jesus Martın Mateos

Jose Luis Ruiz Reina

Dpto. Ciencias de la Computacion e Inteligencia Artificial

UNIVERSIDAD DE SEVILLA

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.1

Page 2: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda de soluciones

• Objetivo: encontrar una secuencia de operadores que, partiendo delestado inicial, obtenga un estado final.

• Idea básica: exploración del grafo del espacio de estados.

• En cada momento se analiza un estado actual (en un principio, elinicial).

• Si el estado actual es final, acabar (recopilando la sucesión deoperadores).

• En caso contrario, obtener los sucesores del estado actual (expandir).

• Elegir un nuevo estado actual, dejando los restantes para analizarlosposteriormente (si fuera necesario).

• Repetir el proceso mientras haya estados por analizar.

• La elección del estado actual en cada momento determina una estrategiade búsqueda.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.2

Page 3: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Árboles de búsqueda

• El proceso anterior puede verse como la construcción incremental de unárbol de búsqueda.

• Ejemplo en el problema de las jarras:

(0 0)

(4 3)

(1 0)

(1 3) (3 0)

(3 3)

(4 0) (0 3)

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.3

Page 4: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Árboles de búsqueda

• Nodo de un árbol de búsqueda, componentes:

• Estado.

• Secuencia de operadores que conducen al estado desde el inicial(camino)

• Nodo raíz del árbol de búsqueda: estado inicial + secuencia vacía.

• Nodos hoja del árbol de búsqueda:

• Nodos cuya expansión no ha producido sucesores nuevos

• Nodos pendientes de considerar (y expandir en su caso)

• Diferencias entre el espacio de estados y el árbol de búsqueda:

• Árbol vs. grafo.

• Nodos del árbol de búsqueda: estado + camino.

• El árbol de búsqueda se construye incrementalmente y refleja unproceso de búsqueda sobre el grafo del espacio de estados.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.4

Page 5: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Implementación de un problema

• Elección de una representación (estructura de datos):

• para los estados

• para los operadores

• La implementación de un problema como espacio de estados consta de:

• Una variable global *ESTADO-INICIAL*

• Una función ES-ESTADO-FINAL(ESTADO)

• Una variable global *OPERADORES*

• Una función APLICA(OPERADOR, ESTADO)

• La función APLICA(ESTADO,OPERADOR):

• Devuelve NO-APLICABLE si OPERADOR no es aplicable a ESTADO.

• En caso contrario, devuelve el estado resultante de aplicar OPERADORa ESTADO.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.5

Page 6: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Funciones auxiliares

• Nodo de búsqueda: 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(ESTADO(NODO),OPERADOR)

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 anadir OPERADOR a CAMINO(NODO)

FUNCION SUCESORES(NODO)

1. Hacer SUCESORES vacıo

2. Para cada OPERADOR en *OPERADORES*,

si SUCESOR(NODO,OPERADOR) =/= NO-APLICABLE,

incluir SUCESOR(NODO,OPERADOR) en SUCESORES

3. Devolver SUCESORES

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.6

Page 7: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Procedimiento general de búsqueda

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 vacıo);

Hacer CERRADOS vacıo

2. Mientras que ABIERTOS no este vacıa,

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 esta ni en ABIERTOS ni en CERRADOS

2.4.2.2 Hacer ABIERTOS igual a GESTIONA-COLA(ABIERTOS,NUEVOS SUCESORES)

3. Devolver FALLO.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.7

Page 8: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Procedimiento general de búsqueda

• La implementación anterior es independiente del problema.

• ABIERTOS puede verse como una “cola” en la que esperan los nodospara ser analizados.

• CERRADOS contiene los nodos ya analizados.

• Nos permite evitar ciclos en el proceso de búsqueda.

• En determinados problemas es prescindible.

• La función GESTIONA-COLA(ABIERTOS,NUEVOS SUCESORES):

• Añade NUEVOS-SUCESORES a ABIERTOS, reordenando según algúncriterio concreto.

• Distintas concreciones de esta función dan lugar a distintos algoritmos debúsqueda (estrategias de búsqueda).

• Búsqueda no informada o ciega vs. búsqueda informada.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.8

Page 9: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Propiedades de los algoritmos de búsqueda

• Propiedades a estudiar sobre los algoritmos de búsqueda:

• Completitud: si existe solución, ¿la encuentra?

• Optimalidad o minimalidad de la solución: ¿obtiene la solución demenor número de pasos o de menor coste?

• Complejidad en tiempo: ¿cuánto se tarda en encontrar una solución?

• Complejidad en espacio: ¿cuánta memoria necesitamos?

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.9

Page 10: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda en anchura

• Árbol de búsqueda en anchura en el problema de las jarras:

(0 0) 1

(4 3) 4 5

(1 0) 7

(0 1) 9

(4 1) 11

(2 3) 13

(1 3) (3 0) 6

(3 3) 8

(4 2)

(0 2) 12

(2 0)

10

(4 0) 2 (0 3) 3

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.10

Page 11: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda en anchura

• Tabla de búsqueda en anchura para el problema de las jarras:

Nodo Actual Sucesores Abiertos

((0 0))

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

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

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

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

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

6 (3 0) ((3 3)) ((1 0) (3 3))

7 (1 0) ((0 1)) ((3 3) (0 1))

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

9 (0 1) ((4 1)) ((4 2) (4 1))

10 (4 2) ((0 2)) ((4 1) (0 2))

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

12 (0 2) ((2 0)) ((2 3) (2 0))

13 (2 3)

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.11

Page 12: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda en anchura

• ABIERTOS se gestiona como una cola (FIFO):

FUNCION BUSQUEDA-EN-ANCHURA()

1. Hacer ABIERTOS la cola formada por el nodo inicial (es decir, el nodo

cuyo estado es *ESTADO-INICIAL* y cuyo camino es vacıo);

Hacer CERRADOS vacıo

2. Mientras que ABIERTOS no este vacıa,

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 esta 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.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.12

Page 13: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Soluciones: Búsqueda en anchura

• Problema de las jarras:

> (load "p-jarras-1.lsp")

T

> (load "b-anchura.lsp")

T

> (busqueda-en-anchura)

#S(NODO :ESTADO (2 3)

:CAMINO (LLENAR-JARRA-3-CON-JARRA-4

LLENAR-JARRA-4

VACIAR-JARRA-4-EN-JARRA-3

VACIAR-JARRA-3

LLENAR-JARRA-3-CON-JARRA-4

LLENAR-JARRA-4))

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.13

Page 14: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Soluciones: Búsqueda en anchura

> (trace es-estado-final)

> (busqueda-en-anchura)

1. Trace: (ES-ESTADO-FINAL ’(0 0))

1. Trace: (ES-ESTADO-FINAL ’(4 0))

1. Trace: (ES-ESTADO-FINAL ’(0 3))

1. Trace: (ES-ESTADO-FINAL ’(4 3))

1. Trace: (ES-ESTADO-FINAL ’(1 3))

1. Trace: (ES-ESTADO-FINAL ’(3 0))

1. Trace: (ES-ESTADO-FINAL ’(1 0))

1. Trace: (ES-ESTADO-FINAL ’(3 3))

1. Trace: (ES-ESTADO-FINAL ’(0 1))

1. Trace: (ES-ESTADO-FINAL ’(4 2))

1. Trace: (ES-ESTADO-FINAL ’(4 1))

1. Trace: (ES-ESTADO-FINAL ’(0 2))

1. Trace: (ES-ESTADO-FINAL ’(2 3))

> (untrace)

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.14

Page 15: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Soluciones: Búsqueda en anchura

> (time (busqueda-en-anchura))

Real time: 0.416386 sec.

Run time: 0.41 sec.

Space: 7236 Bytes

#S(NODO :ESTADO (2 3)

:CAMINO (LLENAR-JARRA-3-CON-JARRA-4

LLENAR-JARRA-4

VACIAR-JARRA-4-EN-JARRA-3

VACIAR-JARRA-3

LLENAR-JARRA-3-CON-JARRA-4

LLENAR-JARRA-4))

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.15

Page 16: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Soluciones: Búsqueda en anchura

• Estadística de búsqueda en anchura:

Tiempo Espacio Nodos Máximo en Profundidad

(seg.) (bytes) analizados abiertos máxima

Viaje 0.18 3.260 8 4 3

Granjero 0.18 3.432 10 2 7

Jarras 0.41 7.236 13 3 6

8-puzle 4.51 68.292 46 33 5

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.16

Page 17: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Propiedades: Búsqueda en anchura

• Complejidad:

• r: factor de ramificación.

• p: profundidad de la solución.

• Complejidad en tiempo: O(rp).

• Complejidad en espacio: O(rp).

• Es completa.

• Es minimal.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.17

Page 18: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Limitaciones: Búsqueda en anchura

> (load "p-8-puzle.lsp")

T

> (load "b-anchura.lsp")

T

> (setf *estado-inicial*

(make-array ’(3 3)

:initial-contents ’((4 8 1) (3 H 2) (7 6 5))))

#2A((4 8 1) (3 H 2) (7 6 5))

> (time (busqueda-en-anchura))

** - EVAL: User break

Real time: 100.43055 sec.

Run time: 96.08 sec.

Space: 1457680 Bytes

GC: 3, GC time: 0.47 sec.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.18

Page 19: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Limitaciones de la búsqueda en anchura

• Tiempo y espacio exponenciales.

• Suponiendo ramificación 10, 1000 nodos por seg. y 100 bytes por nodo

Profundidad Nodos Tiempo Espacio

0 1 1 ms. 100 b

2 111 0.1 seg. 11 Kb

4 11111 11 seg. 1 Mb

6 106 18 min. 11 Mb

8 108 31 horas 11 Gb

10 1010 128 días 1 Tb

12 1012 33 años 11 Tb

14 1014 3500 años 11.111 Tb

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.19

Page 20: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda en profundidad

• Árbol de búsqueda en profundidad para el problema de las jarras:

(0 0) 1

(4 3)

(1 0)

(0 1)

(4 1)

(2 3)

(1 3)

(4 0) 2 (0 3)

3 4

6

7

8

5

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.20

Page 21: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda en profundidad

• Tabla de búsqueda en profundidad para el problema de las jarras:

Nodo Actual Sucesores Abiertos

((0 0))

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

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

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

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

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

6 (0 1) ((4 1)) ((4 1) (0 3))

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

8 (2 3)

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.21

Page 22: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda en profundidad

• ABIERTOS se gestiona como una pila (LIFO):

FUNCION BUSQUEDA-EN-PROFUNDIDAD()

1. Hacer ABIERTOS la pila formada por el nodo inicial (es decir, el nodo

cuyo estado es *ESTADO-INICIAL* y cuyo camino es vacıo);

Hacer CERRADOS vacıo

2. Mientras que ABIERTOS no este vacıa,

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 esta 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.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.22

Page 23: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Soluciones: Búsqueda en profundidad

• Problema de las jarras:

> (load "p-jarras-1.lsp")

T

> (load "b-profundidad.lsp")

T

> (busqueda-en-profundidad)

#S(NODO :ESTADO (2 3)

:CAMINO (LLENAR-JARRA-3-CON-JARRA-4

LLENAR-JARRA-4

VACIAR-JARRA-4-EN-JARRA-3

VACIAR-JARRA-3

LLENAR-JARRA-3-CON-JARRA-4

LLENAR-JARRA-4))

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.23

Page 24: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Soluciones: Búsqueda en profundidad

> (trace es-estado-final)

(ES-ESTADO-FINAL)

> (busqueda-en-profundidad)

1. Trace: (ES-ESTADO-FINAL ’(0 0))

1. Trace: (ES-ESTADO-FINAL ’(4 0))

1. Trace: (ES-ESTADO-FINAL ’(4 3))

1. Trace: (ES-ESTADO-FINAL ’(1 3))

1. Trace: (ES-ESTADO-FINAL ’(1 0))

1. Trace: (ES-ESTADO-FINAL ’(0 1))

1. Trace: (ES-ESTADO-FINAL ’(4 1))

1. Trace: (ES-ESTADO-FINAL ’(2 3))

#S(NODO :ESTADO (2 3)

:CAMINO (LLENAR-JARRA-3-CON-JARRA-4 LLENAR-JARRA-4

VACIAR-JARRA-4-EN-JARRA-3 VACIAR-JARRA-3

LLENAR-JARRA-3-CON-JARRA-4 LLENAR-JARRA-4))

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.24

Page 25: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Soluciones: Búsqueda en profundidad

• Estadística de búsqueda en profundidad:

Tiempo Espacio Nodos Máximo en Profundidad

(seg.) (bytes) analizados abiertos máxima

Viaje 0.1 1.968 5 4 3

Granjero 0.14 2.800 8 3 7

Jarras 0.19 3.576 8 3 6

8-puzle — — — — —

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.25

Page 26: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Propiedades: Búsqueda en profundidad

• Complejidad:

• r: factor de ramificación.

• m: máxima profundidad de la búsqueda.

• Complejidad en tiempo: O(rm).

• Complejidad en espacio: O(rm).

• No es completa.

• No es minimal.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.26

Page 27: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Limitaciones: Búsqueda en profundidad

• Enunciado:

• Una persona puede moverse en línea recta dando cada vez un pasohacia la derecha o hacia la izquierda.

• Representamos su posición mediante un número entero.

• La posición inicial es 0.

• La posición aumenta en 1 por cada paso a la derecha.

• La posición decrece en 1 por cada paso a la izquierda.

• El problema consiste en llegar a la posición -3.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.27

Page 28: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Problema sin solución en profundidad

• Representación de los estados: x un número entero.

• Número de estados: infinito.

• Estado inicial: 0.

• Estado final: -3.

• Operadores:

• Moverse un paso a la derecha.

• Moverse un paso a la izquierda.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.28

Page 29: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Problema sin solución en profundidad

• Resolución del problema del paseo:

> (load "p-paseo.lsp")

T

> (load "b-profundidad.lsp")

T

> (trace es-estado-final)

(ES-ESTADO-FINAL)

> (busqueda-en-profundidad)

1. Trace: (ES-ESTADO-FINAL ’0)

1. Trace: (ES-ESTADO-FINAL ’1)

1. Trace: (ES-ESTADO-FINAL ’2)

1. Trace: (ES-ESTADO-FINAL ’3)

*** - PRINT: User break

1. Break> abort

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.29

Page 30: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Problema sin solución en profundidad

> (load "b-anchura.lsp")

T

> (busqueda-en-anchura)

1. Trace: (ES-ESTADO-FINAL ’0)

1. Trace: (ES-ESTADO-FINAL ’1)

1. Trace: (ES-ESTADO-FINAL ’-1)

1. Trace: (ES-ESTADO-FINAL ’2)

1. Trace: (ES-ESTADO-FINAL ’-2)

1. Trace: (ES-ESTADO-FINAL ’3)

1. Trace: (ES-ESTADO-FINAL ’-3)

#S(NODO :ESTADO -3

:CAMINO (MOVER-A-IZQUIERDA MOVER-A-IZQUIERDA MOVER-A-IZQUIERDA))

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.30

Page 31: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Profundidad vs. anchura

> (load "p-8-puzle.lsp")

T

> (load "b-profundidad.lsp")

T

> (setf *estado-inicial*

(make-array ’(3 3)

:initial-contents ’((4 8 1) (3 H 2) (7 6 5))))

#2A((4 8 1) (3 H 2) (7 6 5))

> (time (busqueda-en-profundidad))

Real time: 0.709987 sec.

Run time: 0.71 sec.

Space: 10660 Bytes

#S(NODO :ESTADO #2A((1 2 3) (8 H 4) (7 6 5))

:CAMINO (MOVER-IZQUIERDA MOVER-ABAJO MOVER-DERECHA MOVER-DERECHA

MOVER-ARRIBA MOVER-IZQUIERDA MOVER-IZQUIERDA MOVER-ABAJO

MOVER-DERECHA MOVER-DERECHA MOVER-ARRIBA MOVER-IZQUIERDA))

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.31

Page 32: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda en profundidad acotada

FUNCION BUSQUEDA-EN-PROFUNDIDAD-ACOTADA(COTA)

1. Hacer ABIERTOS la pila formada por el nodo inicial (es decir, el nodo

cuyo estado es *ESTADO-INICIAL* y cuyo camino es vacıo);

Hacer CERRADOS vacıo

2. Mientras que ABIERTOS no este vacıa,

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 esta 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.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.32

Page 33: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Propiedades: Profundidad acotada

• Complejidad:

• r: factor de ramificación

• c: cota de la profundidad

• Complejidad en tiempo: O(rc)

• Complejidad en espacio: O(rc)

• En general, no es completa

• Es completa cuando la cota es mayor que la profundidad de lasolución

• No es minimal

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.33

Page 34: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

8-puzle: búsqueda en profundidad acotada

• Solución del 8-puzle por profundidad acotada:

> (load "p-8-puzle.lsp")

T

> (load "b-profundidad-acotada.lsp")

T

> (time (busqueda-en-profundidad-acotada))

Real time: 1.212106 sec.

Run time: 1.21 sec.

Space: 17704 Bytes

#S(NODO :ESTADO #2A((1 2 3) (8 H 4) (7 6 5))

:CAMINO (MOVER-DERECHA

MOVER-ABAJO

MOVER-IZQUIERDA

MOVER-ARRIBA

MOVER-ARRIBA))

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.34

Page 35: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

8-puzle: búsqueda en profundidad acotada

> (setf *estado-inicial*

(make-array ’(3 3)

:initial-contents ’((4 8 1) (3 H 2) (7 6 5))))

#2A((4 8 1) (3 H 2) (7 6 5))

> (time (busqueda-en-profundidad-acotada))

Real time: 3.242785 sec.

Run time: 3.25 sec.

Space: 45796 Bytes

NIL

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.35

Page 36: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

8-puzle: búsqueda en profundidad acotada

> (time (busqueda-en-profundidad-acotada :cota 12))

Real time: 0.739477 sec.

Run time: 0.72 sec.

Space: 10756 Bytes

#S(NODO :ESTADO #2A((1 2 3) (8 H 4) (7 6 5))

:CAMINO (MOVER-IZQUIERDA MOVER-ABAJO

MOVER-DERECHA MOVER-DERECHA

MOVER-ARRIBA MOVER-IZQUIERDA

MOVER-IZQUIERDA MOVER-ABAJO

MOVER-DERECHA MOVER-DERECHA

MOVER-ARRIBA MOVER-IZQUIERDA))

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.36

Page 37: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Tabla de comparación

• Estadísticas de soluciones del 8-puzle:

Anchura ProfundidadProfundidad

cota = 5

Profundidad

cota = 12

Estado Tmp. Espc. Tmp. Espc. Tmp. Espc. Tmp. Espc.

inicial (seg.) (bytes) (seg.) (bytes) (seg.) (bytes) (seg.) (bytes)

7 5

2 8 3

1 6 4 4.51 68.292 — — 1.21 17.704 134.42 940.096

5

8

4 1

3 2

7 6— — 0.71 10.660 — — 0.72 10.756

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.37

Page 38: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda en profundidad iterativa

• Arbol de búsqueda en profundidad iterativa (problema de las jarras):

(0 0)

(4 0)

1,2,5,11,19,29,41

3,6,12,20,30,42

(4 3) 7,13,21,31,43

(1 0)

(0 1)

(4 1)

(2 3)

(1 3) 8,14,22,32,44

15,23,33,45

24,34,46

48

(3 0)

(3 3)

(4 2)

(0 2)

(2 0)

(0 3)

10,17,26,37

18,27,38

40

28,39

35,47

4,9,16,25,36

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.38

Page 39: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Búsqueda 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

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.39

Page 40: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Aplicación al problema de las jarras

> (load "p-jarras-1.lsp")

T

> (load "b-profundidad-iterativa.lsp")

T

> (time (busqueda-en-profundidad-iterativa :cota-inicial 0))

Real time: 0.178446 sec.

Run time: 0.18 sec.

Space: 18288 Bytes

#S(NODO :ESTADO (2 3)

:CAMINO (LLENAR-JARRA-3-CON-JARRA-4

LLENAR-JARRA-4

VACIAR-JARRA-4-EN-JARRA-3

VACIAR-JARRA-3

LLENAR-JARRA-3-CON-JARRA-4

LLENAR-JARRA-4))

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.40

Page 41: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Propiedades: Profundidad iterativa

• Complejidad:

• r: factor de ramificación.

• p: profundidad de solución.

• Complejidad en tiempo: O(rp).

• Complejidad en espacio: O(rp).

• Es completa.

• Es minimal.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.41

Page 42: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Propiedades: Profundidad iterativa

• La búsqueda iterativa es el método preferido si el espacio de búsqueda esgrande y no se conoce la profundidad de la solución.

• La redundancia en la expansión queda compensada con la completitud

• Además, la redundancia no es significativa.

• Ejemplo, r = 10 y p = 5:

• Búsqueda acotada, nodos analizados:1 + 10 + 100 + 1000 + 10000 + 100000 = 111111

• Búsqueda iterativa, nodos analizados:1 + 11 + 111 + 1111 + 11111 + 111111 = 123456

• Tan sólo un 10% más.

• Razón: la mayoría de los nodos están en el último nivel del árbol.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.42

Page 43: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Tabla de comparación

• Estadísticas de soluciones del 8-puzle:

Anchura ProfundidadProfundidad

iterativa

Estado Tmp. Espc. Tmp. Espc. Tmp. Espc.

inicial (seg.) (bytes) (seg.) (bytes) (seg.) (bytes)

7 5

2 8 3

1 6 4 4.51 68.292 — — 0.6 8.992

5

8

4 1

3 2

7 6— — 0.71 10.660 71.83 655.594

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.43

Page 44: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Comparación (compilados)

• Estadísticas del 8-puzle con procedimientos compilados:

Anchura ProfundidadProfundidad

iterativa

Estado Tmp. Espc. Tmp. Espc. Tmp. Espacio

inicial (seg.) (bytes) (seg.) (bytes) (seg.) (bytes)

7 5

2 8 3

1 6 4 0.22 27.424 — — 0.06 8.236

5

8

4 1

3 2

7 6— — 0.04 5.984 15.88 656.020

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.44

Page 45: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Comparación de procedimientos

Anchura ProfundidadProfundidad

acotada

Profundidad

iterativa

Tiempo O(rp) O(rm) O(rc) O(rp)

Espacio O(rp) O(rm) O(rc) O(rp)

Completa Sí No Sí, si c >= p Sí

Minimal Sí No No Sí

• r: factor de ramificación.

• p: profundidad de la solución.

• m: máxima profundidad de la búsqueda.

• c: cota de la profundidad.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.45

Page 46: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Bibliografía

• Borrajo, D. y otros Inteligencia artificial: Métodos y técnicas (Centro deestudios Ramón Areces, 1993).

• Cap. 4: “Búsqueda”.

• Cortés, U., Béjar, J. y Moreno, A. Inteligencia artificial (Ediciones UPC,1994).

• Cap. 4: “Búsqueda y estrategias”.

• Mira, J.; Delgado, A.E.; Boticario, J.G. y Díez, F.J. Aspectos básicos de laInteligencia Artificial (Sanz y Torres, 1995)

• Cap. 3: “Fundamentos y técnicas básicas de búsqueda”.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.46

Page 47: Tema 2: Tecnicas· basicas· de busqueda· · 2.4.2.1 Hacer NUEVOS-SUCESORES la lista de nodos de SUCESORES(ACTUAL) cuyo estado no est·a ni en ABIERTOS ni en CERRADOS 2.4.2.2 Hacer

Bibliografía

• Rich, E. y Knight, K. Inteligencia artificial (segunda edición) (McGraw–HillInteramericana, 1994).

• Cap. 2: “Problemas, espacios problema y búsqueda”.

• Russell, S. y Norvig, P. Inteligencia artificial: Un enfoque moderno(Prentice Hall, 1996).

• Cap. 3: “Solución de problemas mediante búsqueda”

• Winston, P.R. y Horn, B.K. LISP (3a. ed.) (Addison–Wesley, 1991).

• Cap. 19: “Ejemplos que involucran búsquedas”.

• Winston, P.R. Inteligencia artificial (3a. ed.) (Addison–Wesley, 1994).

• Cap. 4: “Redes y búsqueda básica”.

IIA 2004-05 CcIa Tecnicas basicas de busqueda 2.47