Busqueda bidireccional

9
Lic. García Pérez Carmen Rosa Página 1 UNIVESIDAD MAYOR DE SAN SIMON FACULTAD DE CIENCIAS Y TECNOLOGIA INTEGRANTES:| Baltazar Llusco Ever Castro Arnez Juan Manuel Choque Roberto Huarayo Condori Silverio DOCENTE: Lic. García Pérez Carmen Rosa MATERIA: Inteligencia Artificial

description

busqueda heuristica

Transcript of Busqueda bidireccional

Page 1: Busqueda bidireccional

Lic. García Pérez Carmen Rosa Página 1

UNIVESIDAD MAYOR DE SAN SIMONFACULTAD DE CIENCIAS Y TECNOLOGIA

INTEGRANTES:| Baltazar Llusco Ever

Castro Arnez Juan Manuel

Choque Roberto

Huarayo Condori Silverio

DOCENTE: Lic. García Pérez Carmen Rosa

MATERIA: Inteligencia Artificial

Page 2: Busqueda bidireccional

Lic. García Pérez Carmen Rosa Página 2

Definición

Que es una búsqueda bidireccional?

La búsqueda bidireccional es un algoritmo de búsqueda no informada, que tiene comopropósito encontrar el camino más corto en dos nodos (inicio y fin)

El objetivo de una búsqueda bidireccional es encontrar su objetivo en el menor tiempoposible y esto se logra haciendo dos búsquedas simultáneas, una descendente desde elnodo inicial y otra ascendente desde el nodo meta. Al menos una de estas dos búsquedasdebe ser en anchura para que el recorrido ascendente y descendente pueda encontrarseen algún momento. Cuando se llegue a un nodo que ya había sido explorado con el otrotipo de búsqueda, termina la búsqueda. El camino solución es la suma de los caminoshallados por cada búsqueda desde el nodo mencionado hasta el nodo inicial y hasta elnodo meta.

Para que se pueda realizar este tipo de búsqueda se tienen que cumplir dos condiciones:

Los operadores han de ser reversibles.- Lo fácil es que se determine el nodo padreen una sola operación (podría darse el caso de requerir más de una para ello, encuyo caso se complica la equiparación de manera notable).

Que la meta se explícita.- Si para un problema hay varias metas distintas, habráque hacer una búsqueda para cada una de ellas.

Combinación Inicial Meta Valida1 Anchura Anchura SI2 Anchura Profundidad SI3 Profundidad Anchura Si4 Profundidad Profundidad NO

Para la combinación 4 es posible que nunca encuentre la meta.

Page 3: Busqueda bidireccional

Lic. García Pérez Carmen Rosa Página 3

Algoritmo

Tenemos que considerar los siguientes factores:

Las dos búsquedas son en amplitud. Se comprobara en ambas búsquedas si el nodo a generar ya está siendo explorado por

otro. Se usaran árboles para búsqueda para ambos casos. Se usaran listas para guardar las fronteras de estos árboles. Y se tendrá una variable que controle el nivel del árbol en el que nos encontramos.

Con esto claro el algoritmo se desarrolla de la siguiente manera:

• INICIALIZAR un árbol Partida, donde el nodo raíz será el estado inicial del problema.Además añadimos el nodo a la lista [P].

• INICIALIZAR un árbol Meta, donde el nodo raíz será el estado meta del problema. Ademásañadimos el nodo a la lista [M].

• INICIALIZAR Nivel(0)

• HASTA encontrar solución o [P] vacía o [M] vacía.

• PARA cada nodo de Partida en Nivel, eliminar el nodo en [P] y generar sucesores detal forma que

• SI el nodo a generar esta en [M]

• Añadir en Partida y en [P] y devolver solución.

• SINO

• Añadir en Partida y en [P].

• //Fin para cada nodo de Partida

• Si no hay solución

• PARA cada nodo de Meta en Nivel, eliminar el nodo en [M] y generarsucesores de tal forma que

• SI el nodo a generar esta en [P]

• Añadir en Meta y en [M] y devolver solución.

• SINO

• Añadir en Meta y en [M].

• //Fin para cada nodo de Meta

Page 4: Busqueda bidireccional

Lic. García Pérez Carmen Rosa Página 4

• //Fin sino no hay solución

• //Fin hasta encontrar solución.

• Devolver solución

• Devolver el camino desde la raíz hasta la meta pasando Partida y Meta por unestado común de las 2 búsquedas.

Explicación del algoritmo:

Se inicializan 2 árboles de búsqueda (Partida y Meta) donde sus nodos iniciales son elplanteamiento del problema y la solución que se busca.

Además se crearan listas donde se añaden ambos nodos, esto por que el árbol Partida buscaraencontrar un elemento de la lista [M] y viceversa.

Se iniciara un ciclo hasta encontrar una solución o hasta que alguna de las listas ([P] o [M]) esténvacías. Que una de las los listas este vacía significaría que el árbol no puede generar más nodoshijos y no existiría una solución.

Dentro de este ciclo se genera otro donde primero se generan nodos hijos en partida, se añadenestos a la lista y se elimina el padre de la lista [P]. Se compara si los nodos generados están en lalista [M].

Si no hay solución se genera otro ciclo donde esta vez se generan los hijos de Meta, se añadenestos a la lista y se borra el padre de la lista, se compara si alguno de los nodos generados está enla lista [P].

Se repetirán estos 2 ciclos hasta que se encuentre una solución o alguna de las 2 listas este vacía.

La solución será devolver el camino desde la raíz hasta la meta con los arboles generados, estosdeben coincidir en un nodo común, que es donde se encontraran.

Page 5: Busqueda bidireccional

Lic. García Pérez Carmen Rosa Página 5

