1. Métodos básicos de Búsqueda
¿Cómo resolver el problema de control en sistemas de
reglas de producción?
Técnicas básicas para encontrar caminos en
redes de estados.
Por el momento:
- no se intenta encontrar la solución óptima
- desarrollo de ‘árbol de búsqueda’
3. El árbol asociado de
caminos parciales -sin ciclos3
S
4
A
4
4
C
B
5
E
2
4
D
4
A
5
B
F
G
C
G
3
3
4
4
E
5
4
4
4
2
F
3
F
S
3
D
C
5
D 2 E
5
4
B
4
C
B
5
A
G
D
2
5
5
4
E
4
F
G
3
A
B
4
C
E
4
F
3
G
3
4. Comentarios:
Por el momento no estamos interesados en caminos
óptimos, entonces podemos omitir los costos.
Significa:
S
SA
A
D
Significa:
B
SDA
D
C
E
D
A
E
E
B
F
B
F
G
C
G
C
B
E
F
G
A
C
F
G
Signif.:
SDEBA
Los nodos representan el camino parcial desde la raíz a
ellos!!
4
6. Métodos de búsqueda a ciegas
Métodos que no usan ningún conocimiento específico
acerca del problema:
Primero en profundidad
Primero en amplitud
Búsqueda No-determinística
Profundización Iterativa
Búsqueda Bi-direccional
8. Búsqueda primero en
profundidad
= seguim. Cronológ.hacia atrás
S
A
B
C
E
D
F
G
Seleccionar un hijo
convención: izq.-aderecha
Repetidamente ir al hijo
siguiente, tanto como sea
posible.
Volver a las alternativas
no visitadas (nivel más
alto) solo cuando fuere
necesario.
8
9. Algoritmo búsqueda primero
en profundidad:
1. COLA <-- camino que solo contiene la raiz;
2. WHILE
COLA no vacía
AND objetivo no alcanzado
DO
remover el primer camino de la COLA;
crear nuevos caminos (a todos los hijos);
rechazar los nuevos caminos con ciclos;
agregar al frente de COLA los nuevos
caminos;
3. IF objetivo alcanzado
THEN éxito;
ELSE falla;
9
10. S
3
4
4
A
5
D 2 E
4
B
C
5
4
F
3
G
1. COLA <-- camino que solo contiene la raiz;
2. WHILE
COLA no vacía
AND objetivo no alcanzado
DO remover el primer camino de la COLA;
crear nuevos caminos (a todos los hijos);
rechazar los nuevos caminos con ciclos;
agregar al frente de COLA los nuevos
caminos;
3. IF objetivo alcanzado
THEN éxito;
ELSE falla;
10
11. Traza de depth-first
para el ejemplo:
(S)
(SA, SD)
S removido, (SA,SD) computados y agregados
SA removido, (SAB,SAD,SAS) computados,
(SAB,SAD) agregados
(SAB,SAD,SD)
SAB removido, (SABA,SABC,SABE) comput.,
(SABC,SABE) agregados
(SABC,SABE,SAD,SD) SABC removido, (SABCB) computados,
nada agragado
(SABE,SAD,SD)
SABE removido, (SABEB,SABED,SABEF)
computados, (SABED,SABEF)agragados
(SABED,SABEF,SAD,SD) SABED removido,
(SABEDS,SABEDA.SABEDE) computados,
nada agregado
(SABEF,SAD,SD) SABEF removido, (SABEFE,SABEFG)
computados, (SABEFG) agregado
(SABEFG,SAD,SD) objetivo alcanzado: reportar éxito
11
12. Criterios de evaluación:
Completitud:
¿El algoritmo siempre encuentra un camino?
(para toda RED en que al menos un camino exista)
Velocidad (complejidad de tiempo en las peores cond.) :
¿Cuál es el máximo número de nodos que puede ser
necesario que sean creados?
Memoria (complejidad de espacio en las peores cond.) :
¿Cuál es la máxima cantidad de nodos que puede ser
necesario almacenar?
Expresado en términos de:
d = profundidad del árbol
b = factor de ramific. (promedio) del árbol
m = profundidad de la solución menos profunda
12
13. Nota: aproximaciones !!
En nuestro análisis de complejidad, no tenemos en
cuenta la detección de ciclos .
Los resultados solo se aplican ‘formalmente’ a las
variantes de nuestros algoritmos SIN verificación
de ciclos.
Estudiar el efecto de la detección de ciclos en la
complejidad es dificultoso:
la recarga que implica esta verificación PUEDE o NO
ser compensada por la reducción de tamaño del árbol.
Además: nuestro análisis NO toma en cuenta la
longitud (espacio) de representación de caminos !!
13
14. Completitud (depth-first)
Completo para REDES FINITAS.
(= REDES con número finito de nodos)
IMPORTANTE:
Esto is debido a la integración de LOOP-checking en
esta versión de Depth-First (y en todos los otros
algoritmos que se presentarán) !
SI no removemos caminos con ciclos, entonces
Depth-First no es completo (puede quedar
atrapado en loops de una red finita)
Nota: NO necesar. encuentra el camino más corto.
14
16. Velocidad (depth-first)
En el peor caso:
el (único) nodo objet. puede estar en la rama del
extremo derecho,
d
b
G
Complej. de tiempo == bd + bd-1 + … + 1 = bd+1 -1
b-1
d
Luego: O(b )
16
17. Memoria (depth-first)
El número máximo de nodos en COLA se alcanza en
el nodo del extremo izquierdo inferior.
Ejemplo: d = 3, b = 3 :
...
COLA contiene nodos
. Es decir: 7.
En General: ((b-1) * d) + 1
Orden: O(d*b)
17
18. Búsqueda primero en amplitud
Expande el árbol capa por capa,
Avanzando en profundidad.
20. Algoritmo prim.en amplitud:
1. COLA <-- camino que solo contiene la raiz;
2. WHILE
DO
COLA;
COLA no vacía
AND objetivo no alcanzado
remover el primer camino de la COLA;
crear nuevos caminos (a todos los hijos);
rechazar los caminos nuevos con ciclos;
agregar los nuevos caminos al final de
3. SI objetivo alcanzado
THEN éxito;
ELSE falla;
UNICA
DIFERENCIA!
20
21. Traza de breadth-first
en el ejemplo:
(S)
(SA, SD)
S removido, (SA,SD) computados y agregados
SA removido, (SAB,SAD,SAS) computados,
(SAB,SAD) agregados
(SD,SAB,SAD)
SD removido, (SDA,SDE,SDS) computados,
(SDA,SDE) agregados
(SAB,SAD,SDA,SDE) SAB removido, (SABA,SABE,SABC)
computados, (SABE,SABC) agregados
(SAD,SDA,SDE,SABE,SABC)
SAD removido, (SADS,SADA,
SADE) computados, (SADE) agregados
etc, hasta que COLA contiene:
(SABED,SABEF,SADEB,SADEF,SDABC,SDABE,SDEBA,SDEBC,
SDEFG)
el objetivo es alcanzado: reportar éxito
21
22. Completitud (breadth-first)
COMPLETA
aún para REDES implícitamente infinitas!
Permanecería completa aún sin nuestro loopchecking.
Nota: SIEMPRE encuentra el camino más corto.
22
23. Velocidad (breadth-first)
Si un nodo objetivo es encontrado a profundidad m del árbol,
todos los nodos hasta esa profundidad son creados.
m
b
G
d
Luego: O(bm)
nota: depth-first podría haber visitado nodos más
profundos.
23
24. Memoria (breadth-first)
El mayor número de nodos en COLA se alcanza en el
nivel m del nodo objetivo.
m
b
COLA contiene nodos
G
y
G
d
. (Es decir: 4) .
En General: bm
Esto es generalm. MUCHO peor que depth-first !!
24
25. Evaluación práctica:
Depth-first:
SI el espacio de búsqueda contiene ramas muy
profundas sin solución, ENTONCES Depth-first
puede desperdiciar mucho tiempo en ellas.
Breadth-first:
Demanda MUCHA memoria !
¿ Soluciones ?
Búsqueda No-determinística
Profundización iterativa
25
26. Búsqueda No-determinística:
1. COLA <-- camino que solo contiene la raiz;
2. WHILE
DO
COLA no vacía
AND objetivo no alcanzado
remover el primer camino de la COLA;
crear nuevos caminos (a todos los hijos);
rechazar los nuevos caminos con ciclos;
agregar los nuevos cam. en lug. al azar en COLA;
3. IF objetivo alcanzado
THEN exito;
ELSE falla;
26
27. Búsqueda por profundización
iterativa
Restringe una búsqueda depth-first a una
profundidad fija.
Si no se encontró ningún camino, incrementar la
profundidad y recomenzar la búsqueda.
27
28. Depth-limited search:
1. DEPTH <-- <algun número natural>
COLA <-- camino que solo contiene la raiz;
2. WHILE
DO
COLA no vacía
AND objetivo no alcanzado
remover el primer camino de la COLA;
IF el camino tiene long.menor que DEPTH
crear nuevos caminos(a todos los hijos);
rechazar los nuevos caminos con ciclos;
agregar los nuevos caminos al frente de COLA;
3. IF objetivo alcanzado
THEN exito;
ELSE falla;
28
30. Profundización iterativa:
la mejor búsqueda ‘a ciegas’.
Completa: si - incluso encuentra el camino más corto
(como primero en amplitud) .
Memoria: b*m (combina ventajas de depth- y breadthfirst)
Velocidad:
Si se halla el camino a Depth = m, ¿cuánto tiempo se
desperdició en la construcc.de los árboles más pequeños?
bm-1 + bm-2 + … + 1 = bm -1 =
b-1
O(bm-1)
El trabajo realizado en DEPTH = m is O(bm)
En general: MUY buen trade-off
30
31. Búsqueda bi-direccional
Computa el árbol tanto desde el nodo de comienzo
como desde el nodo objetivo, hasta que estos
árboles se encuentran.
31
32. Búsqueda bi-direccional
SI podemos describir EXPLíCITAMENTE el estado
OBJETIVO, Y
Contamos con reglas para razonamiento HACIA
ADELANTE Y HACIA ATRAS:
Inicio
Objet.
32
33. Algoritmo bi-direccional:
1. COLA1 <-- camino que solo contiene la raiz;
COLA2 <-- camino que solo contiene el objetivo;
2. WHILE ambas COLAi no estén vacías
AND COLA1 y COLA2 NO compartan un estado
DO
remover sus primeros caminos;
crear sus nuevos caminos (a todos los hijos);
rechazar sus nuevos caminos con ciclos;
agregar sus nuevos caminos al final;
3. IF COLA1 y COLA2 comparten un estado
THEN éxito;
ELSE falla;
33
34. Propiedades (Bi-direccional):
Completa: Si.
Velocidad: Si la verificación de estado común se
puede realizar en tiempo constante (hashing):
2 * O(bm/2) = O(bm/2)
Memoria: similar: O(bm/2)
34