Busqueda engrafos

of 34 /34
Métodos básicos de Búsqueda Métodos básicos de Búsqueda ¿Cómo resolver el problema de control en sistemas de ¿Cómo resolver el problema de control en sistemas de reglas de producción? reglas de producción? Técnicas básicas para encontrar caminos en Técnicas básicas para encontrar caminos en redes de estados redes de estados . . Por el momento: Por el momento: - no se intenta encontrar la solución óptima - no se intenta encontrar la solución óptima - desarrollo de ‘árbol de búsqueda’ - desarrollo de ‘árbol de búsqueda’

Transcript of Busqueda engrafos

Page 1: Busqueda engrafos

Métodos básicos de BúsquedaMétodos básicos de Búsqueda

¿Cómo resolver el problema de control en sistemas de ¿Cómo resolver el problema de control en sistemas de reglas de producción?reglas de producción?

Técnicas básicas para encontrar caminos enTécnicas básicas para encontrar caminos enredes de estadosredes de estados..

Por el momento:Por el momento: - no se intenta encontrar la solución óptima- no se intenta encontrar la solución óptima- desarrollo de ‘árbol de búsqueda’- desarrollo de ‘árbol de búsqueda’

Page 2: Busqueda engrafos

2

Un ejemplo:Un ejemplo:

Dos tareas posibles:Dos tareas posibles: 1. ENCONTRAR un (el) camino. 1. ENCONTRAR un (el) camino. = costo computacional = costo computacional

2. RECORRER el camino. 2. RECORRER el camino. = costo de recorrido= costo de recorrido 2. Encontrar caminos óptimos (próximo capítulo). 2. Encontrar caminos óptimos (próximo capítulo).

Red implícitaRed implícita

AA

DD

BB

EE

CC

FFGG

SS33

44

44

44

55 55

44

3322

Page 3: Busqueda engrafos

3

AA

DD

BB

EE

CC

FFGGSS

33

44

44

44

55 55

44

33

El árbol asociado de El árbol asociado de caminos parciales caminos parciales -sin ciclos--sin ciclos-

22

SSAA DD

BB DD EEAA

CC EE EE BB BB FF

DD FF BB FF CC EE AA CC GG

GG CC GG FF

GG

33

33 33

33

33

22

22

2244

44

4444

44

4444

44

44

44

44

44

5555

55 55

5555

Page 4: Busqueda engrafos

4

Comentarios:Comentarios: Por el momento no estamos interesados en caminos Por el momento no estamos interesados en caminos

óptimos, entonces podemos omitir los costos.óptimos, entonces podemos omitir los costos.

SSAA DD

BB DD EEAA

CC EE EE BB BB FF

DD FF BB FF CC EE AA CC GG

GG CC GG FF

GG

Los nodos representan el camino parcial desde la raíz a Los nodos representan el camino parcial desde la raíz a ellos!!ellos!!

Significa:Significa:SASA Significa:Significa:

SDASDA

Signif.:Signif.: SDEBASDEBA

Page 5: Busqueda engrafos

5

Terminología:Terminología:

Nodo, ramaNodo, rama Progenitor, hijo, ancestro, descendienteProgenitor, hijo, ancestro, descendiente Nodo raiz, nodo objetivoNodo raiz, nodo objetivo Expandir / Nodo Abierto/ Nodo cerrado/factor de ramificaciónExpandir / Nodo Abierto/ Nodo cerrado/factor de ramificación

SSAA DD

BB DD EEAA

CC EE EE BB BB FF

DD FF BB FF CC EE AA CC GG

GG CC GG FF

GG

Page 6: Busqueda engrafos

Métodos de búsqueda a ciegasMétodos de búsqueda a ciegas

Métodos que no usan ningún conocimiento específico Métodos que no usan ningún conocimiento específico acerca del problema:acerca del problema:

Primero en profundidadPrimero en profundidadPrimero en amplitudPrimero en amplitud

Búsqueda No-determinísticaBúsqueda No-determinísticaProfundización IterativaProfundización IterativaBúsqueda Bi-direccionalBúsqueda Bi-direccional

Page 7: Busqueda engrafos

