Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
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
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
Á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
Á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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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