Aplicación a problemas

Problema: Se Pide llegar de Cobija a Potosí.

Resolución: Se inicializan los arboles partida y meta con Cobija y Potosí, en la primera iteración segenera Riberalta y se compara con la lista [M] (Potosí), como no es la respuesta pasa a expandir elárbol Meta con sucre Oruro y Tarija, comparan cada uno de estos con Riberalta que es el que seencuentra en la lista [P]. Luego Partida genera a San Borja, y compara este con [Sucre, Oruro,Tarija], después Meta genera Cbba y La Paz, compara estos con [San Borja], como aun no encontréel resultado, Partida genera Trinidad y La Paz, y compara esto con [Cbba, La Paz], como coincidenambos árboles en La Paz se genera el resultado.

Page 6: Busqueda bidireccional

Lic. García Pérez Carmen Rosa Página 6

Problema: Llegar de P a M.

Resolución: En la gráfica de abajo podemos ver los nodos que genera Partida y Meta, los númerosde estos nodos muestran el nivel en que cada nodo está siendo generado, podemos ver como enel nivel 13 Meta genera el nodo 4F y en el nivel 14 Partida genera los nodos 6H, 5G y 4F. Cuandocompara estos con la lista [M] que en este caso es solo 4F. Encuentra la solución.

Page 7: Busqueda bidireccional

Lic. García Pérez Carmen Rosa Página 7

Análisis del Algoritmo

Completo.- El algoritmo es completo, ya que las dos estrategias son de búsquedasen amplitud. Si se conoce la meta y el problema, siempre se encuentra la solución.

Optimo.- Si las dos estrategias son en amplitud, el algoritmo es óptimo por serlotambién las anteriores.

Complejidad Temporal.-El caso peor ocurre cuando las dos búsquedas seencuentran en la mitad del grafo, es decir a profundidad “ p/2”. Si el factor deramificación es “n” y la solución está en la profundidad “p”, el tiempo necesariopara llegar a la solución será: “2(1+n+n2+n3+……..+np/2)”, ya que es el mismo

tiempo para los dos. El costo temporal está en “O (np/2)”. No se tiene en cuenta eltiempo q tarda en comprobar la frontera de exploración pues su costo es muypequeño a comparación con el resto.

Complejidad espacial.- El caso peor también cuando se cruzan a profundidad.“p/2”. En la estrategia en amplitud también vamos a almacenar “2 (nP/2)”estados. Así el costo espacial también está en la “O (np/2)”.

Se detiene cuando ambas búsquedas se encuentren: se comprueba que el nodo

expandido de un árbol esté en la frontera del otro

• Su interés radica en la reducción de la complejidad

bd2 + bd/2 << bd

Ventajas

• completo:Siempre se encuentra un nodo meta si existe

• Óptimo (para operadores de coste uno):Siempre se encuentra el nodo meta menos profundo

• Se reduce la complejidad (en espacio y en tiempo) de forma considerableComplejidad temporal de O (MAX (B1

d/2; B2d/2)), siendo:

b1: factor de ramificación de la búsqueda en dirección 1.b2: factor de ramificación de la búsqueda en dirección 2.d: profundidad de la solución

Page 8: Busqueda bidireccional

Lic. García Pérez Carmen Rosa Página 8

DesventajasSu principal problema es que requiere mucho espacio (costo de almacenamiento).Es pocas veces aplicable.El factor de ramificación de la búsqueda inversa podría ser mucho mayor que el de ladirecta.Complejidad espacial de O (bi

d/2), siendo:bi: factor de ramificación de la búsqueda de la que se guarda el árbol en memoria.

Puede ser muy difícil o imposible encontrar una función inversa.Varios estados metaFactor de ramificación del árbol inverso puede ser mayor

Variación para el algoritmo

Para que el algoritmo funcione una de las dos estrategias ha de serlo en amplitud.

Esto es así porque es necesario conocer en todo momento todos los nodos frontera, en unnivel determinado. De las dos fuesen en profundidad podría resultar que cada una fuese poruna rama distinta y que no se encontrasen nunca (no sería completa).

Si el factor de ramificación es un n (para amplitud) y la solución está en profundidad p, el

tiempo necesario seguirá siendo el mismo, : “2(1+n+n2+n3+……..+np/2)”, luego está

en “O (np/2)” El coste de almacenamiento cambia un poco: para la búsqueda en amplitud

tendremos que almacenar np/2 y en la profundidad pn; dado que np/2 >>pn, el

coste de almacenamiento también estará en O (np/2). El algoritmo será completo, pero no optimo, ya que la rama de la búsqueda en

profundidad puede no ser la de menor coste ni la de camino más corto.

Otras combinaciones que resulten con una de las dos estrategias en amplitud no afectan alos costes. Por ejemplo si el algoritmo fuese una combinación de amplitud-profundidad.

Otras variaciones posibles es que, en lugar de cambiar de dirección de búsqueda en cada nivel, secambiara cada vez que se genera un estado. Esta alternativa tampoco es la más eficiente, pues loque se gana con la posible no expansión de nodos en la frontera se pierde con los cambios de unau otra búsqueda, que en este caso si pueden influyen en la complejidad temporal.

Page 9: Busqueda bidireccional

Lic. García Pérez Carmen Rosa Página 9

Conclusión

Si una de las dos estrategias es en amplitud, el algoritmo es completo. La ventaja de estabúsqueda es que reduce a la mitad el factor exponencial del coste computacional conrespecto a la búsqueda en amplitud, siendo a su vez, la principal desventaja desde elpunto de vista del coste de almacenamiento (aunque se reduce drásticamente el númerode nodos a almacenar, este es todavía muy grande.)