Búsqueda primero en Búsqueda primero en profundidadprofundidad

Expandir el árbol tan profundamente como Expandir el árbol tan profundamente como sea posible, sea posible,

retornando a niveles superiores cuando sea retornando a niveles superiores cuando sea necesario.necesario.

Page 8: Busqueda engrafos

8

Búsqueda primero en Búsqueda primero en profundidadprofundidad

= seguim. Cronológ.hacia atrás= seguim. Cronológ.hacia atrás Seleccionar un hijo Seleccionar un hijo

convención: izq.-a-convención: izq.-a-derechaderecha

Repetidamente ir al hijo Repetidamente ir al hijo siguiente, tanto como sea siguiente, tanto como sea posible.posible.

Volver a las alternativas Volver a las alternativas no visitadas (nivel más no visitadas (nivel más alto) solo cuando fuere alto) solo cuando fuere necesario.necesario.

BB

CC EE

DD FF

GG

SS

AA

Page 9: Busqueda engrafos

9

Algoritmo búsqueda primero Algoritmo búsqueda primero en profundidad:en profundidad:

1. 1. COLACOLA <-- camino que solo contiene la raiz; <-- camino que solo contiene la raiz;

2. 2. WHILEWHILE COLACOLA no vacía no vacía ANDAND objetivo no alcanzado objetivo no alcanzado

DODO remover el primer camino de la remover el primer camino de la COLACOLA;; crear nuevos caminos (a todos los hijos);crear nuevos caminos (a todos los hijos); rechazar los nuevos caminos con ciclos;rechazar los nuevos caminos con ciclos; agregar al agregar al frentefrente de de COLA COLA los nuevoslos nuevos caminos;caminos;3. 3. IFIF objetivo alcanzado objetivo alcanzado THENTHEN éxito; éxito; ELSEELSE falla; falla;

Page 10: Busqueda engrafos

10

AA

DD

BB

EE

CC

FFGGSS

33

44

44

44

55 55

44

3322

1. 1. COLACOLA <-- camino que solo contiene la raiz; <-- camino que solo contiene la raiz;2. 2. WHILEWHILE COLACOLA no vacía no vacía ANDAND objetivo no alcanzado objetivo no alcanzado DODO remover el primer camino de la remover el primer camino de la COLACOLA;; crear nuevos caminos (a todos los hijos);crear nuevos caminos (a todos los hijos); rechazar los nuevos caminos con ciclos;rechazar los nuevos caminos con ciclos; agregar al agregar al frentefrente de de COLA COLA los nuevoslos nuevos caminos;caminos;3. 3. IFIF objetivo alcanzado objetivo alcanzado THENTHEN éxito; éxito; ELSEELSE falla; falla;

Page 11: Busqueda engrafos

11

Traza de depth-first Traza de depth-first para el ejemplo:para el ejemplo:

(S) (S) S removido, (SA,SD) computados y agregados S removido, (SA,SD) computados y agregados (SA, SD)(SA, SD) SA removido, (SAB,SAD,SAS) computados, SA removido, (SAB,SAD,SAS) computados,

(SAB,SAD) agregados(SAB,SAD) agregados (SAB,SAD,SD) (SAB,SAD,SD) SAB removido, (SABA,SABC,SABE) comput., SAB removido, (SABA,SABC,SABE) comput.,

(SABC,SABE) agregados (SABC,SABE) agregados (SABC,SABE,SAD,SD) (SABC,SABE,SAD,SD) SABC removido, (SABCB) computados, SABC removido, (SABCB) computados,

nada agragadonada agragado (SABE,SAD,SD)(SABE,SAD,SD) SABE removido, (SABEB,SABED,SABEF) SABE removido, (SABEB,SABED,SABEF)

computados, (SABED,SABEF)agragadoscomputados, (SABED,SABEF)agragados (SABED,SABEF,SAD,SD) (SABED,SABEF,SAD,SD) SABED removido, SABED removido,

(SABEDS,SABEDA.SABEDE) computados, (SABEDS,SABEDA.SABEDE) computados, nada agregadonada agregado

