Sie sind auf Seite 1von 30

Solucin de problemas por bsqueda inteligente

Ana Lilia Laureano Cruces UAM-A

La solucin de problemas requiere dos consideraciones


Representacin

del problema en un espacio organizado. La capacidad de probar la existencia del estado objetivo en dicho espacio. Las anteriores premisas se traducen en: la determinacin del estado objetivo y la determinacin del camino ptimo guiado por este objetivo a travs de una o ms transiciones dado un estado inicial.

El sentido comn
La bsqueda

Qu La llave Dnde El espacio de bsqueda

El espacio de bsqueda

Se le conoce como una coleccin de estados. En general los espacios de bsqueda en los problemas de IA no son completamente conocidos de forma apriori. De lo anterior resolver un problema de IA cuenta con dos fases: 1) la generacin del espacio de estados y la bsqueda del estado deseado en ese espacio.

Debido

a que todo el espacio de bsqueda de un problema es muy grande, puede causar un bloqueo de memoria, dejando muy poco espacio para el proceso de bsqueda. Para solucionar esto, se expande el espacio paso a paso, hasta encontrar el estado objetivo.

Dependiendo de
la

metodologa de expansin del espacio de estados. la forma de visita de ese espacio.

Espacios en forma de rboles:


A lo ancho (visita los nodos a lo ancho) En profundidad (visita los nodos en profundidad)

Dichas

bsquedas se conocen como bsquedas determinsticas.

Existen otras
Que

nodo ser visitado sin calcular los detalles en el algoritmo. Es ms se pueden tener varias opciones de transicin con las mismas condiciones, en un instante dado. A tales bsquedas se les conoce como no determinisiticas. La mayora de las bsquedas en IA son no detrminsticas.

Mtodo de genera-prueba
Es

el ms simple: BEGIN

REPEAT
Produce un nuevo estado y lo llama estado en curso;

UNTIL estado en curso = estado objetivo;

END

La parte ms interesante en este algoritmo es la que se refiere a la generacin de nuevos estados. Esta parte no queda incluida en este algoritmo pero con el fin de formalizarla necesitamos definir la siguiente tupla:

Nodos Arcos Objetivo curso

Nodos: representa el conjunto de estados en el espacio de bsqueda. Arcos: representa un operador que aplicado a un estado permite la transicin a otro. Objetivo: denota el estado deseado a ser identificado en los nodos y En curso: representa el estado generado y comparado con el estado objetivo.

Grafo vs. rbol

La diferencia bsica entre estas dos estructuras de datos consiste en el nmero de padres de un determinado nodo:

En el caso de un grafo, ste puede ser cualquier entero positivo. Para un rbol el mximo valor de ste es uno.

A continuacin se presentan dos algoritmos tpicos para generar el espacio de bsqueda.

Bsqueda a lo ancho
Profundidad

1
3 5 6 7 4 8

0
1 2

10

11

12

Procedure BusquALoAncho

BEGIN

Elem = Obten (nodo) {del arbol} InserCola (elem, COLA) REPEAT


elem = ExtraeElem (COLA) IF elem = objetivo

Exito = Verdad (para) BEGIN Elem = Obten (nodo) {hijos del nodo en curso del arbol} InsertaElem (elem, COLA) END

ELSE

UNTIL (ColaVacia OR Exito)

END;

Principio del algoritmo


Si

el nodo en curso no es el estado objetivo, inserte en la COLA, las hojas del nodo en curso en cualquier orden y redefina el elemento del frente de la COLA. El algoritmo termina cuando se encuentra el estado objetivo.

Elementos en la COLA
n1
n2 n3 n4 n5 n3 n4 n5 n6 n6 n7 n8 n4

Complejidad del algoritmo


Supongamos

que contamos con un rbol balanceado, esto es de cada nodo = b se recorre la misma profundidad d. Si estado objetivo no esta en d-1. Entonced las bsquedas falsas quedan representadas por:

1 + b + b2 + b3 + + b d-1 = (bd - 1) / (b - 1), b>>1

As que con el fin


El estado objetivo puede encontrarse en el primer nodo, o En el ltimo nodo, visitado del rbol As el promedio de nodos visitados es:

(1+bd ) / 2

En consecuencia el total de nmeros visitados en un caso promedio se convierte en:


(bd - 1) / (b-1) + (1 + bd) / 2 bd (b + 1) / 2 (b - 1).

Debido a que la complejidad del algrotitmo (tiempo) es proporcional al nmero de nodos visitados, la expersin anterior nos da una medida de la complejidad.

La complejidad del espacio


El nmero mximo de nodos es colocado en la COLA. Cuando el nodo ms izquierdo de la rama con profundidad d en el rbol es colocado en la COLA. La longitud de la COLA se convierte en b d. As la longitud en este caso se convierte en bd. Y la complejidad del algoritmo (tiempo) depende de la longitud de la COLA, en el peor de los casos, as este es de orden bd. En forma de reducir el performance del espacio de bsqueda se presenta el siguiente algoritmo.

Bsqueda en profundidad
Profundidad

1
3 4 5 9 8 10

0
1 2

11

12

Procedure BusqEnProfundidad

BEGIN

Elem = Obten (nodo) {del arbol} PushElem (elem, PILA) WHILE ~ (PilaVacia) OR (xito) DO
elem = PopPila (PILA) IF elem = objetivo

Exito = Verdad (para) BEGIN Elem = Obten (nodo) {hijos del nodo en curso del arbol} PushElem (elem, PILA) END

ELSE

END_WHILE

END;

Principio del algoritmo


El

nodo raz es colocado en en la PILA, para examinarlo se saca, si es el estado objetivo el algoritmo para, en caso contrario sus hijos son metidos en la PILA. El proceso contina hasta que la PILA esta vaca o se tiene xito.

Elementos en la PILA

n2

n4

n6

n3
n1 n8

n3
n8

n5
n8

n5
n8

n7
n8

La complejidad del espacio

Se utiliza el mximo de memoria cuando se vista la mxima longitud la primera vez. Asumiendo que cada nodo cuenta con un factor de profundidad: cuando el nodo en la profundidad d es examinado, el nmero de nodos guardado en memoria son todos los nodos de esa profundidad que no han sido visitados (d), mas el nodo que esta examinndose. Debido a que en cada nivel existen b-1 nodos sin vistar, el nmero total de memoria requerida es d (b-1) + 1.

As

en este caso la complejidad del algoritmo (espacio) es una funcin lineal de b, mientras que en el caso del algoritmos de bsqueda a lo ancho es una funcin exponencial de b. De aqu que este sea un aspecto interesante en el caso del algoritmo de busqueda en profundidad.

Tiempo de complejidad

Si se encuentra el estado objetivo en la posicin d ms izq. El nmero de nodos examinados es d + 1. Y si encontramos el estado objetivo en el nodo mas a la der. El nmero de nodos examinados incluye todos los nodos del rbol. En consecuencia el total de nmeros visitados en un caso promedio se convierte en:

(d + 1) / 2 + (bd+1 - 1 / 2 (b - 1). b(bd + d) / 2 (b - 1).

Debido

a que el tiempo requerido de corrida depende de la profundida del rbol. Un camino alterno es reslover el problema controlando la prfundidad del rbol.
El

control de esta profundidad dada por el usario da origen a la bsqueda iterativa dependiente.

Si la profundidad de corte es 1, se genera solo el nodo raz y lo examina. En caso de que el nodo raz no sea el objetivo, se incrmenta el limte del nivel de profundidad a 2 utilizando el algoritmo de busqueda en profundidad. De esta forma se desarrolla una bsqueda en la que se incrementa la profundidad dejando en cada iteracin fuera a los hijos de nodo en curso.

La bsqueda iterativa dependiente...


Esta

bsqueda no toma tanto tiempo como en el caso de el algoritmo general de bsqueda en profundidad.

Algoritmo de bsqueda iterativa dependiente

BEGIN

ProfCor = 1; Permitido = N; { lo da usuario} exito = False REPEAT Elem = Obten (nodo); {del arbol} PushElem (elem, PILA)
WHILE (~ (PilaVacia) AND (ProfCor < Permitido)) DO BEGIN

elem = PopPila (PILA) IF elem = objetivo exito = Verdad (para) ELSE BEGIN Elem = Obten (nodo) {hijos del nodo en curso del arbol} PushElem (elem, PILA) END END_IF ProfCor = ProfCor + 1;

END

UNTIL xito OR ProfCor > Permitido

fin

Das könnte Ihnen auch gefallen