((SABEF,SAD,SD) SABEF,SAD,SD) SABEF removido, (SABEFE,SABEFG) SABEF removido, (SABEFE,SABEFG) computados, (SABEFG) agregadocomputados, (SABEFG) agregado

(SABEFG,SAD,SD)(SABEFG,SAD,SD) objetivo alcanzado: reportar éxitoobjetivo alcanzado: reportar éxito

Page 12: Busqueda engrafos

12

Criterios de evaluación:Criterios de evaluación: Completitud:Completitud:

¿El algoritmo siempre encuentra un camino?¿El algoritmo siempre encuentra un camino? (para toda RED en que al menos un camino exista)(para toda RED en que al menos un camino exista)

VelocidadVelocidad (complejidad de tiempo en las peores cond.)(complejidad de tiempo en las peores cond.) :: ¿Cuál es el máximo número de nodos que puede ser ¿Cuál es el máximo número de nodos que puede ser

necesario que sean creados?necesario que sean creados? MemoriaMemoria (complejidad de espacio en las peores cond.)(complejidad de espacio en las peores cond.) : :

¿Cuál es la máxima cantidad de nodos que puede ser ¿Cuál es la máxima cantidad de nodos que puede ser necesario almacenar?necesario almacenar?

Expresado en términos de: Expresado en términos de: d = profundidad del árbold = profundidad del árbol b = factor de ramific. (promedio) del árbolb = factor de ramific. (promedio) del árbol m = profundidad de la solución menos profunda m = profundidad de la solución menos profunda

Page 13: Busqueda engrafos

13

Nota: aproximaciones !!Nota: aproximaciones !! En nuestro análisis de complejidad, no tenemos en En nuestro análisis de complejidad, no tenemos en

cuenta la cuenta la detección de ciclosdetección de ciclos . .

Los resultados solo se aplican ‘formalmente’ a las Los resultados solo se aplican ‘formalmente’ a las variantes de nuestros algoritmos variantes de nuestros algoritmos SINSIN verificación verificación de ciclos.de ciclos.

Estudiar el efecto de la detección de ciclos en la Estudiar el efecto de la detección de ciclos en la complejidad es dificultoso: complejidad es dificultoso: la recarga que implica esta verificación PUEDE o NO la recarga que implica esta verificación PUEDE o NO

ser compensada por la reducción de tamaño del árbol. ser compensada por la reducción de tamaño del árbol.

AdemásAdemás: nuestro análisis : nuestro análisis NONO toma en cuenta la toma en cuenta la longitud (espacio) de representación de caminos !!longitud (espacio) de representación de caminos !!

Page 14: Busqueda engrafos

14

Completitud Completitud (depth-first)(depth-first)

Completo para REDES FINITAS.Completo para REDES FINITAS. (= REDES con número finito de nodos)(= REDES con número finito de nodos)

IMPORTANTE:IMPORTANTE: Esto is debido a la integración de LOOP-checking en Esto is debido a la integración de LOOP-checking en

esta versión de Depth-First (y en todos los otros esta versión de Depth-First (y en todos los otros algoritmos que se presentarán) !algoritmos que se presentarán) ! SI no removemos caminos con ciclos, entonces SI no removemos caminos con ciclos, entonces

Depth-First no es completo (puede quedar Depth-First no es completo (puede quedar atrapado en loops de una red finita)atrapado en loops de una red finita)

Nota:Nota: NO necesar. encuentra el camino más corto. NO necesar. encuentra el camino más corto.

Page 15: Busqueda engrafos

15

AA

DD

BB

EE

CC

FFGGSS

33

44

44

55 55

44

3322

SSAA DD

BB DD EEAA

CC EE EE BB BB FF

DD FF BB FF CC EE AA CC GG

GG CC GG FF

GG

33

33 33

33

33

22

22

2244

44

4444

44

4444

44

44

44

44

44

5555

55 55

5555

Page 16: Busqueda engrafos

16

Velocidad Velocidad (depth-first)(depth-first) En el peor caso: En el peor caso:

el (único) nodo objet. puede estar en la rama del el (único) nodo objet. puede estar en la rama del extremo derecho, extremo derecho,

GG

ddbb

Complej. de tiempo == bComplej. de tiempo == bd d ++ bbd-1 d-1 + … + + … + 11 = = bbd+1 d+1 --11 Luego: O(bLuego: O(bdd) )

b - 1b - 1

Page 17: Busqueda engrafos

17

Memoria Memoria (depth-first)(depth-first) El número máximo de nodos en COLA se alcanza en El número máximo de nodos en COLA se alcanza en

el nodo del extremo izquierdo inferior.el nodo del extremo izquierdo inferior. Ejemplo: d = 3, b = 3 :Ejemplo: d = 3, b = 3 :

......

COLA contiene nodos . Es decir: 7.COLA contiene nodos . Es decir: 7. En General: ((b-1) * d) + 1En General: ((b-1) * d) + 1 Orden: O(d*b)Orden: O(d*b)

Page 18: Busqueda engrafos

Búsqueda primero en amplitudBúsqueda primero en amplitud

Expande el árbol capa por capa, Expande el árbol capa por capa, Avanzando en profundidad.Avanzando en profundidad.

Page 19: Busqueda engrafos

19

Breadth-first search:Breadth-first search:

Moverse Moverse hacia abajo, hacia abajo, nivel por nivel por nivel, hasta nivel, hasta que el que el objetivo sea objetivo sea alcanzado.alcanzado.

SS

AA DD

BB DD AA EE

CC EE EE BB BB FF

DD FF BB FF CC EE AA CC GG

GG

GGGG FFCC

Page 20: Busqueda engrafos

20

UNICA UNICA DIFERENCIA!DIFERENCIA!

Algoritmo prim.en amplitud:Algoritmo prim.en amplitud:1. 1. COLACOLA <-- camino que solo contiene la raiz; <-- camino que solo contiene la raiz;

2. 2. WHILEWHILE COLACOLA no vacía no vacía ANDAND objetivo no alcanzado objetivo no alcanzado

DODO remover el primer camino de la remover el primer camino de la COLACOLA;; crear nuevos caminos (a todos los hijos);crear nuevos caminos (a todos los hijos); rechazar los caminos nuevos con ciclos;rechazar los caminos nuevos con ciclos; agregar los nuevos caminos al final de agregar los nuevos caminos al final de COLACOLA;;

3. 3. SISI objetivo alcanzado objetivo alcanzado THENTHEN éxito; éxito; ELSEELSE falla; falla;

Page 21: Busqueda engrafos

21

Traza de breadth-first Traza de breadth-first en el ejemplo:en el ejemplo:

(S) (S) S removido, (SA,SD) computados y agregados S removido, (SA,SD) computados y agregados (SA, SD)(SA, SD) SA removido, (SAB,SAD,SAS) computados, SA removido, (SAB,SAD,SAS) computados,

(SAB,SAD) agregados(SAB,SAD) agregados (SD,SAB,SAD) (SD,SAB,SAD) SD removido, (SDA,SDE,SDS) computados, SD removido, (SDA,SDE,SDS) computados,

(SDA,SDE) agregados(SDA,SDE) agregados (SAB,SAD,SDA,SDE) (SAB,SAD,SDA,SDE) SAB removido, (SABA,SABE,SABC) SAB removido, (SABA,SABE,SABC)

computados, (SABE,SABC) agregadoscomputados, (SABE,SABC) agregados (SAD,SDA,SDE,SABE,SABC)(SAD,SDA,SDE,SABE,SABC) SAD removido, (SADS,SADA, SAD removido, (SADS,SADA,

SADE) computados, (SADE) agregadosSADE) computados, (SADE) agregados etc, hasta que COLA contiene:etc, hasta que COLA contiene:

(SABED,SABEF,SADEB,SADEF,SDABC,SDABE,SDEBA,SDEBC, (SABED,SABEF,SADEB,SADEF,SDABC,SDABE,SDEBA,SDEBC, SDEFG) SDEFG) el objetivo es alcanzado: reportar éxitoel objetivo es alcanzado: reportar éxito

Page 22: Busqueda engrafos

22

Completitud Completitud (breadth-first)(breadth-first)

COMPLETACOMPLETA aún para REDES implícitamente infinitas!aún para REDES implícitamente infinitas!

Permanecería completa aún sin nuestro loop-Permanecería completa aún sin nuestro loop-checking.checking.

Nota:Nota: SIEMPRE encuentra el camino más corto. SIEMPRE encuentra el camino más corto.

Page 23: Busqueda engrafos

23

Velocidad Velocidad (breadth-first)(breadth-first) Si un nodo objetivo es encontrado a profundidad Si un nodo objetivo es encontrado a profundidad mm del árbol, del árbol,

todos los nodos hasta esa profundidad son creados.todos los nodos hasta esa profundidad son creados.

ddGGbb

mm

LuegoLuego: O: O((bbmm) ) nota: depth-first podría haber visitado nodos más nota: depth-first podría haber visitado nodos más

profundos.profundos.

Page 24: Busqueda engrafos

24

Memoria Memoria (breadth-first)(breadth-first) El mayor número de nodos en COLA se alcanza en el El mayor número de nodos en COLA se alcanza en el

nivel nivel mm del nodo objetivo. del nodo objetivo.

GGddbb

mm

GG COLA contiene nodos y . COLA contiene nodos y . (Es decir: 4)(Es decir: 4) . . En General: bEn General: bmm

Esto es generalm. Esto es generalm. MUCHOMUCHO peor que depth-first !! peor que depth-first !!

Page 25: Busqueda engrafos

25

Evaluación práctica:Evaluación práctica:

Depth-first:Depth-first:SI el espacio de búsqueda contiene ramas muy SI el espacio de búsqueda contiene ramas muy

profundas sin solución, ENTONCES Depth-first profundas sin solución, ENTONCES Depth-first puede desperdiciar mucho tiempo en ellas.puede desperdiciar mucho tiempo en ellas.

Breadth-first:Breadth-first: Demanda MUCHA memoria !Demanda MUCHA memoria !

¿ Soluciones ?¿ Soluciones ?Búsqueda No-determinísticaBúsqueda No-determinística Profundización iterativaProfundización iterativa

Page 26: Busqueda engrafos

26

Búsqueda No-determinística:Búsqueda No-determinística:

1. 1. COLACOLA <-- camino que solo contiene la raiz; <-- camino que solo contiene la raiz;

2. 2. WHILEWHILE COLACOLA no vacía no vacía ANDAND objetivo no alcanzado objetivo no alcanzado

DODO remover el primer camino de la remover el primer camino de la COLACOLA;; crear nuevos caminos (a todos los hijos);crear nuevos caminos (a todos los hijos); rechazar los nuevos caminos con ciclos;rechazar los nuevos caminos con ciclos; agregar los nuevos cam. en lug. al azar en agregar los nuevos cam. en lug. al azar en COLACOLA;;

3. 3. IFIF objetivo alcanzado objetivo alcanzado THENTHEN exito; exito; ELSEELSE falla; falla;

Page 27: Busqueda engrafos

27

Búsqueda por profundización Búsqueda por profundización iterativaiterativa

Restringe una búsqueda depth-first a una Restringe una búsqueda depth-first a una profundidad fija.profundidad fija.

Si no se encontró ningún camino, incrementar la Si no se encontró ningún camino, incrementar la profundidad y recomenzar la búsqueda.profundidad y recomenzar la búsqueda.

Page 28: Busqueda engrafos

28

Depth-limited search:Depth-limited search:1. 1. DEPTHDEPTH <-- <algun número natural> <-- <algun número natural> COLA COLA <-- camino que solo contiene la raiz; <-- camino que solo contiene la raiz;

2. 2. WHILEWHILE COLACOLA no vacía no vacía ANDAND objetivo no alcanzado objetivo no alcanzado

DODO remover el primer camino de la remover el primer camino de la COLACOLA;; IFIF el camino tiene long.menor que el camino tiene long.menor que DEPTHDEPTH crear nuevos caminos(a todos los hijos);crear nuevos caminos(a todos los hijos); rechazar los nuevos caminos con ciclos;rechazar los nuevos caminos con ciclos; agregar los nuevos caminos al frente de agregar los nuevos caminos al frente de COLACOLA;;

3. 3. IFIF objetivo alcanzado objetivo alcanzado THENTHEN exito; exito; ELSEELSE falla; falla;

Page 29: Busqueda engrafos

29

Algoritmo de profundización Algoritmo de profundización iterativa:iterativa:

1. 1. DEPTHDEPTH <-- 1 <-- 1 2. 2. WHILEWHILE objetivo no alcanzado objetivo no alcanzado

DODO ejecutar Depth-limited search; ejecutar Depth-limited search; incrementar en 1 incrementar en 1 DEPTHDEPTH;;

Page 30: Busqueda engrafos

30

Profundización iterativa:Profundización iterativa:la mejor búsqueda ‘a ciegas’.la mejor búsqueda ‘a ciegas’.

Completa: si - incluso encuentra el camino más corto Completa: si - incluso encuentra el camino más corto (como primero en amplitud)(como primero en amplitud) . .

b - 1b - 1 bbm-1m-1 ++ bbm-2m-2 + … + + … + 11 = = bbmm --1 = O(b1 = O(bm-1m-1))

En general: MUY buen trade-offEn general: MUY buen trade-off El trabajo realizado en El trabajo realizado en DEPTHDEPTH = = mm is O(b is O(bmm))

Memoria: b*Memoria: b*m m (combina ventajas de depth- y breadth-(combina ventajas de depth- y breadth-first)first)

Velocidad:Velocidad: Si se halla el camino a Si se halla el camino a DepthDepth = = mm, ¿cuánto tiempo se , ¿cuánto tiempo se

desperdició en la construcc.de los árboles más pequeños?desperdició en la construcc.de los árboles más pequeños?

Page 31: Busqueda engrafos

31

Búsqueda bi-direccional Búsqueda bi-direccional

Computa el árbol tanto desde el nodo de comienzo Computa el árbol tanto desde el nodo de comienzo como desde el nodo objetivo, hasta que estos como desde el nodo objetivo, hasta que estos árboles se encuentran.árboles se encuentran.

Page 32: Busqueda engrafos

32

Búsqueda bi-direccional Búsqueda bi-direccional SISI podemos describir EXPLíCITAMENTE el estado podemos describir EXPLíCITAMENTE el estado

OBJETIVO, OBJETIVO, YY Contamos con reglas para razonamiento HACIA Contamos con reglas para razonamiento HACIA

ADELANTE Y HACIA ATRAS:ADELANTE Y HACIA ATRAS:

Objet.Objet.InicioInicio

Page 33: Busqueda engrafos

33

Algoritmo bi-direccional:Algoritmo bi-direccional:1. 1. COLA1COLA1 <-- camino que solo contiene la raiz; <-- camino que solo contiene la raiz; COLA2COLA2 <-- camino que solo contiene el objetivo; <-- camino que solo contiene el objetivo;

2. 2. WHILEWHILE ambas ambas COLAiCOLAi no estén vacías no estén vacías ANDAND COLA1COLA1 y y COLA2 COLA2 NO compartan un estado NO compartan un estado

DODO remover sus primeros caminos; remover sus primeros caminos; crear sus nuevos caminos (a todos los hijos);crear sus nuevos caminos (a todos los hijos); rechazar sus nuevos caminos con ciclos;rechazar sus nuevos caminos con ciclos; agregar sus nuevos caminos al final;agregar sus nuevos caminos al final;

3. 3. IFIF COLA1COLA1 y y COLA2 COLA2 comparten un estadocomparten un estado THENTHEN éxito; éxito; ELSEELSE falla; falla;

Page 34: Busqueda engrafos

34

Propiedades Propiedades (Bi-direccional)(Bi-direccional)::

Completa: Si.Completa: Si.

Velocidad: Si la verificación de estado común se Velocidad: Si la verificación de estado común se puede realizar en tiempo constante (hashing):puede realizar en tiempo constante (hashing): 2 * O(b2 * O(bm/2m/2) = O(b) = O(bm/2m/2) )

Memoria: similar: O(bMemoria: similar: O(bm/2m/2))