Sei sulla pagina 1di 81

CAPITULO III: METODOS DE SOLUCION DE PROBLEMAS.

En el captulo anterior estudiamos diferentes formas en que se puede representar el conocimiento en los sistemas de I.A. En este captulo analizaremos los distintos mtodos de solucin de problemas (M.S.P.) que permitirn manipular el conocimiento representado es esas formas.

3.1. Introduccin.

Dado un sistema de I.A., donde el conocimiento est representado en una de las formas estudiadas, se desea resolver un determinado problema de un dominio D bajo un conjunto de ciertas condiciones C. Solucionar este problema significa encontrar una solucin x X que satisfaga el conjunto de condiciones C, donde X es el conjunto de todas las soluciones posibles a dicho problema. Este proceso de solucionar un problema se realiza mediante una bsqueda en el espacio X. Existen tres esquemas bsicos de solucin de problemas: - Esquema de produccin. - Esquema de reduccin. - Esquema de reduccin dbil.

Analicemos cada uno de estos esquemas.

Cules son los esquemas bsicos de solucin de problemas?

Esquema de Produccin: En este esquema el problema a solucionar se representa en un espacio de estados y su solucin se reduce a la bsqueda en este espacio. Los conceptos principales en este esquema son: - Estados: situaciones en que se pueden encontrar los objetos que caracterizan al problema durante su solucin. - Movimientos: acciones legales que permiten pasar de un estado del problema a otro. - Funcin de evaluacin de estados: asigna a un estado un estimado heurs-tico del esfuerzo necesario para alcanzar una solucin desde este

45

estado. - Funcin de seleccin de movimientos: selecciona uno o ms de los movimientos aplicables. - Funcin de seleccin de estados: selecciona el estado a partir del cual debe continuar la bsqueda.

Encontrar la solucin de un problema significa, entonces, descubrir algn camino entre el estado inicial y el final. El procedimiento general de un esquema de produccin es: 1) Determinar, a partir del problema, el estado inicial S0 y colocarlo como raz del rbol de bsqueda. 2) Aplicar la funcin de seleccin de movimientos a S 0 y generar sus esta-dos descendientes. 3) Si el rbol de bsqueda contiene alguna solucin, o sea, si uno de los estados generados es el estado final, entonces TERMINAR y EXITO. 4) Si no, a) Aplicar la funcin de evaluacin a cada uno de los estados genera-dos. b) Si no existen en el rbol estados sin procesar, entonces TERMINAR y FALLO. c) Aplicar la funcin de seleccin de estados a los estados del rbol de bsqueda para seleccionar uno de ellos. d) Aplicar la funcin de seleccin de movimientos al estado seleccionado y generar los nuevos estados aplicando dichos movimientos. e) Ir al paso 3).

Cul es el procedimiento general de solucin de problemas en un esquema de produccin?

La construccin de la funcin de evaluacin de estados para un problema concreto requiere del uso de conocimiento sobre ese problema. No siempre se dispone de dicho conocimiento, por lo que no siempre es posible definir esta funcin. Esto trae por consecuencia que los mtodos de bsqueda se dividan en dos tipos: - Bsqueda a ciegas: no se dispone de conocimiento para definir la funcin de evaluacin de estado.

46

- Bsqueda heurstica: se puede definir la funcin de evaluacin de estado.

En cules tipos se dividen los mtodos de bsqueda?

Dentro de estos dos tipos existen diferentes mtodos de bsqueda, los cuales estn determinados por la forma en que se construyen las funciones de seleccin de estados y de movimientos. Entre estos mtodos podemos sealar: Mtodos de bsqueda a ciegas (Brute-Force searches): - Algoritmo del museo britnico. - Primero en profundidad (depth-first). - Primero a lo ancho (breadth-first). - Bsqueda en rboles y/o. - Bsqueda en sistemas de produccin. - Bsqueda bidireccional. - Bsqueda por diferencias. - Bsqueda de soluciones mltiples.

Mtodos de bsqueda heurstica: - Bsqueda por el incremento mayor (hill-climbing). - Bsqueda por el mejor nodo o algoritmo A* (best-first). - Bsqueda heurstica en rboles y/o o algoritmo AO *.

Explicar los mtodos de solucin en el esquema de produccin (describir los algoritmos)

Otros mtodos de bsqueda pueden estudiarse en [Ric88].

Esquema de reduccin: En este esquema el problema se descompone en varios subproblemas, los cuales se resuelven de manera independiente y luego se combinan sus soluciones para obtener la solucin del problema original. Existen dos tipos de movimientos: uno de ellos se encarga de la descomposicin de un

47

estado en otros y el otro constituye un movimiento terminal que resuelve el problema completamente. Los conceptos principales de este esquema, as como su procedimiento general son similares a los del esquema de produccin, pero las funciones de evaluacin de estado, seleccin de estados y seleccin de movimientos se basan en consideraciones diferentes. Es usual representar los problemas que se resuelven con este esquema mediante rboles y/o.

Describir el esquema de reduccin. Realizar bsquedas en Internet para profundizar y encontrar ejemplos prcticos.

Esquema de reduccin dbil: Este esquema est orientado a tareas de planificacin.

Realizar bsquedas en Internet para profundizar y encontrar ejemplos prcticos.

3.2. Pasos para resolver un problema.

Para resolver un problema debemos seguir los siguientes pasos: - Definir el problema con precisin: especificar el espacio del problema, los operadores para moverse en dicho espacio y los estados inicial y final o meta. - Analizar el problema: determinar las caractersticas del problema para seleccionar las tcnicas que pueden resolverlo. - Escoger la mejor tcnica y aplicarla al problema particular.

Para resolver un problema que pasos se deben seguir? 3.2.1. Primer paso: definicin precisa del problema.

El primer paso hacia el diseo de un sistema para resolver un problema es la creacin de una descripcin formal y manejable de dicho problema, o sea, la definicin del espacio de bsqueda de las soluciones.

3.2.1.1. Tipos de espacios de bsqueda.

48

Un espacio de bsqueda no es ms que el ambiente o espacio de todas las soluciones posibles donde se realiza la bsqueda de una solucin. Est formado por un conjunto de nodos que constituyen soluciones parciales o posibles del problema y un conjunto de operadores que permiten movernos de un nodo a otro. El proceso de bsqueda de una solucin consiste, entonces, en encontrar una secuencia de operadores que transformen el nodo inicial en el final. Existen tres tipos de espacios de bsqueda: - Espacio de estado. - Espacio de reduccin de problemas. - Arboles de juego. Analicemos cada uno de estos tipos.

Qu tipos de espacios de bsqueda existen?

Espacio de estado. Veamos un ejemplo: Consideremos el problema de jugar al ajedrez. Nuestro objetivo no slo es jugar la partida, sino ganar la misma. Es necesario, en primer lugar, especificar cul es la posicin inicial del tablero de ajedrez (nodo inicial), las reglas que definen los movimientos legales en este juego y qu posiciones del tablero representan una victoria para un jugador u otro (nodos finales). Una forma de describir la posicin inicial del tablero puede ser mediante una matriz de 8x8, donde cada elemento es un smbolo que representa la pieza del ajedrez que est situada en la posicin de apertura del ajedrez. Nuestra meta podra ser tratar de llegar a una posicin del tablero, en la cual el oponente no pueda realizar ningn movimiento legal y su rey est amenazado. Los movimientos legales pueden describirse como un conjunto de reglas donde la parte izquierda describa una posicin del tablero que debe coincidir con la actual y la parte derecha describa la nueva posicin del tablero una vez ejecutado dicho movimiento. Existen diversas maneras de describir estas reglas:

1) Tableroi

Tableroj

donde Tableroi es una matriz de 8x8 que representa, por ejemplo, la posicin inicial del tablero y Tableroj es otra matriz de 8x8 que representa, por ejemplo, el tablero del ajedrez con todas sus piezas en su posicin inicial y el movimiento P4R realizado.

49

Como puede verse, esta representacin requiere una regla separada para cada una de las 10120 posiciones posibles del tablero, lo cual presenta tres dificultades: nadie puede proporcionar el conjunto de tales reglas, pues esto requerira mucho tiempo, es difcil lograrlo sin cometer errores y ningn programa puede manejar fcilmente todas esas reglas aunque se usen tablas hash para encontrar de forma rpida las reglas relevantes para cada movimiento.

Qu es una tabla hash?

2) Pen blanco en casilla(columna 4, fila 2) Mover pen blanco desde casilla(columna 4,fila 2) a casilla(columna 4,fila 4)

Casilla(columna 4, fila 3) est vaca Casilla(columna 4, fila 4) est vaca

Esta representacin minimiza los problemas mencionados en la forma anterior. Mientras ms claro podamos escribir las reglas, menos trabajo tendremos para proporcionarlas y ms eficiente ser el programa que las use.

Realmente lo que hemos hecho es definir el problema de jugar al ajedrez como un problema de movimientos a travs de un espacio de estado, donde cada estado corresponde a una posicin vlida del tablero. Podemos jugar al ajedrez empezando en un estado inicial, usando un conjunto de reglas para movernos de un estado a otro, intentando finalizar en uno de entre un conjunto de estados finales. En cada momento el proceso de resolucin del problema puede encontrarse en un estado particular. El conjunto de todos los estados posibles para un problema concreto se denomina espacio de estado. Definir un problema significa, entonces, especificar: - el espacio de estados que contiene todas las configuraciones posibles de los objetos relevantes y el conjunto de operadores que permiten movernos en dicho espacio. Naturalmente es posible definir este espacio sin enumerar, explcitamente, todos los estados que contiene, como veremos ms adelante. - el estado inicial. - uno o ms estados finales que sern aceptados como solucin al problema.

50

Veamos otro ejemplo. Supongamos que queremos encontrar en un mapa la ruta de una ciudad a otra. En este caso, el espacio de estados es la coleccin de todas las ciudades. El estado inicial sera la ciudad de partida y el estado final es la ciudad de llegada. Las restantes ciudades representan estados intermedios del problema. Los operadores para moverse de un estado a otro son precisamente los caminos existentes entre las ciudades. El proceso de encontrar la ruta consistira, nuevamente, en la bsqueda de un camino entre el estado inicial y el final.

Analicemos ahora un ejemplo diferente a los anteriores: el problema de los jarros de agua, el cual consiste en que se tienen dos jarros de agua de 3 y 4 litros respectivamente. Ninguno de los jarros tiene marca de medicin y se puede usar una bomba para llenar de agua los mismos. Cmo poner exactamente 2 litros de agua en el jarro de 4 litros?. El espacio de estados puede describirse como el conjunto de pares de enteros (x,y) tales que x=0,1,2,3,4 y y=0,1,2,3; x representa el nmero de litros de agua del jarro de 4 litros y y representa el nmero de litros de agua del de 3 litros. El estado inicial es (0,0), pues inicialmente los jarros estn vacos y el estado final es (2,n) para cualquier valor de n, pues el problema no especifica cuntos litros deben quedar en el jarro de 3 litros. Los operadores para moverse de un estado a otro pueden describirse de la siguiente manera: 1. (X,Y / X<4) (4,Y) Llenar el jarro de 4 litros. 2. (X,Y / Y<3) (X,3) Llenar el jarro de 3 litros. 3. (X,Y / X>0) (X-D,Y) Arrojar en el suelo D litros de agua del jarro de 4 litros. 4. (X,Y / Y>0) (X,Y-D) Arrojar en el suelo D litros de agua del jarro de 3 litros. 5. (X,Y / X>0) (0,Y) Vaciar el jarro de 4 litros en el suelo. 6. (X,Y / Y>0) (X,0) Vaciar el jarro de 3 litros en el suelo. 7. (X,Y / X+Y4 Y>0) (4,Y-(4-X)) Echar agua del jarro de 3 litros en el jarro de 4 litros hasta que el jarro de 4 litros est lleno. 8. (X,Y / X+Y3 X>0) (X-(3-Y),3) Echar agua del jarro de 4 litros en el jarro de 3 litros hasta que el jarro de 3 litros est lleno. 9. (X,Y / X+Y4 Y>0) (X+Y,0) Verter todo el contenido del jarro de 3 litros en el jarro de 4 litros. 10. (X,Y / X+Y3 X>0) (0,X+Y) Verter todo el contenido del jarro de 4 litros en el jarro de 3 litros.

51

En la prctica, las reglas 3 y 4 deben omitirse, pues aunque representan acciones que estn permitidas en el dominio del problema, no tiene sentido aplicarlas, ya que no nos acercan a la solucin del mismo porque D no se puede medir. Por supuesto, para resolver este problema de los jarros de agua, es necesario implementar un mecanismo que seleccione la regla cuya parte izquierda concuerde con el estado actual, genere los nuevos estados y as sucesivamente, hasta alcanzar el estado final. Estos mtodos los estudiaremos en las prximas secciones. En [Bra86] pueden verse las representaciones grficas de los espacios de estado para los problemas del mundo de bloques y del rompecabezas de 8 piezas. Un espacio de estado es, justamente, otro formalismo para representar el conocimiento. Se representa, usualmente, mediante un rbol donde cada nodo corresponde a un estado particular del problema y cada arco corresponde a un operador de transicin de estados. La solucin del problema puede ser definida, entonces, como una bsqueda de un camino entre el nodo correspondiente al estado inicial y el nodo correspondiente al estado final o meta. La forma en que se represente cada estado vara considerablemente de problema en problema. Por ejemplo, en el ajedrez puede ser una matriz de 8x8 donde cada elemento tiene el carcter que representa la pieza situada en esa posicin; en el problema del camino entre las ciudades podra ser una cadena con el nombre de la ciudad y en el problema de los jarros de agua podemos usar dos enteros. Si el problema que queremos resolver es ms complicado, podemos usar una de las F.R.C. estudiadas en el captulo anterior para representar cada estado individual. Explicar y representar en Prolog los problemas del Mundo de los Bloques y del rompecabezas 8-Puzzle.

Espacio de reduccin del problema. A diferencia del espacio de estado, en este espacio el nodo inicial representa el problema original que se desea resolver, los nodos finales o metas constituyen problemas que pueden resolverse mediante una primitiva simple y los restantes nodos representan subproblemas en que puede descomponerse un determinado problema. Los arcos seran, entonces, operadores que permiten descomponer un problema en un conjunto de subproblemas. Existen dos tipos de nodos. Si slo basta con resolver uno de los subproblemas en que se descompuso un nodo dado para resolver ste, el nodo se denomina nodo O (or). Si por el contrario, deben ser resueltos todos los subproblemas en que se descompuso el nodo, ste se denomina nodo Y (and). Este tipo de espacio de bsqueda se representa, usualmente, mediante un rbol y/o, el cual no es ms que un rbol que contiene nodos del tipo Y y nodos del tipo O.

52

Una solucin de un problema sera, entonces, un subrbol que comienza en el nodo raz y que contiene siempre una de las ramas de los nodos O y todas las ramas de los nodos Y hasta llegar a uno o varios nodos terminales. En este tipo de espacio es conveniente representar aquellos problemas que pueden ser descompuestos fcilmente en subproblemas, como por ejemplo, la generacin de estructuras qumicas y la integracin simblica. En la figura 3.1 se muestra un ejemplo sencillo de un problema representado mediante un rbol y/o. El problema de adquirir un televisor puede descomponerse en dos subproblemas: robarlo o tratar de adquirirlo mediante una va legal. Esta ltima puede descomponerse a su vez en dos subproblemas, los cuales deben ser resueltos para poder resolver el problema original.

Adquirir un TV

Nodo O

Robar un TV

Va legal

Nodo Y

Ganar dinero

Comprar un TV

Fig. 3.1. Arbol y/o para el problema de adquirir un televisor.

53

Analicemos otro ejemplo. Supongamos que tenemos el mapa representado en la figura 3.2, donde se muestra un conjunto de ciudades y los caminos existentes entre ellas. Se desea encontrar un camino desde la ciudad 1 a la 11. Existen dos vas para lograr este camino: una pasando por la ciudad 6 y la otra pasando por la ciudad 7. Pero el subproblema de encontrar un camino por la primera va significa encontrar un camino entre las ciudades 1 y 6 y un camino entre las ciudades 6 y 11. Lo mismo ocurre para el subproblema de encontrar el camino por la segunda va. Una porcin del rbol y/o correspondiente a esta descomposicin del problema original puede verse en la figura 3.3.

10

11

Fig. 3.2. Un mapa compuesto de 11 ciudades.

Por otro lado, cmo podramos representar el problema de la integracin simblica en un rbol y/o? Esto se realizara, fcilmente, situando como nodo inicial la integral que se desea resolver. Los operadores de reduccin del problema seran, por ejemplo, la regla de la integral de la suma y la integracin por partes, las cuales generaran los nodos intermedios del rbol y las reglas que permiten calcular la integral de funciones primitivas, las cuales generaran los nodos terminales. Estos nodos, a su vez, seran funciones que no contienen el smbolo integral.

54

Camino 1-11

Nodo O

Camino 1-11 va 6

Camino 1-11 va 7

Nodo Y

Nodo Y

Camino 1-6

Camino 6-11 Camino 1-7

Camino 7-11

55

Nodo O

Camino 6-11 va 8Camino 6-11 va 9

Nodo Y

Nodo Y

Camino 6-8 Camino 8-11 Camino 6-9 Camino 9-11 Nodos terminales

Fig. 3.3. Porcin del rbol y/o correspondiente al problema de la fig. 3.2.

Explique en que consiste un espacio de reduccin de problema.

Arboles de juego. Un caso especial de los rboles y/o son los rboles de juego, donde participan dos jugadores. En un rbol de juego el nodo raz representa la posicin inicial del juego y los nodos terminales representan posiciones del juego donde un jugador gana, pierde o hace tablas. Los operadores son, precisamente, los movimientos legales que pueden realizarse en dicho juego. Este tipo de rbol se caracteriza por tener en el primer nivel a los nodos que se derivaron de movimientos del primer jugador y en el segundo nivel, a los que se derivaron de movimientos del segundo jugador y as sucesivamente se van alternando por niveles. Por qu un rbol de juego es un rbol y/o? Desde el punto de vista de un determinado jugador, los nodos que permiten generar sus movimientos son nodos O, pues basta seleccionar slo uno que conduzca a la victoria. Sin embargo, los nodos que permiten generar los movimientos de su oponente son nodos Y, ya que l debe analizarlos a todos para poder neutralizar a su oponente. En la figura 3.4 se muestra una porcin del rbol de juego del titafor. Este espacio de bsqueda tiene 362 880 nodos.

Explique en que consisten los rboles de juego.

56

3.2.1.2. Representacin del espacio de bsqueda.

Hemos representado a los tres tipos de espacios de bsqueda estudiados en la seccin anterior, en forma de rbol. Sin embargo, con frecuencia, el proceso de generacin de los nodos sucesores produce un mismo nodo ms de una vez, lo que implica que en la bsqueda del camino a la solucin, ste se procese varias veces. En este caso, es mejor representar el espacio de bsqueda mediante un grafo orientado.

Posicin inicial del juego

Nodo O

x x x x x x Nodo Y x

Movimientos del jugador X

o x

o x

o x ox xo x o o x o

Movimientos del x jugador O

Fig. 3.4. Porcin del rbol de juego del titafor.

En el problema de los jarros de agua es fcil ver cmo un mismo nodo es generado ms de una vez (figura 3.5). El grafo correspondiente a este espacio de bsqueda puede verse en la figura 3.6. Note cmo usando un grafo no se necesita repetir los nodos.

57

(0,0)

(4,0)

(0,3)

(4,3) (0,0) (1,3) (4,3) (0,0) (3,0)

Fig. 3.5. Porcin del espacio de bsqueda del problema de los jarros de agua representado en forma de rbol.

(0,0)

(4,0)

(0,3)

(1,3)

(4,3)

(3,0)

58

Fig. 3.6. Porcin del espacio de bsqueda del problema de los jarros de agua representado en forma de grafo.

En la creacin del grafo, antes de incorporar un nodo N, deben realizarse los siguientes pasos: 1) Si N pertenece al conjunto de los nodos generados hasta el momento, entonces poner como sucesor del nodo que se est expandiendo al nodo ya existente. El nodo N puede simplemente descartarse. 2) Si no, aadirlo al grafo.

El buscar en un grafo reduce el esfuerzo que se invierte en explorar un camino varias veces, pero requiere un esfuerzo adicional para comprobar si el nodo ya se ha generado. El hecho de si este esfuerzo es justificado depende del problema concreto. Un problema que se puede presentar y que hay que tener en cuenta es la presencia de ciclos en el grafo.

Escriba un resumen con todos los aspectos relevantes relativos a los espacios de bsqueda (Brigada 501, considere la informacin de este documento y los de las conferencias 1-3 sobre mtodos de bsqueda)

Cree la ontologa que modele los espacios de bsqueda (Brigada 502, considere la informacin de este documento y los de las conferencias 1-3 sobre mtodos de bsqueda)

3.2.2. Segundo paso: anlisis del problema.

Para escoger la tcnica de I.A. ms apropiada para resolver un problema es necesario analizar el mismo teniendo en cuenta los siguientes aspectos: - Se puede descomponer el problema en un conjunto de subproblemas independientes ms pequeos o ms fciles? - Es posible en la solucin del problema ignorar o deshacer pasos mal hechos? - Es predecible el universo del problema? - Se desea una solucin cualquiera o la mejor solucin al problema?

59

- Es consistente el conocimiento disponible para resolver el problema? - Cul es el papel del conocimiento? - Se requiere la interaccin con una persona? En las prximas secciones explicaremos cada uno de estos aspectos.

3.2.2.1. Se puede descomponer el problema?.

Los problemas que se pueden descomponer en un conjunto de subproblemas se pueden solucionar usando la tcnica de divide y vencers (divide and conquer). Un ejemplo de este tipo de problema es la integracin simblica. Sin embargo, estas tcnicas generalmente no pueden usarse en aquellos problemas no descomponibles, aunque a veces es posible usarlas para generar una solucin aproximada y, entonces, arreglarla para reparar los errores causados por las interacciones existentes entre los subproblemas. Un ejemplo de problema no descomponible es el mundo de bloques.

3.2.2.2. Es posible ignorar o deshacer pasos para la solucin?.

En relacin con este aspecto existen tres clases de problemas: 1. Ignorables: En ellos los pasos dados incorrectamente para la solucin del problema pueden ignorarse. Un ejemplo es la demostracin de un teorema matemtico. Supongamos que comenzamos demostrando un lema que pensamos es til, pero despus nos damos cuenta que no era de ninguna ayuda. Cualquier regla que pudo haberse aplicado, todava puede aplicarse. Podemos simplemente ignorar lo hecho y lo nico que se ha perdido es el esfuerzo. 2. Recuperables: En ellos los pasos dados incorrectamente para la solucin del problema pueden deshacerse. Un ejemplo es el rompecabezas de 8 piezas, el cual consiste en que se tiene una bandeja en la que se colocan ocho baldosas cuadradas. El noveno cuadrante sobrante queda sin cubrir. Cada baldosa tiene un nmero sobre ella. Una baldosa que est adyacente al espacio en blanco puede deslizarse a dicho espacio. El juego consiste en, dadas una posicin inicial y una posicin final (usualmente las baldosas en orden consecutivo con el espacio en blanco en el centro), transformar la posicin inicial en la final, desplazando las baldosas. Al intentar resolver este problema, podemos realizar un movimiento tonto. Los errores cometidos pueden enmendarse, retrocediendo para deshacer cada paso incorrecto. Lgicamente hace falta memorizar el orden de los pasos realizados para poder corregirlos. Note que esto no fue necesario en el caso anterior.

60

3. Irrecuperables: En ellos los pasos dados incorrectamente para la solucin del problema no pueden deshacerse. Un ejemplo es el juego del ajedrez. Si se realiza un movimiento estpido, no se puede ignorar ni retroceder al principio de la partida. Lo nico que puede hacerse es tratar de realizar la mejor jugada a partir de la situacin actual.

3.2.2.3. Es predecible el universo del problema?.

En los problemas donde es posible predecir qu ocurrir, pueden usarse las tcnicas de planificacin, las cuales permiten generar una secuencia de operadores que conducen con certeza a una solucin. Ejemplo: en el problema del rompecabezas de 8 piezas, cada vez que se hace un movimiento sabemos exactamente qu pasar, por lo que se puede planificar una secuencia completa de movimientos y saber de antemano el resultado. Sin embargo, existen problemas donde esto no es posible. En ellos las tcnicas de planificacin generan como mximo una secuencia de operadores que conducen a una solucin con una buena probabilidad. Por ejemplo, en el juego de la brisca, para decidir qu carta jugar no podemos planificar la partida completa, pues no sabemos qu cartas tienen los restantes jugadores ni qu jugadas ellos harn.

3.2.2.4. Se desea una solucin cualquiera o la mejor solucin al problema?.

Los problemas en los que se desea encontrar el mejor camino a la solucin son ms difciles de resolver que aquellos donde basta encontrar una solucin cualquiera, pues mientras los primeros requieren bsqueda exhaustiva, los segundos pueden resolverse eficientemente usando tcnicas heursticas. Un ejemplo de problema donde basta encontrar una solucin se expone a continuacin. Supongamos que se tiene el siguiente conjunto de hechos: 1. Marcos era un hombre. 2. Marcos era pompeyano. 3. Marcos naci en el ao 40 d.C. 4. Todos los hombres son mortales. 5. Todos los pompeyanos murieron en la erupcin del volcn en el ao 79 d.C. 6. Ningn mortal tiene ms de 150 aos. 7. Hoy estamos en el ao 1995 d.C.

61

y se desea responder a la pregunta est vivo Marcos?. Representndolos en lgica de predicados y realizando inferencias se llega fcilmente a una respuesta. Note que en este caso existen dos caminos para llegar a la respuesta de que Marcos no est vivo. Uno de ellos se obtiene utilizando los hechos 1,3,4,6 y 7 y el otro, utilizando 2,5 y 7. No importa cul de ellos se tome, lo que importa es la respuesta a la pregunta. Un ejemplo donde se desea encontrar la mejor solucin es el problema del vendedor ambulante, tambin conocido como el agente viajero, el cual consiste en que un vendedor tiene una lista de ciudades, cada una de las cuales debe ser visitada solamente una vez. Existen carreteras directas entre cada par de ciudades de la lista. Se debe encontrar el camino ms corto que debera seguir el vendedor para visitar todas las ciudades, comenzando por una cualquiera y retornando a ella misma. En este caso, es necesario analizar todos los caminos posibles para tomar el mejor de ellos.

3.2.2.5. Es consistente el conocimiento disponible para resolver el problema?.

Hay problemas donde el conocimiento que se usa es completamente consistente. Un ejemplo de ellos es: dado los siguientes axiomas de un grupo multiplicativo, 1. x.y est definido x,y elementos del grupo. 2. (x=y y=z) x=z 3. x=x 4. (x.y).z = x.(y.z) 5. I.x=x x, donde I es el elemento identidad del grupo. 6. x-1.x = I, donde x-1 es el inverso de x. 7. x=y z.x=z.y 8. x=y x.z=y.z se desea demostrar que x x.I=x. Sin embargo, existen problemas que tienen inconsistencias. Un ejemplo es el problema de la diana, el cual consiste en que un hombre est de pie a 50m de una diana y quiere dar en el blanco con una pistola que dispara a una velocidad de 500 m/s. A qu distancia debe apuntar por encima del blanco?. Razonemos: la bala tarda 0.1s en alcanzar el blanco, suponiendo que viaja en lnea recta. La bala cae a una distancia igual a 1/2gt2 = 1/2(9.8)(0.1)2 = 0.049 m = 4.9 cm. Si el hombre apunta 4.9 cm por encima del blanco dara en la diana. Pero se ha supuesto que la

62

bala viaja en lnea recta, lo que entra en conflicto conque viaja en una parbola.

3.2.2.6. Cul es el papel del conocimiento?.

Existen problemas donde se necesita conocimiento slo para restringir la bsqueda. Por ejemplo, en el problema del ajedrez, suponiendo potencia de computacin ilimitada, se necesita de poca cantidad de conocimiento: slo reglas para describir los movimientos legales del juego y un proceso de bsqueda adecuado. Usar conocimiento adicional sobre tctica y buena estrategia, ayudara a restringir la bsqueda de la solucin y acelerar la ejecucin del programa. Sin embargo, hay problemas que necesitan gran cantidad de conocimiento tan slo para reconocer una solucin. Ejemplo: explorar los peridicos de Estados Unidos para decidir quin est apoyando a los demcratas o a los republicanos en una eleccin prxima. El programa tendra que saber cosas como los nombres de los candidatos de cada partido, el hecho de que si quiere bajar los impuestos apoya a los republicanos, el hecho de que si quiere educacin para las minoras apoya a los demcratas, etc.

3.2.2.7. Requiere la interaccin con una persona?.

Teniendo en cuenta este aspecto podemos distinguir dos tipos de problemas: - Solitario, en el cual se le da a la computadora una descripcin del problema y ella produce una respuesta sin comunicacin intermedia y sin peticin de una explicacin de su razonamiento. Ejemplo: para demostrar un teorema matemtico usando resolucin, lo nico que se desea es saber si existe una. - Conversacional. Ejemplo: en problemas como el diagnstico mdico, el programa debe ser capaz de explicar su razonamiento, pues si no, no ser aceptado por los mdicos. Escribir un resumen amplio sobre el anlisis de un problema. Tener en cuenta la informacin que aqu se presenta para ampliar una clasificacin de los tipos de problemas, partiendo de las explicaciones que se dan al inicio del documento (Brigada 501).

Desarrollar una ontologa que describa los tipos de problemas a partir de la clasificacin que se da en el inicio de artculo ms los detalles que se incluyen en este punto sobre el anlisis de los problemas (Brigada 502).

63

3.2.3. Tercer paso: Aplicar la mejor tcnica de I.A. para el problema particular. Implementar en Prolog los mtodos resaltados en amarillo.

Para poder escoger la mejor tcnica de I.A. a aplicar en el proceso de resolucin de un problema particular es necesario estudiar, primeramente, las distintas tcnicas de bsqueda que existen. A esto, precisamente, nos dedicaremos en las siguientes secciones de este captulo.

3.3. Mtodos de bsqueda a ciegas.

La bsqueda a ciegas es una coleccin de procedimientos que investigan el espacio de estados de manera exhaustiva pero ciega. Estos procedimientos se consideran mtodos dbiles, pues imponen restricciones mnimas a la bsqueda, en general son tcnicas de solucin de problemas de propsito general y pueden describirse independientemente de cualquiera sea el dominio del problema. Estos mtodos usan solamente la informacin estructural y no hacen ninguna distincin cualitativa entre los nodos, respecto a su posibilidad de encontrarse sobre el camino deseado. En consecuencia, para los problemas con un extenso espacio de estados, la cantidad de alternativas que deben explorarse es tan grande que hace que su uso sea computacionalmente imposible. El nmero de nodos a explorar crece, en general, exponencialmente con la longitud del camino que representa la solucin del problema. Esto genera una explosin combinatoria que estos mtodos son incapaces de superar. No obstante, continan formando el ncleo de la mayora de los sistemas de I.A. Estudiaremos algunas de las tcnicas de bsqueda a ciegas ms usadas.

3.3.1. Algoritmo del museo britnico.

Este procedimiento demuestra cun ineficiente puede resultar un algoritmo de bsqueda. Consiste en colocar a un mono delante de una mquina de escribir y que presionando aleatoriamente las teclas genere todos los trabajos de Shakespeare existentes en el museo. Para generar una frase de 18 caracteres tendra una probabilidad de 1 en 2718. De esta forma, el procedimiento consiste en generar todas las soluciones posibles y comprobar cul es la correcta. Con un tiempo suficiente logra encontrar la solucin optimal, slo que es intratable computacionalmente.

64

3.3.2. Bsqueda primero a lo ancho.

Una bsqueda primero a lo ancho (breadth-first) explora primero todos los sucesores del nodo raz. Si no se encuentra la meta, pasa a los sucesores del segundo nivel y as sucesivamente por niveles. Suponiendo que el objetivo a alcanzar es el nodo 7, el recorrido primero a lo ancho del espacio de bsqueda que se muestra en la figura 3.7, es 1-2-3-4-5-6-7. Este mtodo simboliza a un explorador bastante conservador. Si el nmero de mximo de hijos (o ramas) de un nodo es b y la profundidad de la solucin es d, entonces el nmero de nodos en el nivel d es bd y la cantidad de tiempo usada en la bsqueda es en el caso peor: 1 + b + b2 + ... + bd, la cual para grandes valores de d, puede ser aproximada por bd. Es por esto que la complejidad temporal de este mtodo de bsqueda es O(bd).

10

11

12

Fig. 3.7. Un ejemplo de espacio de bsqueda.

Este mtodo tiene como ventaja que siempre encuentra el camino ms corto a la solucin, si sta existe, an en el caso de que el espacio de bsqueda sea infinito. Es efectivo cuando el factor de ramificacin, o sea, el nmero promedio de hijos de un nodo, es pequeo, pues entonces la cantidad de nodos por niveles ser

65

pequea y es mejor explorar un nivel antes de pasar al siguiente. Sin embargo, tiene las siguientes desventajas: - Necesita mucha memoria. Como cada nivel del rbol tiene que ser almacenado completamente para poder generar el prximo nivel y la cantidad de memoria es proporcional al nmero de nodos almacenados, su complejidad espacial es tambin O(bd). - Requiere mucho trabajo, especialmente si el camino ms corto a la solucin es muy largo, puesto que el nmero de nodos que necesita examinar se incrementa exponencialmente con la longitud del camino. - Los operadores irrelevantes o redundantes incrementarn grandemente el nmero de nodos que deben explorarse.

Una forma de implementacin de este mtodo es usar un conjunto de caminos candidatos: - Si el primer camino est encabezado por un nodo objetivo, sta es la solucin del problema. - Si no, a) Remover el primer camino del conjunto de caminos candidatos, generar el conjunto de todas las posibles extensiones un nivel ms de este camino y aadir las mismas al final del conjunto. b) Repetir el proceso.

En el ejemplo mostrado en la figura 3.7 este proceso se desarrollara como sigue: a) Conjunto de caminos candidatos inicial [[1]] b) Generando las extensiones de [1] [[2,1] , [3,1]] c) Al remover el primer camino candidato y generar sus extensiones [5,2,1]] se obtiene el nuevo conjunto de caminos candidatos: [[3,1] , [4,2,1] , [5,2,1]] d) Removiendo y generando nuevamente las extensiones [[6,3,1] , [7,3,1]] se obtiene [[4,2,1] , [5,2,1] , [6,3,1] , [7,3,1]] e) As sucesivamente son obtenidos los siguientes conjuntos hasta llegar a: [[7,3,1] , [8,4,2,1] , [9,4,2,1] , [10,5,2,1], [11,6,3,1]] [[4,2,1] ,

66

En este caso el camino inicial tiene como cabeza el nodo objetivo y el proceso termina en esta solucin.

El procedimiento anterior puede escribirse en el lenguaje PROLOG como si-gue: busq_ancho([[Nodo|Resto]|_],[Nodo|Resto]):- meta(Nodo). Busq_ancho([[Nodo|Resto]|Otros],Solucion):bagof([M,Nodo|Resto],(sucesor(Nodo,M), not miembro(M,[Nodo|Resto])), NuevoCamino), append(Otros,NuevoCamino,Camino1),!, busq_ancho(Camino1,Solucion). %En caso de que Nodo no tenga sucesor, entonces busq_ancho([[Nodo|Resto]|Otros],Solucion):- busq_ancho(Otros,Solucion). Aqu meta/1 es un hecho que indica el nodo objetivo, miembro/2 es un predicado que determina si un elemento es miembro de una lista, sucesor/2 indica el sucesor de un nodo dado y append/3 concatena dos listas. En [IPN88] puede verse otra implementacin de este algoritmo en PROLOG y una en LISP.

3.3.3. Bsqueda primero en profundidad.

La bsqueda primero en profundidad (depth-first) explora, primeramente, el nodo raz y luego el sucesor de ste ubicado en la rama ms a la izquierda. Si este nodo es el objetivo, entonces hemos encontrado el camino. Si no, se contina extendiendo este camino tomando siempre el primer sucesor. Si el nodo no tiene ms sucesores, se pasa al siguiente sucesor de su predecesor, o sea, se retrocede al nivel anterior para tomar el otro sucesor y as sucesivamente, hasta alcanzar el objetivo o hasta una profundidad determinada. El recorrido primero en profundidad del espacio de bsqueda mostrado en la figura 3.7 es 1-2-4-8-9-5-10-3-6-11-7. Este mtodo simboliza a un explorador que toma riesgos. Este mtodo tiene como ventaja la eficiencia que se alcanza en el uso de la memoria. Si la longitud mxima de una rama del rbol es d, como slo se necesita almacenar el camino actual, entonces la complejidad espacial del algoritmo es O(d). En la prctica la bsqueda por este mtodo se limita por el tiempo y no por el espacio. Sin embargo, tiene como desventaja que si existen ramas infinitas, puede no encontrar la solucin al problema, an tenindola. Es por esto que, en ocasiones, se requiere que se defina un corte a una profundidad arbitraria para

67

evitar, lo ms posible, caer en caminos o lazos infinitos. Si la profundidad de corte seleccionada c es menor que la profundidad de la solucin d, el algoritmo terminar sin encontrar una solucin, mientras que si c > d, se paga un precio alto, O(bc), en trminos del tiempo de ejecucin, donde b es el nmero mximo de hijos (o ramas). El procedimiento anterior puede escribirse en el lenguaje PROLOG como si-gue: busq_prof(Nodo,[Nodo]):- meta(Nodo). Busq_prof(Nodo,[Nodo|Solucion]):- sucesor(Nodo,Nodo1), busq_prof(Nodo1,Solucion).

Aqu meta/1, nuevamente, es un hecho que indica el nodo objetivo y sucesor/2 indica el sucesor de un nodo dado. En [Bra86] e [IPN88] pueden verse otras implementaciones de este algoritmo en PROLOG, usando corte de profundidad y chequeo de existencia de ciclos. En [IPN88] puede verse adems una realizada en LISP.

La bsqueda primero en profundidad es mejor cuando el nodo objetivo est situado en la porcin inferior izquierda del rbol de bsqueda, mientras que la bsqueda primero a lo ancho es mejor cuando el nodo objetivo est situado en la porcin superior derecha de dicho rbol, segn se muestra en la figura 3.8. Una variante del mtodo de bsqueda primero en profundidad es la bsqueda iterativa primero en profundidad. Esta consiste en realizar una bsqueda primero en profundidad con corte 1, luego otra para el corte 2 y as sucesivamente, incrementando en uno la profundidad de corte, hasta encontrar la solucin. Como este mtodo nunca explora un nodo hasta que todos los nodos de los niveles anteriores han sido examinados, se garantiza encontrar la solucin ptima. Adems, como en cada momento se est ejecutando una bsqueda primero en profundidad, la complejidad espacial es O( d). Aunque parezca lo contrario, se puede demostrar que la complejidad temporal es O( bd), al igual que en la bsqueda primero a lo ancho. La razn de esto es que como el nmero de nodos, en un nivel dado del rbol, crece exponencialmente con la longitud del camino o profundidad, casi todo el tiempo se gasta en el nivel ms profundo. El recorrido de este mtodo para la figura 3.7 es 1-2-3-1-2-4-5-3-6-7.

Fcil para ambas

Mejor: a lo ancho

68

Mejor:en profundidad

Difcil para ambas

Fig. 3.8. Comparacin de los dos mtodos de bsqueda.

3.3.4. Bsqueda en rboles y/o.

Los algoritmos para bsqueda primero a lo ancho y primero en profundidad en rboles y/o son similares a los anteriormente estudiados, slo se diferencian en la verificacin de las condiciones de terminacin. Cada vez que se genera un nodo o un grupo de nodos, el algoritmo tiene que chequear si se satisfacen las condiciones de terminacin de acuerdo al tipo de nodo, ya sea Y u O.

3.3.5. Bsqueda en sistemas de produccin.

En los sistemas de produccin se utilizan generalmente dos tipos de mtodos de bsqueda. Un mtodo consiste en realizar la bsqueda desde el estado inicial a un estado final, o sea, desde las evidencias a las conclusiones, y recibe el nombre de encadenamiento hacia delante (forward chaining) o enfoque guiado por datos (datadriven). El otro mtodo realiza la bsqueda en direccin contraria, comenzando desde el estado objetivo y terminando en un estado inicial, o sea, el razonamiento se realiza desde una hiptesis (objetivo) hasta las evidencias primarias necesarias para refutar o confirmar dicha hiptesis. En este caso el mtodo recibe el nombre de encadenamiento hacia atrs (backward chaining) o enfoque guiado por objetivos (goaldriven). Estudiemos con profundidad estos mtodos, as como una combinacin de ambos.

69

3.3.5.1. Bsqueda con encadenamiento hacia adelante (enfoque guiado por datos).

En la bsqueda con encadenamiento hacia delante se comienza a construir el rbol situando como raz al estado inicial. El siguiente nivel del rbol se genera encontrando todas las reglas cuyas partes izquierdas concuerden con el nodo raz y usando sus partes derechas para crear los nuevos estados. De esta manera el proceso contina hasta generar un estado que concuerde con el estado meta. En este mtodo las reglas son slo aplicables si su parte condicin es satisfecha por la B.D. El siguiente procedimiento da la idea algortmica de un mdulo de aplicacin de reglas sencillo que est basado en este enfoque. Procedimiento generar: 1) Identificar el conjunto S de reglas aplicables. 2) Mientras S no sea vaco, a) Seleccionar una regla R de S. b) Aplicar R, generando los nuevos estados y aadindolos a la B.D. c) Si se gener el estado objetivo entonces TERMINAR y EXITO. d) Si no, llamar nuevamente al procedimiento generar. e) Eliminar R de S y anular el efecto de aplicar R.

Este proceso de encadenamiento hacia delante tiene un carcter no determinstico, pues el ordenamiento de las reglas aplicadas no est explcitamente definido en el caso de que el conjunto de reglas aplicables est formado por ms de una regla. Ellas forman, precisamente, el llamado conjunto conflicto. En el captulo anterior mencionamos algunas tcnicas de resolucin de conflictos en los sistemas de produccin.

Base de reglas R1: Si X es divisible por 12, entonces X es divisible por 6. R2: Si X es divisible por 20, entonces X es divisible por 10. R3: Si X es divisible por 6, entonces X es divisible por 2. R4: Si X es divisible por 10, entonces X es divisible por 5.

70

Base de Datos inicial N es divisible por 12. N es divisible por 20.

Fig. 3.9. Una base de reglas y una B.D. inicial.

Analicemos un ejemplo. Supongamos que tenemos la base de reglas y la B.D. inicial mostradas en la figura 3.9. El problema es determinar si N es divisible por 5. Comencemos a aplicar el procedimiento generar, suponiendo que el sistema siempre escoge la primera regla que aparece: S={R1,R2}. Se selecciona R1. Ahora la B.D. es: N es divisible por 12. N es divisible por 20. N es divisible por 6. Ningn hecho concuerda con el estado objetivo. Se llama de nuevo a generar. S1={R2,R3}. R1 no est incluido en S 1 porque su aplicacin no cambiara el estado en curso de la B.D. Se aplica ahora R 2 y la B.D. es: N es divisible por 12. N es divisible por 20. N es divisible por 6. N es divisible por 10. Nuevamente llamamos a generar. S2={R3,R4}. R1 y R2 no estn en S2 porque no son aplicables. Se selecciona ahora a R3 y la B.D. es: N es divisible por 12. N es divisible por 20. N es divisible por 6. N es divisible por 10. N es divisible por 2. Al llamar nuevamente a generar,

71

S3={R4}. Se aplica R4 y se llega a la solucin del problema. Un listado de cmo se consigui esta solucin da el orden en que se utilizaron las reglas: R1, R2, R3, R4. El procedimiento finaliza realizando lo siguiente: - Anula el efecto de R4, es decir, elimina N es divisible por 5 de la B.D. - Elimina R3 de S2. - Anula el efecto de R3, eliminando N es divisible por 2 de la B.D. - Se contina en el ciclo del paso 2). - Se selecciona R4 de S2 y se aplica. Se obtiene otra solucin: R 1, R2, R4. El proceso contina hasta que se hayan establecido todas las maneras de poder conseguir la solucin. El espacio de bsqueda para este problema est representado en la figura 3.10. Note cmo en este espacio cada operador de transicin de estados es precisamente una regla de produccin.

Estado inicial R1 R2

R2

R3

R1 R4 E E xito

R3

R 4 R2 R3 R4 E E

R4 E

R4

R4

E E

Fig. 3.10. Espacio de bsqueda del ejemplo del encadenamiento hacia delante.

La bsqueda con encadenamiento hacia delante tiene las siguientes ventajas:

72

- Simplicidad - Puede utilizarse para proporcionar todas las soluciones a un problema. Sin embargo, tiene la desventaja de que el comportamiento del sistema, al intentar solucionar un problema, puede ser ineficaz y parecer tambin desati-nado, ya que algunas de las reglas ejecutadas podran no estar relacionadas con el problema en cuestin. En el ejemplo estudiado las reglas 1 y 3 no nos acercan a la solucin del problema.

3.3.5.2. Bsqueda con encadenamiento hacia atrs (enfoque guiado por objetivos).

En el encadenamiento hacia atrs se comienza a construir el rbol situando como raz al estado objetivo. El siguiente nivel del rbol se genera encontrando todas las reglas cuyas partes derechas concuerden con el nodo raz y usando las partes izquierdas para crear los nuevos estados. Todas estas son las reglas que generaran el estado que queremos si pudisemos aplicarlas. Este proceso contina hasta generar un estado que concuerde con el estado inicial. En este enfoque el sistema centra su atencin, nicamente, en las reglas que son relevantes para el problema en cuestin. En l el usuario comienza especificando un objetivo mediante la declaracin de una expresin E cuyo valor de verdad hay que determinar. El siguiente procedimiento da la idea algortmica de un mdulo simple de aplicacin de reglas que utiliza este enfoque. Procedimiento validar: Tiene como entrada a una expresin X. 1) Resultado:= falso 2) Identificar el conjunto S de reglas aplicables que tengan a X en su parte derecha. 3) Si S es vaco, entonces pedir al usuario que aada reglas a la base. 4) Mientras Resultado sea falso y S no sea vaco, a) Seleccionar y eliminar una regla R de S. b) C:= parte izquierda de R. c) Si C es verdadero en la B.D., entonces Resultado:= verdadero. d) Si C no es ni verdadero ni falso en la B.D., entonces i) Llamar a validar pasndole como argumento a C. ii) Si validar retorn verdadero, entonces Resultado:= verdadero. 5) RETORNAR VERDADERO.

73

Para ejecutar este procedimiento, el usuario pregunta por el valor de verdad de validar tomando como argumento la expresin E, donde E puede ser, por ejemplo, N es divisible por 5. Lo primero que hace este procedimiento es identificar todas las reglas que tienen a E en el miembro derecho suponiendo que se hacen sustituciones apropiadas. Si no existen tales reglas, se pide al usuario que proporcione alguna. Si hay ms de una regla, el sistema selecciona una, usando alguna estrategia de resolucin de conflictos. Cuando una regla es seleccionada, su parte condicin C es verificada con respecto a la B.D. Si C es verdadera en la B.D., entonces se establece la verdad de E y el proceso puede terminar con xito. Si C es falsa en la B.D., entonces no se puede utilizar R para establecer la verdad de E y se selecciona otra regla de S. Si C es desconocida (es decir no es verdadera ni falsa en la B.D.), entonces se le considera como nuevo subobjetivo y se intenta establecer su valor de verdad llamando recursivamente a validar con C como argumento. Si validarA FAVOR es verdadero, entonces la regla R es aplicable, se establece la verdad de E y el proceso puede terminar con xito. Si validarA FAVOR es falso, entonces se selecciona otra regla de S. As, el proceso opera hacia atrs a partir del objetivo, intentando alcanzar subobjetivos que puedan establecer dicho objetivo por s mismos. Analicemos el ejemplo estudiado en la seccin anterior, considerando las reglas y la B.D. inicial de la figura 3.9. Supongamos nuevamente que se quiere determinar si N es divisible por 5. S={R4}, pues R4 es la nica regla con X es divisible por 5 en el miembro derecho. Se genera el subobjetivo N es divisible por 10 mediante la 74rqume-cin de N por X en la parte condicin de R 4. Como N es divisible por 10 no es ni verdadera ni falsa en la B.D. se llama a validar tomando como argumento la expresin N es divisible por 10. S1={R2}. Se genera el subobjetivo N es divisible por 20 que es verdadero en la B.D. As la llamada inicial a validar termina con verdadero. Los sistemas guiados por objetivos preguntan tanto al usuario como a la B.D. al determinar la verdad de un subobjetivo. As, el usuario no necesita entrar todos los datos disponibles inicialmente, sino que puede esperar hasta que el sistema pida datos. Si se requieren todas las maneras de establecer E, se elimina de la condicin del ciclo en el paso 4) Resultado=falso y se deja slo S no es vaco. El procedimiento validar es simple, en el sentido de que supone que las partes izquierdas de las reglas constan de declaraciones nicas, o sea, que no contienen conectivas lgicas. Es necesario, entonces, extender este procedimiento si se desea trabajar con este mtodo de bsqueda. El encadenamiento hacia atrs tiene como ventaja que no solicita datos ni aplica reglas que no estn relacionadas con el problema en cuestin.

74

Ntese que en ambos mtodos de bsqueda pueden usarse las mismas reglas, tanto para razonar hacia delante desde el estado inicial como para razonar hacia atrs desde el estado objetivo. Dependiendo de la topologa del espacio del problema, puede ser significativamente ms eficiente la bsqueda en un sentido que en otro. Tres factores influyen en esto: - Existen ms estados iniciales posibles o ms estados finales?. Preferiramos movernos desde un conjunto de estados lo ms pequeo posible hacia el conjunto de estados mayor, y por tanto, ms fcil de encontrar. Un ejemplo que ilustra esto es el siguiente: es ms fcil conducir desde un lugar desconocido a nuestra casa que desde ella a ese lugar desconocido. Existen muchos ms lugares que nos ayudan a llegar a nuestra casa de los que nos pueden ayudar a llegar al lugar desconocido. Si podemos llegar a cualquiera de ellos podemos llegar a casa fcilmente. Por tanto si nuestra posicin de partida es nuestra casa y nuestra meta el lugar desconocido, es mejor razonar hacia atrs. Otro ejemplo es la integracin simblica, donde el estado inicial es una frmula que tiene el smbolo integral y el estado meta es un conjunto de frmulas que no tengan el smbolo integral. Luego empezamos con un nico estado inicial y un enorme nmero de estados metas. Es mejor razonar hacia delante, usando las reglas de integracin a partir de la frmula inicial, que empezar con una expresin arbitraria libre de integrales, usando las reglas de diferenciacin e intentar generar la integral inicial. En los sistemas de diagnstico hay pocas metas posibles, por lo que es mejor usar el encadenamiento hacia atrs. Sin embargo, en el juego del ajedrez la nica alternativa posible es utilizar el encadenamiento hacia delante, pues el nmero de hiptesis en este caso es virtualmente ilimitado. - En qu direccin el factor de ramificacin, o sea, el promedio de nodos hijos es mayor? Nos gustara avanzar siempre en la direccin en que ste sea menor. Un ejemplo es el problema de demostrar teoremas. Nuestros estados iniciales son un pequeo conjunto de axiomas y los estados finales los teoremas a demostrar. Ninguno de estos conjuntos es significativamente ms grande que el otro. Consideremos, entonces, el factor de ramificacin. A partir de un conjunto pequeo de axiomas podemos derivar un nmero muy elevado de teoremas. Usando el otro enfoque de este elevado nmero de teoremas debe regresarse a un pequeo nmero de axiomas. El factor de ramificacin es significativamente mayor si vamos hacia delante, desde los axiomas hasta los teoremas, que al revs. Por lo tanto, es mejor razonar hacia atrs. De hecho, los matemticos ya se han dado cuenta de esto. Uno de los primeros programas de I.A., el Lgico Terico (Newell 1963) usaba el razonamiento hacia atrs para demostrar diversos teoremas del primer captulo de los Principia de Russell y Whitehead. - Se le pedir al programa que justifique su proceso de razonamiento? Es importante avanzar en la direccin que concuerde ms con la forma en que

75

piensa el usuario. Por ejemplo, los doctores se niegan a aceptar el consejo de un programa de diagnstico que no pueda explicar su razonamiento. MYCIN, un S.E. que diagnostica enfermedades infecciosas, razona hacia atrs para determinar la causa de la enfermedad del paciente. Para ello usa reglas tales como si el organismo tiene el siguiente conjunto de caractersticas determinadas por los resultados del laboratorio, entonces es probable que el organismo sea X. Al razonar hacia atrs puede responder a preguntas como por qu debera realizar esa comprobacin que acaba de pedir? Y tendra respuestas como porque ayudara a determinar si el organismo X est presente.

3.3.5.3. Bsqueda bidireccional.

La bsqueda bidireccional es una combinacin de las dos bquedas anteriores. Consiste en realizar simultneamente una bsqueda con encadena-miento hacia delante desde el estado inicial y una bsqueda con encadenamiento hacia atrs desde el estado objetivo, hasta que ambas se encuentren. El camino a la solucin se obtiene, entonces, concatenando el camino desde el estado inicial con el inverso del camino desde el estado objetivo. Para poder garantizar que ambas bsquedas se encuentren al menos una de ellas debe seguir la estrategia de la bsqueda primero a lo ancho. La utilizacin de este mtodo exige, adems, que los operadores del problema sean inversibles. Suponiendo que las comparaciones para identificar estados comunes pueden ser hechas en un tiempo constante por nodo, la complejidad temporal es O( bd/2), ya que cada bsqueda slo necesita llegar hasta la mitad de la profundidad de la solucin. La complejidad espacial es tambin O( bd/2), pues una de las bsquedas usa la estrategia de bsqueda primero a lo ancho. Re-cuerde que b es el mximo nmero de hijos (o ramas) de los nodos y d, la profundidad de la solucin. Este mtodo parece atrayente si el nmero de nodos de cada paso crece exponencialmente con el nmero de pasos que se dan. Resultados empricos sugieren que para buscar a ciegas, esta estrategia es realmente efectiva. Desafortunadamente, otros resultados sugieren que para una bsqueda heurstica lo es mucho menos, pues puede ocurrir que las bsquedas no se encuentren y se necesite ms trabajo que el que habra dado realizar una sola de ellas. En un programa construido cuidadosamente pudiera emplearse con xito.

3.3.6. Bsqueda por diferencias.

Este mtodo consiste en lo siguiente:

76

1) Estado actual:= Estado inicial. 2) Comparar el estado actual con el estado meta. Si no hay diferencias, entonces TERMINAR y EXITO. 3) Determinar el o los operadores que reducen esas diferencias. 4) Aplicar dichos operadores y generar el nuevo estado actual. 5) Ir al paso 2).

El proceso de anlisis por reduccin de diferencias se centra en la deteccin de diferencias entre el estado actual y el estado meta. Una vez que se ha aislado una diferencia, debe encontrarse un operador que pueda reducirla. Pero quizs el operador no pueda aplicarse al estado actual. Por tanto, estableceremos un subproblema que consiste en llegar a un estado en que pueda aplicarse dicho operador y quizs este operador no produzca el estado meta deseado. Entonces tenemos el segundo subproblema de llegar desde el estado producido por el operador hasta el estado meta. Pero si la diferencia se ha escogido correctamente y el operador es efectivo para reducirla, debera ser ms fcil resolver los dos subproblemas que el problema original. El proceso de reduccin de diferencias puede aplicrseles recursivamente. Para enfocar la atencin del sistema en los problemas mayores deben asignarse niveles de prioridad a las diferencias y considerarse primero las de mayor prioridad. Uno de los sistemas de solucin de problemas, el desarrollado por Newel, Shaw y Simon, se basa en este mtodo. A este sistema se le llam Solucionador General de Problemas (GPS). La esencia de este procedimiento es la siguiente: dadas las descripciones del estado inicial E y el objetivo O, Procedimiento GPS: Toma como argumento a un objetivo G, inicialmente O. 1) Mientras E no sea equivalente a G a) D:= una diferencia entre E y G. b) R:= una regla para reducir D. c) C:= parte izquierda de R. d) Llamar a GPS tomando como argumento a C. e) E:= resultado de aplicar R a E.

Los anlisis de reduccin de diferencias se basan en un conjunto de reglas STRIPS que pueden transformar un estado del problema en otro. Analicemos el ejemplo de un dominio sencillo de un robot. Supongamos que estn disponibles los siguientes operadores STRIPS:

77

9EMPUJAR(obj,loc) Precondicin: EN(robot,obj) GRAN(obj) DESPEJADO(obj) BRAZOVACIO Suprimir: EN(robot,locant) EN(obj,locant) Aadir: EN(obj,loc) EN(robot,loc) 9LLEVAR(obj,loc) Precondicin: EN(robot,obj) PEQUEO(obj) Suprimir: EN(robot,locant) EN(obj,locant) Aadir: EN(obj,loc) EN(robot,loc) 9CAMINAR(loc) Precondicin: ninguna Suprimir: EN(robot,locant) Aadir: EN(robot,loc) 9COGER(obj) Precondicin: EN(robot,obj) BRAZOVACIO Suprimir: BRAZOVACIO Aadir: SOSTENIDO(obj) 9DEJAR(obj) Precondicin: SOSTENIDO(obj) Suprimir: SOSTENIDO(obj) Aadir: BRAZOVACIO 9COLOCAR(obj1,obj2) Precondicin: EN(robot,obj2) SOSTENIDO(obj1) Suprimir: SOSTENIDO(obj1) Aadir: ENCIMA(obj1,obj2) BRAZOVACIO

Los predicados usados son los siguientes: EN(robot,obj): el robot est situado al lado del objeto. GRAN(obj): el objeto es de un tamao grande.

78

PEQUEO(obj): el objeto es de un tamao pequeo. DESPEJADO(obj): el objeto no tiene nada encima. EN(robot,loc): el robot est en una determinada localizacin. SOSTENIDO(obj): el brazo del robot est sosteniendo al objeto. ENCIMA(obj1,obj2): el objeto obj1 est encima del objeto obj2. BRAZOVACIO: el brazo del robot est vaco.

La tabla de diferencias que describe qu operador u operadores reducen las distintas diferencias es la siguiente: EMPUJAR LLEVAR CAMINAR COGER DEJAR COLOCAR Mover objeto Mover robot Despejar objeto Poner objeto sobre objeto Vaciar brazo Sostener un objeto X X X X X X X X

Supongamos, ahora, el siguiente problema del robot: mover un escritorio de una habitacin a otra con dos objetos encima de l. Estos objetos deben moverse tambin. En el estado inicial el robot est en una determinada posicin con su brazo vaco. La principal diferencia entre el estado inicial y el meta es la situacin del escritorio. Para reducir esta diferencia puede escogerse LLEVAR o EMPUJAR. Supongamos que se escoge LLEVAR. Al intentar satisfacer sus precondiciones, dos diferencias ms deben reducirse: la situacin del robot y el tamao del escritorio. La situacin del robot puede reducirse aplicando CAMINAR, pero no hay operador que permita cambiar el tamao de un objeto, ya que el escritorio es un objeto grande y se necesita que sea pequeo. Por lo tanto, debe escogerse EMPUJAR. El progreso del resolutor de problemas en este punto es:

A Inicio

C EMPUJAR

D Meta

Hay que reducir las diferencias entre A y B y entre C y D. EMPUJAR tiene cuatro

79

precondiciones, que generan dos diferencias, pues ya el escritorio es grande y el brazo se supone vaco. Podemos llevar al robot a la posicin correcta usando CAMINAR y la superficie del escritorio puede despejarse usando dos veces COGER. Despus del primer COGER, el intento de realizar el segundo produce otra diferencia: el brazo debe estar vaco. Puede usarse DEJAR para reducir esta diferencia. Despus del segundo COGER, debemos nuevamente aplicar DEJAR para que el brazo est vaco. Una vez realizado EMPUJAR, el estado del problema est cerca de la meta, pero no del todo. Para poner los objetos nuevamente en el escritorio podemos usar COLOCAR. El progreso del resolutor de problemas en este punto es: Inicio A | | | | | B | | C | E | COLOCAR Meta D

CAMINAR COGER DEJAR COGER DEJAR EMPUJAR

La diferencia final entre C y E puede reducirse usando CAMINAR para llevar al robot de regreso a los objetos, seguido de COGER, LLEVAR y COLOCAR dos veces. Hemos omitido el anlisis de las diferencias. Su orden puede ser crtico, por lo que es importante reducir primero las diferencias principales. La secuencia de operadores final sera la siguiente: Inicio A | | | | | B | C | ... Meta

A FAVORINAR COGER DEJAR COGER DEJAR EMPUJAR E ... | COLOCAR | | | | | | | D |

CAMINAR COGER LLEVAR COLOCAR CAMINAR COGER LLEVAR

En problemas complejos, el nmero de permutaciones de las diferencias es muy grande y las tablas de diferencias pueden ser inmensas. Existen tcnicas en las cuales se extiende este enfoque de reduccin de diferencias para estos problemas. Una de ellas es la planificacin, la cual estudiaremos ms adelante.

80

3.3.7. Bsqueda de soluciones mltiples.

En ocasiones necesitamos encontrar ms de una solucin al problema que queremos resolver. Esta bsqueda podemos implementarla de dos formas: - Removiendo el camino de bsqueda encontrado. Este mtodo consiste en lo siguiente: 1) Encontrar una solucin utilizando algn mtodo de bsqueda. 2) Eliminar del rbol de bsqueda todos los nodos que forman parte del camino encontrado a la solucin. 3) Ir al paso 1). - Removiendo el ltimo nodo del camino. Este mtodo es similar al anterior. Su nica diferencia radica en que en vez de eliminar el camino encontrado, se elimina slo el ltimo nodo de este camino, repitindose nuevamente el proceso.

3.4. Bsqueda heurstica.

Analicemos el problema del vendedor ambulante. Para resolverlo usando alguna de las tcnicas de bsqueda a ciegas estudiadas, se explorara el rbol de todos los posibles caminos y se devolvera aquel de menor longitud. Si existen N ciudades, el nmero de caminos diferentes entre ellas es (N-1)!. Explorar cada camino nos tomara un tiempo proporcional a N y, por tanto, el tiempo total sera proporcional a N!. Tomando 10 ciudades tardaramos un tiempo de 10!=3 628 000 para solucionar el problema. Este fenmeno se llama explosin combinatoria. Para solucionar eficientemente la mayora de los problemas difciles, a menudo es necesario comprometer los requerimientos de movilidad y sistematicidad, y construir una estructura de control que, aunque no nos garantice que encontremos la mejor respuesta, por lo menos proporcione una respuesta suficientemente buena.

3.4.1. Definicin de heurstica.

La palabra heurstica viene del griego heuriskein que significa descubrir. Ella es

81

tambin el origen de eureka, que se deriva de la famosa exclamacin de Arqu82rqumedesika (lo encontr), que lanz al descubrir un mtodo para determinar la pureza del oro. Feigenbaum y Feldman la definen as: Una heurstica (regla heurstica o mtodo heurstico) es una regla para engaar, simplificar o para cualquier otra clase de ardid, la cual limita drsticamente la bsqueda de soluciones en grandes espacios de solucin. La posibilidad de efectuar la bsqueda de una forma ms eficiente se basa en el uso de alguna informacin especfica para el problema a solucionar. Esta informacin, aunque imprecisa e incompleta, permite distinguir cules de los nodos dirigen mejor el avance hacia la meta y permite realizar este avance siempre en la direccin que momentneamente tiene la mejor perspectiva. Se llama bsqueda heurstica a los mtodos de bsqueda que usan este tipo de informacin. Precisamente por esto a estos mtodos, generalmente, se les llaman mtodos fuertes. Las tcnicas heursticas son como las guas tursticas: son buenas cuando apuntan a direcciones interesantes y son malas cuando apuntan a callejones sin salida. Usando buenas tcnicas heursticas, podemos esperar lograr buenas soluciones a problemas difciles, como el del vendedor ambulante, en un tiempo menor que el exponencial. Analicemos un ejemplo de heurstica. Supongamos que un hombre se encuentra en una extensa llanura y tiene sed. Caminando ha llegado a una pequea elevacin que es la nica en esa regin y se sube a ella. Su objetivo es, por supuesto, encontrar agua. Desde la elevacin el hombre observa el panorama que se presenta en la figura 3.11. Qu direccin debe seguir para hallar el agua?. Evidentemente la vegetacin verde es un indicio de que en esa zona hay humedad, por lo que es muy probable que exista agua en la superficie o subterrnea. Por otro lado, el movimiento de animales puede indicar que ellos se dirigen all a beber, por lo que, posiblemente, el agua est en la superficie. El hombre, al usar esta informacin, puede decidir dirigirse primero hacia el norte, y si no encuentra solucin, o sea, no halla agua, dirigirse al oeste. En este caso, la vegetacin verde y el movimiento de animales han sido utilizadas como heurstica. La bsqueda heurstica representa una de las herramientas clsicas de la I.A. En favor de su uso, se pueden mencionar las razones siguientes: - Sin ellas estaramos atrapados en la explosin combinatoria. - Pocas veces necesitamos la solucin ptima, usualmente una buena aproximacin satisface nuestras exigencias. De hecho, en la vida real las personas, generalmente, no buscan la mejor solucin a un problema; tan pronto como encuentran una, abandonan la bsqueda. Por ejemplo, al tratar de parquear un carro, cuando se encuentra un espacio disponible se parquea, aunque ms adelante exista uno mejor. - Aunque las aproximaciones producidas por ellas pueden, en el peor de los casos, no ser muy buenas, los peores casos surgen raramente en el mundo real. Esto conduce a otra forma de definir la I.A., como el estudio de tcnicas para

82

resolver problemas exponencialmente difciles en un tiempo polinomial explotando el conocimiento sobre el dominio del problema.

Norte

Vegetacin verde Movimiento de animales

Oeste

Este

Vegetacin verde

HOMBRE

Vegetacin amarilla

Vegetacin amarilla

Sur

Fig. 3.11. Panorama visto por el hombre desde la elevacin.

La informacin heurstica puede incorporarse en un mtodo de bsqueda de varias formas: - En las reglas mismas. Por ejemplo, las reglas para el problema del ajedrez pueden describir no solamente el conjunto de movimientos legales, sino tambin un conjunto de movimientos sensatos segn el escritor de las reglas. - Como una funcin heurstica que evale los estados individuales del problema y determine hasta qu punto son deseables. Las funciones

83

heursticas bien diseadas guian eficientemente el proceso de bsqueda en la direccin ms provechosa. El programa que las utilice puede intentar minimizar dicha funcin o maximizarla segn sea apropiado. Ejemplos de funciones heursticas son las siguientes: Ajedrez: la ventaja de piezas nuestras sobre el oponente. Rompecabezas de 8 piezas: correctamente. el nmero de baldosas colocadas

Vendedor Ambulante: la suma de las distancias recorridas hasta ahora o tomar la distancia ms pequea de entre las de los sucesores del nodo actual. Titafor: Puntuacin otorgada de la siguiente forma: un punto para cada fila, columna o diagonal en donde podamos ganar y en la que tengamos una pieza y dos puntos para cada fila, columna o diagonal que sea posible ganadora y en la que tengamos 2 piezas. El papel exacto de las funciones heursticas se estudiarn en cada uno de los mtodos de bsqueda heurstica.

3.4.2. Bsqueda por el incremento mayor (hill-climbing).

Este mtodo consiste en realizar en cada momento la transicin hacia el estado que se encuentre ms cerca del estado objetivo. Este criterio puede ser implementado definiendo una funcin de seleccin de estados que escoja el estado en el cual la funcin de evaluacin de estados produzca el mayor incremento. Una de las ventajas de este mtodo de bsqueda es que tiende a reducir el nmero de nodos visitados para alcanzar una solucin. Sin embargo, este mtodo tiene el problema de que puede no terminar nunca, debido a que como el algoritmo slo almacena el estado actual no tiene manera de saber dnde ha estado y puede caer en un ciclo. Una forma de solucionar esta dificultad es mantener una lista de estados visitados y nunca revisitar uno de stos, lo cual garantiza que el algoritmo terminar siempre que el espacio de estados del problema sea finito. Apliquemos este mtodo al problema del vendedor ambulante: 1) Seleccionar arbitrariamente una ciudad de partida. 2) Para seleccionar la siguiente ciudad, mirar todas las ciudades que an no se han visitado. Seleccionar aquella que sea la ms cercana a la ciudad actual e ir a ella. 3) Repetir el paso 2) hasta que se hayan visitado todas las ciudades.

84

Este procedimiento se ejecuta, para N ciudades, en un tiempo proporcional a N 2, lo cual constituye una mejora significativa sobre el N! que se obtuvo utilizando un mtodo de bsqueda a ciegas.

3.4.3. Bsqueda por el mejor nodo (best-first search).

La bsqueda por el mejor nodo es una forma de combinar las ventajas de las bsquedas en profundidad y de anchura en un nico mtodo. En cada paso del proceso de bsqueda por el mejor nodo, seleccionamos el ms prometedor de aquellos nodos que se han generado hasta el momento. Esto se realiza aplicando una funcin heurstica apropiada a cada uno de ellos. Entonces expandimos el nodo elegido usando las reglas para generar a sus sucesores. Si uno de ellos es una solucin podemos terminar. Si no, todos esos nodos se aaden al conjunto de nodos generados hasta ahora. Se selecciona de nuevo el ms prometedor y el proceso contina. Lo que sucede usualmente es que se realiza un proceso de bsqueda en profundidad mientras se explora una rama prometedora. Como ocasionalmente no se encuentra solucin, se explora otra rama previamente ignorada y que ahora parece ms prometedora. En este mtodo de bsqueda la funcin heurstica que estima los mritos de cada nodo generado est definida como: f(n) = g(n) + h(n), donde g(n) es una medida del costo del camino desde el nodo inicial al nodo actual n y h(n) es un estimado del costo adicional de llegar desde el nodo n al nodo meta. g(n) No es, necesariamente, el costo del camino ptimo desde el nodo inicial al nodo actual, pues puede haber caminos mejores no recorridos todava. g(n) simplemente se calcula como la suma de los costos de los arcos del camino actual. La funcin h(n), sin embargo, es tpicamente heurstica y explota el conocimiento sobre el domino del problema, ya que el mundo entre el nodo n y el meta no ha sido explorado. Por supuesto, no existe un mtodo general para construir h(n), sino que depende del problema particular. La figura 3.12 muestra el principio de un procedimiento de bsqueda por el mejor nodo. Los nmeros que aparecen al lado de los nodos son los valores de f(n). Note cmo en cada paso se selecciona el nodo de menor valor de f(n), generando sus sucesores. Al algoritmo de bsqueda que utiliza la funcin f(n) se le llama algoritmo A. Este algoritmo no garantiza encontrar el camino ptimo a la solucin, pues ste slo calcula un estimado del costo para alcanzar el nodo objetivo.

85

Paso 1

Paso 2

Paso 3

(3) B(5) C (1) D

(3) B (5) C

(4) E (6) F Paso 4 Paso 5

(5)C

(5) C

86

G (6)H (5) E (4) F (6)

G(6) H (5) E (6) F

(2) I(1) J

Fig. 3.12. Un ejemplo de bsqueda por el mejor nodo.

Se puede definir la funcin f *(n) que, en cualquier nodo n, calcule el costo real del camino ptimo desde el nodo inicial al nodo n (g *(n)) ms el costo del camino ptimo desde el nodo n al nodo objetivo (h *(n)), es decir f*(n) = g*(n) + h*(n), donde h*(n) es una funcin de evaluacin heurstica admisible, o sea, n h*(n) es menor o igual que la distancia real mnima a la meta. Es precisamente por esto que el algoritmo que usa este estimador garantiza siempre encontrar, si existe, el camino ptimo a la solucin. A este algoritmo se le conoce con el nombre de algoritmo A*. Por ejemplo, para el problema del rompecabezas de 8 piezas puede tomarse h *(n) como el nmero de piezas que no estn en su posicin final. Otra variante, que contiene ms informacin heurstica pero requiere ms clculos, es la suma de las distancias desde la posicin actual de cada pieza a su posicin correcta. Podemos hacer algunas observaciones interesantes sobre este algoritmo: - Al incorporar g* en f* no siempre se elige como el siguiente nodo a expandir el que parece ms cercano a la meta. Esto es til si nos preocupa el camino que elijamos. Si slo nos importa llegar a una solucin de la forma que sea, ponemos g*=0 y con esto estamos eligiendo el nodo ms cercano a la meta. Si queremos encontrar un camino en el menor nmero de pasos, entonces ponemos el costo de un nodo a su sucesor constante igual a 1. Si el costo de los operadores vara, se refleja en cada nodo y se calcula el camino de costo mnimo. - Cuando h* = 0 y g* = d, donde d es el nivel de profundidad del nodo, el algoritmo A* es idntico al mtodo de bsqueda primero a lo ancho. Este algoritmo pudiera ser implementado mediante los siguientes pasos: Entrada: Nodos inicial y meta. Salida: Camino de costo mnimo del nodo inicial al meta, si existe. En otro caso, retorna NO.

87

1) Inicializar la lista Abiertos con el nodo inicial y Cerrados como la lista vaca. 2) Si Abiertos es la lista vaca, entonces TERMINAR y RETORNAR NO. 3) Si no, a) Remover el primer nodo de Abiertos y llamarle MejorNodo. Colocarlo en Cerrados. b) Si MejorNodo es el nodo meta, entonces TERMINAR y RETORNAR EL CAMINO, el cual se obtiene movindonos a travs de los apuntadores hacia atrs en la lista Cerrados. c) Si no, generar la lista de los sucesores de MejorNodo y para cada uno de ellos realizar lo siguiente: i) Poner a Sucesor apuntando a MejorNodo. Estos apuntadores hacia atrs permiten recuperar el camino. ii) Calcular f*(Sucesor) = g*(Sucesor) + h*(Sucesor), donde g*(Sucesor) = g*(MejorNodo) + costo de ir de MejorNodo a Sucesor. iii) Insertar a Sucesor en Abiertos segn su valor de f * ordenados de menor a mayor. d) Ir al paso 2).

En [Bra86] puede verse la implementacin de este algoritmo en PROLOG, as como su aplicacin para el problema del rompecabezas de 8 piezas. La principal desventaja del algoritmo A* es el requerimiento de memoria para mantener la lista de nodos generados no procesados, por lo que, en este aspecto, este algoritmo no es ms prctico que la bsqueda primero a lo ancho. Dos variantes del mismo son: - Mantener slo en la lista de nodos no visitados los mejores n nodos. El costo de esta tcnica es la prdida de la solucin ptima, pues un nodo malo localmente se puede sacar de la lista y l podra conducir al ptimo global. Esta tcnica se conoce como beam search. - El algoritmo IDA* (Iterative-Deepening-A*), el cual reduce drsticamente los requerimientos de memoria del algoritmo A* sin sacrificar la optimalidad de la solucin encontrada. Cada iteracin del algoritmo es una bsqueda primero en profundidad completa que mantiene la pista del costo f *(n) de cada nodo generado. Tan pronto como este costo exceda alguna cota se produce un corte y se realiza un retroceso al nodo ms recientemente generado. La cota comienza con el estimado heurstico del nodo inicial y en cada iteracin se incrementa con el valor mnimo que excedi la cota previa.

88

3.4.4. Bsqueda heurstica en rboles y/o o algoritmo AO*.

Para encontrar soluciones en un rbol y/o necesitamos un algoritmo similar al A*, pero con la capacidad de manejar los arcos Y apropiadamente. Este algoritmo debera encontrar un camino desde del nodo inicial a un conjunto de nodos que representan los estados meta. Ntese que puede ser necesario obtener ms de un estado meta, pues cada rama de un arco Y puede conducir a su propio nodo meta. Para ver por qu el algoritmo A * no es adecuado para la bsqueda en rboles y/o, consideremos la figura 3.13. Los nmeros representan el valor de f * en cada nodo. El problema radica en que la eleccin del nodo a expandir no slo depende del valor de f* en ese nodo, sino tambin de si ese nodo es parte del mejor camino actual a partir del nodo inicial. El nodo simple ms prometedor es C, pero no forma parte del mejor camino actual, pues hay que incluir al nodo D.

A (7)

(5) B (3) C (4) D

Fig. 3.13. Un rbol y/o donde no es posible utilizar A *.

Los nodos de un rbol y/o pueden ser clasificados en nodos primitivos, que son los que se corresponden con problemas que se resuelven directamente, nodos muertos, que son los que se corresponden con problemas no descomponibles y que no tienen solucin y nodos intermedios. Para cada uno de ellos el estimado heurstico h*(n) se puede definir como: - Si n es un nodo primitivo, entonces h*(n) = 0 - Si n es un nodo muerto, entonces h *(n) = - Si n es un nodo intermedio con j conectores, entonces h *(n) es el mnimo de los costos calculados para cada uno de los j conectores. Si el conector es Y, entonces su costo es

(cos to(n, n
k

) + h * ( n k )), donde k es el nmero de nodos

del conector. Si por el contrario, el conector es O, entonces su costo es costo(n,nk) + h*(nk).

89

Para estimar la bondad de un nodo slo se usa h *. No se usa g* como en el algoritmo A*, pues no es posible calcular tal valor nico, ya que puede haber muchos caminos para un mismo nodo y adems, tampoco es necesario, porque la travesa hacia abajo del mejor camino conocido garantiza que slo aquellos nodos que estn en el mejor camino sern considerados para la expansin. Si quisiramos implementar este algoritmo usando un grafo y/o es necesario realizar tres cosas en cada paso: - Atravesar el grafo comenzando por el nodo inicial y siguiendo el mejor camino actual, acumulando el conjunto de nodos que van en ese camino y an no han sido expandidos. - Seleccionar uno de estos nodos no expandidos y expandirlo. Aadir sus sucesores al grafo y calcular h* para cada uno de ellos. - Cambiar la h* estimada del nodo recientemente expandido para reflejar la nueva informacin proporcionada por sus sucesores. Propagar este cambio hacia atrs a travs del grafo. Para cada nodo que se visita mientras se va avanzando en el grafo, decidir cul de sus arcos sucesores es ms prometedor y marcarlo como parte del mejor camino actual, lo cual cambiar el mejor camino actual.

En [Ric88] y [Bel92] pueden verse los pasos de este algoritmo expresados ms detalladamente. [Bra86] contiene una implementacin del mismo en PROLOG.

La figura 3.14 muestra un ejemplo de una traza de este algoritmo. Los nmeros entre parntesis indican el valor de h* en los nodos y los que no tienen parntesis, indican los costos de los arcos. Los nodos encerrados entre dos crculos son nodos primitivos.

Diferencias entre el algoritmo A * y el AO* En el algoritmo A* el camino deseado de un nodo a otro siempre era el de menor costo. Pero ste no es siempre el caso cuando se est buscando en un rbol y/o. Un ejemplo de esto se muestra en la figura 3.15. El nuevo camino al nodo 5 es ms largo que yendo a travs del nodo 3. Pero el camino por el nodo 3 no lleva a solucin, pues necesita tambin una solucin del nodo 4, la cual no existe. Por tanto el camino a travs del nodo 10 es mejor. Paso 1 Paso 2

a (2)

90

(1) b

c (3)

Paso 3

Paso 4

a (4) 1 3 1

a (6) 3

(3) b 1 1

c (3)

(9) b 1 1

c (3)

d (0)(1) e

d (0) 6

e (7)

(1) h

Paso 5

a (8) 1 3

(9) b 1 1 2

c (5) 1

(0) d (7) e f (2) g (0) 6 2 3

91

(1) h (0) h i (1)

Fig. 3.14. Una traza del algoritmo AO*.

4 nodo muerto

10

Fig. 3.15. Ejemplo que muestra las diferencias entre A * y AO*. E

Escriba un resumen general sobre los mtodos de solucin de problemas, donde se incluyan los tipos de problemas y las tcnicas de solucin (incluya la informacin aqu presentada y la de las Conferencias 1,2,y 3 del Tema II (Brigada 501)).

Desarrolle una ontologa general sobre los mtodos de solucin de problemas, donde se incluyan los tipos de problemas y las tcnicas de solucin (incluya la informacin aqu presentada y la de las Conferencias 1,2,y 3 del Tema II (Brigada 502)).

3.5. Planificacin.

92

En secciones anteriores describimos el proceso de resolver problemas como una bsqueda a travs de un espacio de estados, en el que cada nodo representa una descripcin del estado completo del problema y cada operador describe una forma de cambiar dicha descripcin completa del estado. Para problemas sencillos como, por ejemplo, el rompecabezas de 8 piezas, el manipular cada vez la descripcin completa del estado es fcil y razonable. Sin embargo, para dominios de problemas ms complicados, es importante que seamos capaces de trabajar por separado sobre elementos pequeos de un problema y combinar al final las soluciones parciales en una solucin completa. Si no podemos hacer esto, el nmero de combinaciones de los estados de las componentes de un problema se volvera demasiado grande para poderlo manejar en la cantidad de tiempo disponible. Existen dos formas en las que es importante que seamos capaces de realizar esta descomposicin. En la primera es importante que, al movernos de un estado del problema al siguiente, no tengamos que recalcular el nuevo estado completo. En vez de ello, queremos considerar slo aquella parte del estado que puede haber cambiado. No es difcil calcular cmo debera cambiar el estado del rompecabezas de 8 piezas despus de cada movimiento, ni significa gran cantidad de trabajo el almacenar explcitamente una nueva copia del estado con los cambios apropiados que se han hecho. Pero si estamos considerando el problema de guiar un robot por una casa, la situacin es mucho ms compleja. La descripcin de un estado sera muy extensa, pues debera incluir dnde est cada objeto en la casa junto con la situacin actual del robot. Una accin concreta por parte del robot cambiar slo una pequea parte del estado total. Por ejemplo, si el robot empuja una mesa, slo cambiar la situacin de la mesa y de los objetos que estaban sobre ella, pero los restantes objetos no cambiarn. En lugar de escribir reglas que describan transformaciones de un estado completo en otro, preferiramos escribir reglas que slo describan las partes del estado afectadas y suponer que el resto permanece constante. La segunda forma importante en que la descomposicin puede facilitar la solucin de problemas difciles, es la divisin de un nico problema difcil en varios subproblemas que podemos esperar que sean ms fciles. El algoritmo AO * nos proporciona una manera de hacerlo cuando los subproblemas estn completamente separados. Pero existen muchos problemas casi descomponibles, o sea, que pueden dividirse en subproblemas con una pequea cantidad de interaccin. Por ejemplo, el trasladar un conjunto de muebles fuera de una habitacin podra descomponerse en trasladar cada objeto por separado, pero si hay un librero detrs de una mesa, debemos mover primero la mesa. Es necesario un mtodo que permita trabajar con este tipo de problema. El uso de mtodos que se centran en formas de descomponer el problema original en subpartes apropiadas y en formas de almacenar y manejar las interacciones entre las subpartes conforme se detectan durante el proceso de resolucin de problemas se llama planificacin. Estos mtodos usan, general-mente, como F.R.C. a los STRIPS.

93

Existen varias tcnicas de planificacin, como por ejemplo: - Planificacin usando pila de metas. - Planificacin no lineal usando un conjunto de metas. - Planificacin jerrquica. - Planificacin no lineal usando la estrategia del menor compromiso. - Planificacin por medio de colocacin de restricciones. - Planificacin mediante tablas de tringulos. - Metaplaneo. - Cajas de plan. Estudiemos los tres primeros mtodos. Explicaciones de los restantes pueden verse en [Ric88].

3.5.1. Planificacin usando pila de metas.

En este mtodo, el resolutor de problemas usa una nica pila que contiene tanto las metas como los operadores que las satisfacen. El resolutor de problemas dispone tambin de una B.D. que describe la situacin actual y un conjunto de operadores descritos en forma de STRIPS. Veamos un ejemplo del mundo de bloques: supongamos que se tienen los estados inicial y meta mostrados en la figura 3.16 y las acciones que se pueden realizar son: COGER(x) Precondicin: ENMESA(x) BRAZOVACIO DESPEJADO(x) Suprimir: ENMESA(x) BRAZOVACIO Aadir: SOSTENIDO(x) DEJAR(x) Precondicin: SOSTENIDO(x) Suprimir: SOSTENIDO(x) Aadir: ENMESA(x) BRAZOVACIO APILAR(x,y)

94

Precondicin: DESPEJADO(y) SOSTENIDO(x) Suprimir: DESPEJADO(y) SOSTENIDO(x) Aadir: ENCIMA(x,y) BRAZOVACIO DESAPILAR(x,y) Precondicin: ENCIMA(x,y) DESPEJADO(x) BRAZOVACIO Suprimir: ENCIMA(x,y) BRAZOVACIO Aadir: SOSTENIDO(x) DESPEJADO(y)

donde los predicados significan lo siguiente: ENCIMA(x,y): el bloque x est encima del bloque y. ENMESA(x): el bloque x est situado sobre la mesa. DESPEJADO(x): el bloque x no tiene ningn bloque encima. SOSTENIDO(x): el brazo del robot est sosteniendo al bloque x. BRAZOVACIO: el brazo del robot est vaco.

Adems en el mundo de bloques existen diversas declaraciones lgicas verdaderas: [(x) SOSTENIDO(x)] BRAZOVACIO : Si el brazo est sosteniendo algo, entonces no est vaco. (x) [ENMESA(x) (y) ENCIMA(x,y)] : Si un bloque est encima de la mesa, entonces no est encima de otro bloque. (x) [(y) ENCIMA(y,x) DESPEJADO(x)] : Cualquier bloque que no tenga bloques encima, est despejado.

Estado inicial

Estado meta

95

Estado inicial: BRAZOVACIO

ENCIMA(B,A)

ENMESA(A)

ENMESA(C)

ENMESA(D)

Estado meta: ENCIMA(C,A) ENCIMA(B,D) ENMESA(A) ENMESA(D)

Fig. 3.16. Un ejemplo del mundo de bloques.

Descompogamos este problema en cuatro subproblemas, uno por cada meta. Las dos metas ENMESA ya estn satisfechas en el estado inicial (le llamaremos pa-ra abreviar EMAD), por lo que slo trabajamos con las dos restantes.

Dependiendo del orden en que se escojan se pueden crear dos pilas de metas: (1) ENCIMA(C,A) ENCIMA(B,D) (2) ENCIMA(B,D) ENCIMA(C,A) ENCIMA(B,D) ENCIMA(C,A) EMAD

ENCIMA(C,A) ENCIMA(B,D) EMAD

Para cada paso que haya tenido xito debe proseguirse con la meta que est en la cima de la pila. Cuando se halla una secuencia de operadores que la satisface, se aplica dicha secuencia a la descripcin del estado, produciendo una nueva descripcin. A continuacin se explora la meta que est en la cima de la pila y se intenta satisfacerla empezando en la situacin producida como resultado de satisfacer la primera meta. Este proceso contina hasta que la pila de metas est vaca. Al comprobar la ltima meta, se compara la meta original con el estado final derivado de la aplicacin de los operadores escogidos. Si cualquiera de las componentes de la meta no se satisface en ese estado, lo cual podra suceder si se alcanzacen en cierto punto y se deshiciesen ms tarde, se reinsertan en la pila las partes de la meta an no resueltas y se reanuda el proceso. En el ejemplo, supongamos que elegimos la pila 1. La pila 2 tambin conduce a una solucin, de hecho encuentra una tan trivial que no es muy interesante. Miramos si ENCIMA(C,A) es cierto en el estado inicial. Como no lo es, buscamos los operadores que lo pueden hacer cierto: APILAR(C,A). Se coloca ste en lugar de ENCIMA(C,A), pues estamos seguros de que despus de aplicar ste, la meta se cumple. La pila sera ahora:

96

APILAR(C,A) ENCIMA(B,D) ENCIMA(C,A) ENCIMA(B,D) EMAD

Las precondiciones de APILAR se convierten entonces en submetas: DESPEJADO(A) SOSTENIDO(C). Las separamos y escogemos una de ellas. Aqu es til explotar algn conocimiento heurstico. SOSTENIDO es muy fcil de hacer (basta dejar alguna cosa y coger el objeto deseado) y es muy fcil de deshacer (para cualquier cosa el robot necesita usar el brazo). Si satisfacemos primero SOSTENIDO y luego lo otro, es probable que entonces SOSTENIDO no sea cierto. Por tanto, explotamos la heurstica de que si SOSTENIDO es una de las metas, se trate de satisfacer en ltimo lugar. Este tipo de informacin heurstica podra incluirse en las mismas listas precondicin de los operadores, escribiendo las metas en el orden en que deben satisfacerse. La pila de metas es ahora: DESPEJADO(A) SOSTENIDO(C) DESPEJADO(A) SOSTENIDO(C) APILAR(C,A) ENCIMA(B,D) ENCIMA(C,A) ENCIMA(B,D) EMAD

Como DESPEJADO(A) no es cierto y el nico operador que lo hace cierto es DESAPILAR(B,A), lo cual puede detectarse fcilmente mirando las listas Aadir de cada operador, la pila de metas es: ENCIMA(B,A) DESPEJADO(B) BRAZOVACIO ENCIMA(B,A) DESPEJADO(B) BRAZOVACIO DESAPILAR(B,A) SOSTENIDO(C) DESPEJADO(A) SOSTENIDO(C) APILAR(C,A) ENCIMA(B,D)

97

ENCIMA(C,A) ENCIMA(B,D) EMAD ENCIMA(B,A) se satisface y lo quitamos de la pila. DESPEJADO(B) no est explcitamente, pero un demostrador de teoremas puede demostrar que se satisface a partir de los predicados iniciales y del axioma del mundo de bloques que dice que cualquier objeto sin bloques encima est despejado. Por eso se quita tambin de la pila. La tercera precondicin de DESAPILAR (BRAZOVACIO) tambin es cierta y se saca de la pila, junto con la meta combinada, una vez comprobado que se satisface. Como se satisfacen sus precondiciones, aplicamos el operador DESAPILAR(B,A) (usando las listas suprimir y aadir) para producir un nuevo modelo del mundo: ENMESA(A) ENMESA(C) ENMESA(D) SOSTENIDO(B) DESPEJADO(A). Anotamos, entonces, este operador en la secuencia de solucin propuesta. La pila es ahora: SOSTENIDO(C) DESPEJADO(A) SOSTENIDO(C) APILAR(C,A) ENCIMA(B,D) ENCIMA(C,A) ENCIMA(B,D) EMAD

Para satisfacer SOSTENIDO(C) se pueden usar COGER(C) y DESAPILAR(C, x), donde x es cualquier bloque. No podemos saber cul escoger, por lo que creamos dos ramas del rbol de bsqueda: (1) ENMESA(C) DESPEJADO(C) BRAZOVACIO (2) ENCIMA(C, x) DESPEJADO(C) BRAZOVACIO

ENMESA(C) DESPEJADO(C) BRAZOVACIO ENCIMA(C, x) DESPEJADO(C) BRAZOVACIO COGER(C) DESAPILAR(C, x) DESPEJADO(A) SOSTENIDO(C)

DESPEJADO(A) SOSTENIDO(C) APILAR(C,A) ENCIMA(B,D)

APILAR(C,A) ENCIMA(B,D)

98

ENCIMA(C,A) ENCIMA(B,D) EMAD

ENCIMA(C,A) ENCIMA(B,D) EMAD

Observe que en la pila (2) x aparece tres veces. Es importante emparejar un mismo objeto con cada una de las x. Por eso es mejor renombrarlas para no confundirse. Cmo el programa decide por dnde seguir?. Nosotros sabemos que COGER(C) es mejor que desapilarlo si C no tiene nada encima, pues para desapilarlo hay que apilarlo, lo que implica una prdida de esfuerzo. Supongamos que se escoge la alternativa (2). Para satisfacer ENCIMA(C, x) hay que apilar C sobre x. La pila sera: APILAR(C,x) DESPEJADO(C) BRAZOVACIO ENCIMA(C,x) DESPEJADO(C) BRAZOVACIO DESAPILAR(C,x) DESPEJADO(A) SOSTENIDO(C) APILAR(C,A) ENCIMA(B,D) ENCIMA(C,A) ENCIMA(B,D) EMAD

Una de las precondiciones de APILAR es SOSTENIDO(C). Esto es lo que estamos intentando conseguir aplicando DESAPILAR, que requiere APILAR para que se cumpla ENCIMA(C, x). Como hemos regresado a la meta original, este camino es improductivo. Si C hubiese estado sobre otro bloque, se satisface ENCIMA(C, x) sin APILAR y este camino hubiera conducido a una solucin. Regresemos, entonces, a la pila (1). ENMESA(C) y DESPEJADO(C) se satisfacen y los quitamos de la pila. Para hacer cierto BRAZOVACIO se puede aplicar APILAR(B, x) o DEJAR(B). Si miramos hacia delante queremos, en ltimo trmino, poner B sobre D, luego lo ms eficiente es hacerlo ahora. El programa podra hacer esto comparando los operadores que estn compitiendo con el resto de la pila. Si uno hace alguna de estas metas se escoge ste. Luego aplicamos APILAR(B,D) emparejando a D con x en APILAR. La pila de metas es ahora: DESPEJADO(D) SOSTENIDO(B) DESPEJADO(D) SOSTENIDO(B) APILAR(B,D)

99

ENMESA(C) DESPEJADO(C) BRAZOVACIO COGER(C) DESPEJADO(A) SOSTENIDO(C) APILAR(C,A) ENCIMA(B,D) ENCIMA(C,A) ENCIMA(B,D) EMAD

Como puede verse DESPEJADO(D) y SOSTENIDO(B) son ciertas. Se realiza, entonces, APILAR(B,D) y el modelo del mundo es ahora: ENMESA(A) ENMESA(C) ENMESA(D) ENCIMA(B,D) BRAZOVACIO Ya se han satisfecho todas las precondiciones para COGER(C) y se ejecuta. Luego se ejecuta APILAR(C,A). Ahora se empieza a trabajar con la segunda parte: ENCIMA(B,D). Pero sta ya se satisface, pues anteriormente comparamos con la pila de metas, luego comprobamos la meta combinada y el resolutor de problemas termina, devolviendo el plan: DESAPILAR(B,A), APILAR(B,D), COGER(C) y APILAR(C,A).

Para problemas ms difciles estos mtodos de usar informacin heurstica y de considerar interacciones entre metas no son adecuados. Supongamos se tienen los estados inicial y meta mostrados en la figura 3.17. Existen dos formas de comenzar a resolver este problema: (1) ENCIMA(A,B) ENCIMA(B,C) ENCIMA(A,B) ENCIMA(B,C) (2) ENCIMA(B,C) ENCIMA(A,B) ENCIMA(A,B) ENCIMA(B,C)

Estado inicial

Estado meta

100

Estado inicial: ENCIMA(C,A) ENMESA(A) ENMESA(B) BRAZOVACIO Estado meta: ENCIMA(A,B) ENCIMA(B,C)

Fig. 3.17. Un ejemplo del mundo de bloques ligeramente ms difcil.

Supongamos elegimos la alternativa (1). La pila de metas es la siguiente: DESPEJADO(C) BRAZOVACIO DESPEJADO(C) BRAZOVACIO DESAPILAR(C,A) BRAZOVACIO DESPEJADO(A) BRAZOVACIO COGER(A) DESPEJADO(B) SOSTENIDO(A) APILAR(A,B) ENCIMA(B,C) ENCIMA(A,B) ENCIMA(B,C)

Podemos eliminar de la pila las metas que ya han sido satisfechas y llega-mos a BRAZOVACIO de COGER(A). Para satisfacerla necesitamos DEJAR(C). Podemos continuar quitando elementos hasta que la pila sea: ENCIMA(B,C) ENCIMA(A,B) ENCIMA(B,C)

El estado actual es ahora:

101

ENMESA(B) ENCIMA(A,B) ENMESA(C) BRAZOVACIO y la secuencia de operadores aplicada hasta ahora es: DESAPILAR(C,A), DEJAR(C), COGER(A) y APILAR(A,B).

Se comienza a trabajar con ENCIMA(B,C). Para esto hay que desapilar A de B y apilar B sobre C. Cuando se alcance la meta ENCIMA(B,C) y se saque de la pila, se habr ejecutado la secuencia de operadores siguientes: DESAPILAR(A,B), DEJAR(A), COGER(B) y APILAR(B,C) El estado del problema ser entonces: ENCIMA(B,C) ENMESA(A) ENMESA(C) BRAZOVACIO Pero al comprobar ENCIMA(A,B) ENCIMA(B,C) descubrimos que hemos deshecho ENCIMA(A,B), la cual puede alcanzarse de nuevo aplicando COGER(A) y APILAR(A,B). El plan completo es el siguiente: 1- DESAPILAR(C,A) 2- DEJAR(C) 3- COGER(A) 4- APILAR(A,B) 5- DESAPILAR(A,B) 6- DEJAR(A) 7- COGER(B) 8- APILAR(B,C) 9- COGER(A) 10- APILAR(A,B)

Aunque este plan alcanza la meta deseada no lo hace eficientemente. Una situacin similar hubiera ocurrido de coger la alternativa (2). Existen dos enfoques para llegar a un buen plan. Uno es repararlo, lo cual es fcil aqu, pues podemos buscar aquellos lugares donde se realiza una operacin que se deshace inmediatamente y eliminar a ambas. En el ejemplo, eliminaremos 4 y 5 y luego 3 y 6. El plan resultante es ptimo para este problema. Sin embargo, hay problemas donde estos operadores pueden estar lejos unos de otros, adems de que se gasta mucho esfuerzo en producir los pasos para despus eliminarlos. Un mtodo de planificacin que construye directamente planes eficientes es la planificacin no lineal usando un conjunto de metas.

3.5.2. Planificacin no lineal usando un conjunto de metas.

102

La idea de este procedimiento es escoger, en primer lugar, el operador que se aplicar ltimo en la solucin final y suponer que ya se han satisfecho todas las submetas menos una. Entonces encuentra todos los operadores que podrn satisfacer la submeta final. Naturalmente, cada una de ellas puede tener precondiciones que deben cumplirse, de forma que debe generarse una nueva meta combinada que incluya tanto esas precondiciones como las metas originales. Este procedimiento suele generar un rbol de bsqueda bastante frondoso, pues debe considerar todas las diferentes ordenaciones de las submetas, as como todas las formas en que podra satisfacerse una meta dada. Afortunadamente, por otra parte, muchos de los caminos pueden eliminarse con bastante rapidez. Apliquemos este procedimiento al problema de la figura 3.17. En el primer nivel consideramos dos candidatos para el ltimo operador a realizar. La ltima cosa a hacer puede ser poner A sobre B o poner B sobre C. Si escogemos poner B sobre C, entonces las precondiciones para esa operacin, as como el predicado ENCIMA(A,B) deben ser todos ciertos antes de la operacin. Pero el brazo slo puede sostener un bloque, de forma que no puede sostener B si A est sobre B. Esta inconsistencia puede detectarse mediante un demostrador de teoremas por resolucin. Este camino inconsistente puede podarse, de forma que nos quedemos con un solo candidato. As se analiza todo el problema. Una porcin del rbol de bsqueda para este problema usando este mtodo de planificacin se muestra en la figura 3.18.

ENCIMA(A,B)

ENCIMA(B,C)

DESPEJADO(B)

DESPEJADO(C)

SOSTENIDO(A)

SOSTENIDO(B) Inconsistencia

ENCIMA(B,C) . . . . . . . . .

ENCIMA(A,B)

103

Fig. 3.18. Porcin del rbol de bsqueda para el problema de la fig. 3.17.

Este mtodo tiene las siguientes limitaciones: - Si las submetas no interaccionan, no tiene importancia el orden en que se lleven a cabo los pasos de una de ellas con respecto a los pasos de la otra. Entonces todas las permutaciones posibles parecern razonables y no se podar ninguna, generndose un rbol muy grande. Necesitamos una forma de evitar considerar la mayora de secuencias de solucin, ya que son permutaciones unas de otras, por lo que cualquiera de ellas es adecuada. Este problema se resuelve con el mtodo de planificacin no lineal usando la estrategia del menor compromiso. - Debido a que este mtodo no tiene manera de distinguir entre metas importantes y triviales, puede perder mucho tiempo en los detalles de un plan que podemos descubrir luego que es completamente inadecuado. Para resolver esto, necesitamos un planificador que empiece trazando un plan que satisfaga la parte principal de la meta y llene a continuacin los detalles conforme se vayan necesitando. Este mtodo es, precisamen-te, la planificacin jerrquica.

3.5.3. Planificacin jerrquica.

Para resolver problemas difciles, un resolutor de problemas puede tener que generar planes largos. Para hacerlo eficientemente, es importante poder eliminar algunos de los detalles del problema hasta haber encontrado una solucin a los puntos principales. Entonces puede realizarse un intento de llenar los detalles apropiados. Con este mtodo se resuelve, primeramente, el problema completo, considerando slo aquellas precondiciones cuyo valor crtico sea el ms elevado posible. Estos valores reflejan la dificultad esperada al satisfacer la precondicin. Para realizar esto, deben seguirse exactamente los mismos pasos que segua STRIPS, pero ignorar simplemente las precondiciones inferiores a los puntos crticos; luego se usa el plan construido como un esbozo del plan completo y se consideran las precondiciones del siguiente nivel crtico. Continuamos este proceso de considerar precondiciones cada vez menos crticas hasta haber considerado todas las precondiciones de las reglas originales. Evidentemente, la asignacin de valores crticos apropiados es crucial para el xito de este mtodo. Aquellas precondiciones que no pueda satisfacer ningn operador son, evidentemente, las ms crticas. Por ejemplo, si estamos intentando resolver un problema que atae a un robot que se mueve por una casa y estamos

104

considerando el operador PASARPUERTA, la precondicin de que exista una puerta grande para que el robot pueda pasar a travs de ella es altamente crtica, pues si no existe, no podemos hacer nada. Sin embargo, la precondicin de que la puerta est abierta es poco crtica si disponemos del operador ABREPUERTA. Dando los valores crticos a las reglas STRIPS, el proceso bsico funciona de manera similar a como lo hacen los planificadores no jerrquicos.

3.5.4. Aplicaciones prcticas de la planificacin.

Algunos planificadores han obtenido resultados convincentes en diversos dominios. Por ejemplo: DEVISER: en la planificacin de actividades espaciales. GARI: en el maquinado de piezas mecnicas. ISIS: en manufactura. KNOBS: en misiones tcticas de fuerzas areas. Ejemplos de planificadores no jerrquicos son STRIPS, HACKER e INTERPLAN. Entre los jerrquicos podemos mencionar ABSTRIPS, que elabora sus planes bajo un esquema de jerarqua en espacios de abstraccin, en donde el ms alto en jerarqua contiene un plan carente de detalles irrelevantes y el de ms baja jerarqua contiene una secuencia completa y detallada de operadores de resolucin de problemas. Otros jerrquicos son NOAH, el cual hace abstraccin de los operadores de solucin de problemas y MOLGEN, que hace abstraccin tanto de los operadores como de los objetos en el espacio de problemas.

3.6. Teora de juegos.

Los juegos tienen para muchos una inexplicable fascinacin, y la idea de que los computadores pudieran jugar ha existido al menos desde que stos existen. El famoso arquitecto de computadoras Charles Babbage, antes de tiempo, pens en programar su Mquina Analtica para jugar al ajedrez, y ms tarde pens construir una mquina para jugar al titafor. Dos de los pioneros de la ciencia de la informacin y de la computacin contribuyeron a la incipiente literatura de juegos por computadora: Claude Shannon escribi un artculo en el que describa mecanismos que podan usarse en un programa que jugase al ajedrez y unos aos despus, Alan Turing describi un programa para este juego, aunque nunca lo construy. Al principio de los 60, Arthur Samuel tuvo xito al construir el primer programa importante y operacional para jugar. Su programa jugaba a las damas y, adems

105

de jugar las partidas, poda aprender de sus errores y mejorar su actuacin. Haba dos razones para que los juegos pareciesen ser un buen dominio en el cual explorar la inteligencia de la mquina: - Proporcionan una tarea estructurada en la que es muy fcil medir el xito o el fracaso. - No es obvio que requieran gran cantidad de conocimientos. Se pens que se podran resolver por bsqueda directa a partir del estado inicial hasta la posicin ganadora. La primera de esas razones es an vlida, pero la segunda no es cierta para juegos no muy sencillos. Por ejemplo en el problema del ajedrez, se tienen los siguientes datos: - Factor de ramificacin promedio: aproximadamente 35. - En un juego promedio, cada jugador podra hacer 50 movimientos. - Para examinar el rbol completo, hay que examinar 35 100 posiciones. Por lo tanto, es evidente que un programa que realice una simple bsqueda directa del rbol de juego, no podr seleccionar ni siquiera su primer movimiento durante el perodo de vida de su oponente. Es necesaria alguna clase de procedimiento de bsqueda heurstica. Una manera de ver todos los procedimientos de bsqueda estudiados es que son de generar-y-comprobar. En un extremo, el generador propone soluciones completas y el comprobador las evala. En el otro extremo, el generador genera movimientos individuales del espacio de bsqueda, cada uno de los cuales se evala por el comprobador, eligiendo el ms prometedor de ellos. Para mejorar la efectividad de un programa resolutor de problemas basado en la bsqueda existen dos opciones: - Mejorar el procedimiento de generacin, de forma que se generen slo buenos movimientos o caminos. - Mejorar el procedimiento de comprobacin para que slo se reconozcan y exploren los mejores movimientos o caminos. En los programas de juegos es particularmente importante que se hagan ambas cosas. Naturalmente en ellos, como en otros dominios de problemas, la bsqueda no es la nica tcnica disponible. Por ejemplo, en el ajedrez tanto las aperturas como los finales estn casi siempre altamente estudiados, de manera que se juega mucho mejor consultando una tabla en una B.D. que almacene modelos comprobados. As, para jugar un juego completo pueden combinarse ambas tcnicas. Desafortunadamente, para juegos como el ajedrez, no es posible buscar hasta encontrar el estado meta, ni an disponiendo de un buen generador de

106

movimientos plausibles. En la cantidad de tiempo disponible, slo es posible buscar menos de 10 movimientos en el rbol (llamados capas en la literatura de juegos). As, para elegir el mejor movimiento, se utiliza una funcin de evaluacin esttica, que usa toda la informacin disponible para evaluar posiciones individuales del tablero, estimando la probabilidad de que conduzcan a la victoria. Su funcin es similar a la de h* en el algoritmo A*. Naturalmente, la funcin de evaluacin esttica puede aplicarse, simplemente, a las posiciones generadas por los movimientos propuestos. Pero, como es difcil producir una funcin realmente buena, es mejor aplicarla tantos niveles hacia abajo en el rbol de juego como el tiempo lo permita. Por ejemplo, Turing propuso una funcin de evaluacin esttica para el ajedrez que se basaba en la ventaja de piezas: sumar los valores de las piezas negras (N), los valores de las piezas blancas (B) y calcular B/N. Samuel propuso otra para las damas que consista en una combinacin lineal de funciones simples. Estas funciones consideraban la ventaja de piezas, la capacidad de avance, el control del centro, amenazas dobles y movilidad. A cada una de ellas se le asignaba un peso: C1*ventajapiezas + C2*avance + C3*controlcentro + ..., pero Samuel no conoca los pesos correctos. Para ello us un mecanismo simple de aprendizaje, en el que se incrementaban los pesos de aquellas componentes que haban sugerido movimientos que condujeron a victorias y decrementaba los que condujeron a derrotas. Pero esto no es fcil, pues pudimos hacer un movimiento muy malo y despus el oponente realizar un error y nosotros ganar el juego, por lo que no podemos dar crdito de nuestra victoria a esta jugada mala. No obstante, el programa de Samuel era capaz de derrotar a su creador de vez en cuando. Otra funcin de evaluacin esttica para el juego de damas podra ser: 0.7*(MD-DO) + 0.3*(MP-PO), donde MD y DO son el nmero de damas nuestras y del oponente, respectivamente y MP y PO es la cantidad de las restantes piezas nuestras y del oponente, respectivamente. Hemos discutido las dos componentes importantes de un buen programa de juegos: un buen generador de movimientos plausibles y una buena funcin de evaluacin esttica. Ambas deben incorporar gran cantidad de conocimientos sobre el juego concreto que se est jugando. Pero, a menos que estas funciones sean perfectas, tambin necesitamos un procedimiento de bsqueda que haga posible prever tantos movimientos como sea posible para ver lo que podra ocurrir. Para juegos unipersonales simples puede usarse el algoritmo A *, pero para juegos bipersonales esto es imposible.

3.6.1. Conceptos principales.

En esta seccin slo consideraremos los juegos entre dos personas con informacin completa, o sea, los juegos en que los jugadores realizan jugadas alternadamente y ambos conocen completamente lo que han hecho y pueden hacer, pues cada movimiento conduce a un conjunto de estados completamente predecible, como por ejemplo, el ajedrez, las damas, el titafor, etc. No tendremos

107

en cuenta los juegos de azar. La teora de los juegos es una disciplina, en la cual el objeto de sus investigaciones son los mtodos de toma de decisin en las llamadas situaciones de conflicto. La situacin se llama de conflicto si en ella chocan los intereses de varias, habitualmente dos, personas que persiguen objetivos opuestos. Imagnese que se quiere jugar una partida de ajedrez con las blancas pero no podemos estar presentes personalmente durante el juego. Se tiene un sustituto que debe desarrollar la partida y cumplir todas las indicaciones, pero l no sabe jugar bien al ajedrez y no es capaz de tomar decisiones independientes. Para que el sustituto pueda desarrollar toda la partida hasta el final, deben drsele tales indicaciones que prevean cualesquiera posiciones posibles en el tablero y determinen para cada posicin la jugada que debe hacerse. El sistema completo de estas indicaciones es lo que se conoce como estrategia. La estrategia del jugador constituye la descripcin unvoca de su eleccin en cada situacin posible en la que l debe hacer una jugada. Para comprender los principios que constituyen el fundamento de la eleccin de su estrategia por cada jugador, examinemos un estado particular del juego entre dos personas, en el cual el jugador A puede emplear las estrategias X 1, X2, X3 y X4, mientras que el jugador B puede emplear Y 1, Y2, Y3 y Y4. Las ganancias que puede alcanzar el jugador A se muestran en la tabla siguiente: Y1 Y2 Y3 Y4 A(X)

X1 X2 X3 X4

7 2 5 3

2 2 3 2

5 3 4 1

1 4 4 6

1 2 3* 1

B(Y)

3*

Supongamos que el primer jugador elige la estrategia X k. La ganancia L(Xk,y) va a depender de la estrategia que elija el segundo jugador. Por ejemplo, con la estrategia X1 las ganancias de A pueden ser 7, 2, 5 1. Esto indica que, independientemente de la respuesta de B a la estrategia X 1, la ganancia nunca ser menor que 1. L(X1,y)={7,2,5,1} representa la ganancia del primer jugador con la estrategia X1.

108

Generalizando los razonamientos expuestos vemos que si el jugador A emplea la estrategia Xk, asegura una ganancia A(Xk) igual al menor elemento del conjunto L(Xk,y):

A(x k ) = min L (x k , y )
En la teora de juegos se supone que los jugadores obran con suficiente cuidado evitando el riesgo infundado. En este caso, el primer jugador debe elegir la estrategia que maximice A(X). Designando la ganancia garantizada del primer jugador por ALFA y llamndole precio puro inferior del juego, se obtiene:

ALFA =

max
x

A( x ) =

max min
x y

L(x , y )

En la tabla el valor ALFA est marcado en la columna A(x) por un asterisco. Pueden realizarse razonamientos anlogos con respecto al segundo jugador. Pero, en este caso, la matriz del juego indica las prdidas, las que l trata de hacer mnimas.

B ( y k ) = max L( x , y k )
Para asegurarse la prdida menor, el jugador B debe minimizar B(Y). Designando la magnitud de la prdida por BETA y llamndole precio puro superior del juego , se obtiene:

BETA =

min
y

B( y ) =

min max
y x

L( x , y )

El valor BETA est marcado con un asterisco en la fila B(y) de la tabla.

3.6.2. La partida como un rbol.

Cada partida puede ser representada como un rbol. Como estudiamos en la seccin 3.2.1.1, el rbol de juego representa los cursos alternativos que puede tomar dicho juego. Los nodos de tales rboles corresponden a situaciones del juego y los arcos a movimientos. La situacin inicial del juego es el nodo raz y las hojas del rbol corresponden a posiciones terminales. Usando esta representacin y considerando que, como se vi en la seccin anterior, se puede en cada momento calcular los precios inferior y superior del juego de modo que cada jugador pueda seleccionar la estrategia mejor, el procedimiento a seguir puede basarse en que en cada nivel del rbol se calculen estos precios. Esto garantiza poder decidir por qu rama del rbol en ese momento conviene que el jugador tome. El problema principal es cmo calcular esos precios, para lo cual hay dos variantes. Los precios pueden ser calculados como un estimado a priori de cun bueno es un estado del juego sin tener en cuenta la bondad de los estados futuros. La otra variante es considerar, al calcular el precio

109

de un estado, sus consecuencias futuras. Obviamente, la segunda va resulta mejor. Esta ltima variante presupone generar, a partir de una situacin dada que se considerar el nodo inicial, los nodos sucesores de ste hasta cierto nivel de profundidad, para lo cual se pueden usar los mtodos de bsqueda ya estudiados. El nivel de profundidad al que se realiza el corte puede ser llegar a una posicin final, pero esto slo es posible en juegos muy simples. Si los nodos hojas no corresponden a posiciones finales es necesario calcular el precio de stos y propagar los mismos hasta el nodo inicial para entonces aplicar el criterio de los precios superior e inferior por cada jugador. El objetivo al usar un rbol de bsqueda es encontrar un buen primer movimiento, para lo cual generamos un rbol hasta cierta profundidad, la cual estar determinada por ciertas condiciones de terminacin basadas en diversos factores, como por ejemplo, un lmite de tiempo, lmite de almacenamiento, profundidad, etc. Despus de terminar la generacin del rbol de bsqueda, el cual se diferencia del rbol de juego en que solamente est formado por una parte de ste, se tiene que hacer un estimado del mejor primer movimiento. Este estimado puede hacerse aplicando una funcin de evaluacin esttica a los nodos hojas del rbol, la cual mida la bondad de la posicin representada en el nodo hoja y luego propagar estos valores hasta el nodo en que es necesario tomar la decisin. Seguidamente se presentan dos procedimientos para hacer esto.

3.6.3. Procedimiento MINIMAX.

Este procedimiento consiste en lo siguiente: se genera el rbol de bsqueda, tomando como nodo inicial determinada situacin de conflicto, o sea, a partir de una posicin dada usando el generador de movimientos plausibles, se genera un conjunto de posiciones sucesivas posibles. Luego se evalan los nodos hojas segn algn estimador heurstico, el cual estima las oportunidades de ganar de algn jugador (funcin de evaluacin esttica). Este valor representa la bondad de la situacin representada en el nodo para uno de los dos jugadores y, a la vez, da una medida de cun mala es esa situacin para el otro. Como uno de los jugadores tratar de alcanzar una posicin de alto valor y el otro de un valor bajo, los jugadores son llamados MAX y MIN respectivamente. Cuando MAX juegue, l seleccionar un movimiento que maximice el valor. Por el contrario, MIN seleccionar un movimiento que minimice el valor. Es usual, en el anlisis, adoptar el convenio de que posiciones favorables para MAX sean indicadas por valores positivos de la funcin de evaluacin, mientras que posiciones favorables para MIN causen valores negativos y valores cercanos a cero correspondan a posiciones no favorables a ninguno de los jugadores. Teniendo en cuenta estas ideas se puede realizar el proceso de propagacin de los valores calculados para los nodos terminales hacia posiciones superiores en el rbol. Supngase que se van a evaluar los nodos del penltimo nivel del rbol, o sea, el nivel en que estn los nodos cuyos sucesores corresponden a nodos

110

terminales y por eso ya evaluados usando la funcin de evaluacin. Si esos nodos corresponden a una situacin en la cual le toca jugar a MAX lo llamaremos MAXnodo y se le asignar como valor el mximo de las evaluaciones de sus nodos sucesores. Si, por el contrario, corresponden a una situacin en la cual est MIN en posicin de jugar lo llamaremos MIN-nodo y el valor asignado ser igual al mnimo de la evaluacin de los nodos sucesores. Se continan propagando valores nivel a nivel hasta que finalmente se evalan los nodos sucesores del nodo inicial. Estamos asumiendo que a MAX le toca jugar al inicio, de modo que MAX debe seleccionar como su primer movimiento el que corresponde al sucesor con mayor valor. Esta regla puede ser formalizada de la forma siguiente: denotemos el valor estti-co de una posicin P por v(P) y el valor propagado por V(P). Sean P 1,..,Pn las posiciones sucesoras de P. V(P)= v(P) Si P es una posicin terminal en el rbol de bsqueda (n=0).

V ( P) = V ( P) =

max
i

V ( Pi ) V ( Pi )

Si P es una posicin en la que a MAX le toca jugar.

min
i

Si P es una posicin en la que a MIN le toca jugar.

Analicemos un ejemplo: Supongamos una funcin de evaluacin esttica que devuelve un rango de valores desde -10 a 10, con 10 indicando una victoria para nosotros, -10 para el oponente y 0 para empate. En la figura 3.18, como nuestra meta es maximizar V(Pi), elegimos movernos hacia B, llevando de regreso el valor de B hasta A. Podemos concluir, entonces, que el valor de A es 8, pues nos permite movernos hacia una posicin con este valor. Pero como sabemos que la funcin de evaluacin esttica no es precisa, es mejor guiar la bsqueda ms all de una sola capa. Hagmoslo en 2 capas. En lugar de aplicar la funcin de evaluacin esttica en B, C y D, aplicamos en cada una de ellas el generador de movimientos plausibles, produciendo el conjunto de posiciones sucesoras de cada una de ellas. Aplicando a estas posiciones la funcin de evaluacin esttica obtenemos la figura 3.19. Ahora debemos tener en cuenta que es al oponente al que le toca decidir. Supongamos que hacemos el movimiento B. Entonces el oponente debe elegir entre E, F y G. El elige F, pues trata de minimizar el valor de la funcin esttica. Por tanto, si elegimos B desembocamos en una posicin muy mala para nosotros. La figura 3.20 muestra el resultado de propagar los nuevos valores hacia la raz del rbol.

111

(8) (3) (-2)

Fig. 3.18. Bsqueda en una capa.

(9) (-6) (0) (0) (-2) (-4) (-3)

Fig. 3.19. Bsqueda en dos capas.

A (-2) Capa maximizante

(-6) B

C (-2) D (-4) Capa minimizante

(9) (-6) (0) (0) (-2) (-4) (-3)

112

Fig. 3.20. Propagacin hacia atrs de los valores.

La maximizacin y minimizacin en capas alternas cuando las evaluaciones se envan de regreso a la raz, corresponden a las estrategias opuestas de ambos jugadores y da a este mtodo el nombre de minimax. Una manera de implementar este procedimiento es la siguiente: Entrada: Posicin actual y el jugador que le toca jugar, ya sea MIN o MAX. Salida: La jugada a realizar o el resultado del juego. 1) Si la posicin es terminal para el juego, RETORNAR EL RESULTADO DEL JUEGO, relativo al jugador que le toca jugar. 2) Si le toca jugar a MIN, entonces: a) Generar los sucesores de la posicin actual. b) Aplicar MINIMAX a cada una de estas posiciones, considerando que al jugador MAX le toca jugar. c) RETORNAR EL MINIMO DE ESTOS RESULTADOS. 3) Si le toca jugar a MAX, entonces: a) Generar los sucesores de la posicin actual. b) Aplicar MINIMAX a cada una de estas posiciones, considerando que al jugador MIN le toca jugar. c) RETORNAR EL MAXIMO DE ESTOS RESULTADOS.

Una implementacin de este procedimiento en PROLOG puede verse en [Bra86].

3.6.4. Procedimiento alfa-beta.

Supongamos que el factor de ramificacin para el juego del ajedrez es 20 y que el nivel de profundidad a explorar es 6 (3 para cada jugador). Entonces, tendremos que evaluar estticamente 3 200 000 hojas y aplicar el procedimien-to MINIMAX a 168 421 nodos intermedios. Suponiendo que se realizan 160 000 evaluaciones por segundo, se necesitaran 22 segundos para analizar 3 movimientos. Extendiendo esta bsqueda a 3 1/2 movimientos, el tiempo se incrementa a 422 segundos, o sea, 7 minutos. Cada jugador slo puede consumir 3 minutos en cada jugada, por

113

lo que aplicar este procedimiento se hace impracticable. El procedimiento MINIMAX separa completamente el proceso de generacin del rbol de bsqueda de la evaluacin de la posicin. Esta separacin lleva a que ste sea ineficiente, pues usualmente no es necesario visitar todas las posiciones en el rbol para calcular correctamente el valor minimax de la posicin raz. Esta deficiencia puede ser reducida considerablemente si se ejecuta la evaluacin de los nodos terminales y el clculo de los valores propagados simultneamente con la generacin del rbol. Esta mejora se basa en la idea siguiente: supongamos que hay dos movimientos alternativos y uno de ellos muestra que es claramente inferior al otro, por lo que no es necesa-rio, entonces, conocer cun inferior es para tomar la decisin correcta.

A (>3) Capa maximizante

(3) B

C (<-5)

Capa minimizante

(3) D

E (5) F (-5) G

Fig. 3.21. Un ejemplo de rbol de bsqueda para la poda alfa-beta.

Considerando el rbol de bsqueda de la figura 3.21, supongamos que un nodo terminal se evala tan pronto como ste es generado y que se propague su valor en cuanto se pueda. Despus de examinar a F, sabemos que el oponente tiene garantizado un tanteo de -5 o menos en C. Pero, como tenemos garantiza-do un tanteo de 3 en A si nos movemos por B, no necesitamos explorar el nodo G. Naturalmente, el podar un nodo puede parecer que no justifique el gasto de grabar los lmites y examinarlos, pero si estuvisemos explorando un rbol de 6 niveles, entonces no slo habramos eliminado un nodo nico sino un rbol entero de tres niveles de profundidad. Esta estrategia modificada se llama poda alfa-beta. Requiere el manteni-miento de dos valores umbrales: uno que representa la cota inferior del valor que puede

114

asignarse en ltimo trmino a un nodo maximizante, que llamaremos ALFA, y otro que represente la cota superior que puede asignarse a un nodo minimizante, que llamaremos BETA.

A Capa maximizante

Capa minimizante

(3) D

E (5) F

H (4)

Capa maximizante

J (5) M (7) N (8)

Capa minimizante K (0) L (7)

Fig. 3.22. Atajos alfa-beta.

Al realizar la bsqueda representada en la figura 3.22, se explora el rbol entero encabezado por B, y descubrimos que en A podemos esperar un tanteo de 3 como mnimo (ALFA=3). Cuando este valor ALFA se pasa a F nos permite podar L. Veamos por qu. Despus de examinar a K, vemos que I proporciona un tanteo mximo de 0, lo que significa que F produce un mnimo de 0, pero esto es menor que el valor ALFA de 3, por lo que no necesitamos explorar ms ramas de I. El jugador maximizante sabe que no debe elegir C e I a partir de C, pues ir por B es mejor. Despus se examina J que produce un valor de 5 y se le asigna a F, ya que 5 > 0. Este valor se convierte en el valor BETA del nodo C y nos garantiza que el valor de C ser 5 o menos. A continuacin se expande G y se examina primero M

115

con un valor de 7. Pero ahora se compara 7 con el valor BETA. Como es mayor y el jugador que tiene el turno del nodo C est tratando de minimizar, entonces ese jugador no elegir G, que conduce a un tanteo de 7 como mnimo, puesto que puede irse por F. Por tanto, no es necesario explorar ninguna de las otras ramas de G. Esta reduccin en el esfuerzo de la bsqueda fue alcanzada manteniendo las pistas de las cotas sobre los valores propagados. En general, como los sucesores de un nodo van produciendo nuevos valores, las cotas pueden ser modificadas, pero: - los valores ALFA de los nodos MAX no pueden decrecer, y - los valores BETA de los nodos MIN no pueden crecer. Debido a estas restricciones podemos enunciar las reglas siguientes para podar la bsqueda: a) Puede podarse debajo de cualquier nodo MIN que tenga un valor BETA menor o igual al valor ALFA de sus nodos MAX padres. El valor final propagado de este nodo MIN ser entonces el valor BETA. Este valor puede no ser el mismo que el obtenido por una bsqueda MINIMAX completa, pero su uso trae por consecuencia que se seleccione el mismo mejor movimiento. b) Puede podarse debajo de cualquier nodo MAX que tenga un valor ALFA mayor o igual al valor BETA de cualquiera de sus nodos MIN padres. El valor final propagado de este nodo MAX ser entonces el valor ALFA.

Cuando la bsqueda se interrumpe por la regla a) se dice que ocurri un corte alfa. Si, por el contrario, fue por la regla b) se dice que ocurri un corte beta. Empleando el procedimiento alfa-beta siempre se realiza un movimiento que es tan bueno como podra haber sido encontrado por el procedimiento MINIMAX, buscando a la misma profundidad pero realizando mucha menos bsqueda. Para ejecutar una poda alfa-beta, al menos alguna parte del rbol de bsqueda tiene que ser generado a la profundidad mxima, porque los valores ALFA y BETA se basan en los valores estticos de los nodos terminales. Por eso, algn tipo de bsqueda primero en profundidad se emplea usualmente al utilizar este procedimiento. Adems, la cantidad de cortes que pueden ser hechos durante una bsqueda depende del grado en que los valores ALFA y BETA iniciales aproximen los valores propagados finalmente. El valor final propagado del nodo inicial es idntico al valor esttico de alguno de los nodos terminales. Si este nodo terminal es el primero que se alcanza en la bsqueda primero en profundidad, la cantidad de cortes sera mxima, lo cual provoca que se generen y evalen una cantidad mnima de nodos hojas. En este procedimiento el nmero de hojas estticamente evaluadas es

116

aproximadamente 2bd/2, donde b es el factor de ramificacin y d la profundidad del rbol de bsqueda. Si utiliza MINIMAX, hay que evaluar todas las bd hojas. Por lo tanto, utilizando el procedimiento alfa-beta, podemos explorar el doble de la profundidad del rbol con el mismo nmero de evaluaciones. Si el orden de las ramas del rbol fuera, exactamente, el inverso del correcto, entonces el procedimiento alfa-beta no ahorrara nada.

Una manera de implementar este procedimiento es la siguiente: Entrada: Posicin actual, el jugador que le toca jugar, ya sea MIN o MAX, ALFA, BETA, el nivel actual de bsqueda (NIVEL) y la profundidad mxima de bsqueda (MAXPROF). Salida: La evaluacin esttica de la posicin actual. 1) Si NIVEL = MAXPROF, entonces calcular la funcin de evaluacin esttica en la posicin actual y RETORNAR EL RESULTADO. 2) Si al jugador MIN le toca jugar, entonces: a) Generar una lista de Sucesores de la posicin actual. b) Si ALFA > BETA o Sucesores est vaca, entonces TERMINAR y RETORNAR BETA (poda ALFA). c) BETAc:= ALFA-BETA(Sucesores[1], MAX, ALFA, BETA, NIVEL + 1) d) BETA:= mn(BETA,BETAc) e) Eliminar el primer elemento de la lista Sucesores e ir al paso 2b). 3) Si al jugador MAX le toca jugar, entonces: a) Generar una lista de Sucesores de la posicin actual. b) Si ALFA > BETA o Sucesores est vaca, entonces TERMINAR y RETORNAR ALFA (poda BETA). c) ALFAc:= ALFA-BETA(Sucesores[1], MIN, ALFA, BETA, NIVEL + 1) d) ALFA:= mx(ALFA,ALFAc) e) Eliminar el primer elemento de la lista Sucesores e ir al paso 3b).

Una implementacin de este procedimiento en PROLOG puede verla en [Bra86].

117

3.6.5. Refinamientos adicionales.

Adems de la poda alfa-beta existen otros refinamientos del procedimiento MINIMAX que mejoran su rendimiento: esperando el reposo, bsqueda secundaria y usar movimientos de libro.

Esperando el reposo Consideremos el rbol de la figura 3.23 y supongamos que, al expandir el nodo B, obtenemos la figura 3.24. Nuestra estimacin del nodo B cambi drs-ticamente, lo cual pudiera suceder, por ejemplo, en medio de un intercambio de piezas. Al iniciar dicho intercambio la situacin del oponente ha mejorado. Si nos detenemos ah, decidiremos que B no es un buen movimiento. Para asegurarnos de que tales medidas a corto plazo no influyan indebidamente en nuestra eleccin, deberamos continuar la bsqueda hasta que no ocurra un cambio tan drstico de un nivel al siguiente. A esto se le llama esperar el reposo. As podra obtenerse el rbol de la figura 3.25, donde B vuelve a ser un buen movimiento, pues ya se ha realizado la otra mitad del intercambio de piezas.

(6) B

C (0)

Fig. 3.23. Situacin inicial.

(-4) B

C (0)

118

(0) E

F (-4)

Fig. 3.24. Situacin despus de expandir el nodo B.

A Capa maximizante

(6) B

C (0)

Capa minimizante

(6) E

F (7)

Capa maximizante

(5) G (6) H

I (7) J (6)

Fig. 3.25. Situacin obtenida al esperar el reposo.

Bsqueda secundaria Otra forma de mejorar MINIMAX es realizar una doble comprobacin del movimiento elegido, para asegurarnos de que no haya una trampa escondida unos cuantos movimientos ms adelante de los que explor la bsqueda original. Supongamos que elegimos un rbol de juego a profundidad 6 y escogemos un movimiento. Aunque habra sido costoso explorar el rbol completo a profundidad 8, no lo es buscar 2 niveles ms en la nica rama escogida, para asegurarnos de que es realmente buena. Esta tcnica se llama bsqueda secundaria.

119

Usar movimientos de libro En ajedrez, tanto la apertura como los finales, estn altamente estilizados. El rendimiento de un programa puede mejorarse considerablemente si se le proporciona una lista de movimientos, llamados movimientos de libro, que deberan realizarse en dichos casos. Usando esta estrategia, conjuntamente con MINIMAX para el medio juego, se obtienen programas muy eficientes.

3.6.6. Limitaciones de MINIMAX.

A pesar de todos los refinamientos estudiados, el procedimiento MINIMAX tiene las siguientes limitaciones: - Susceptible del efecto horizonte. Supongamos, por ejemplo, que hacemos un intercambio de piezas en donde el oponente necesitar dos movimientos para capturar nuestra pieza. En su turno es casi seguro que el oponente realizar el primero de estos movimientos. Pero en nuestro turno podemos realizar un ataque en algn otro lugar y el oponente puede respondernos sin completar el intercambio de piezas y as sucesivamente, durante varias jugadas. Si la bsqueda se detiene en ese punto, nunca notaremos que la prdida de una pieza nuestra es inevitable. Aunque la bsqueda hasta el reposo suele ayudarnos a evitar esto, an es posible, dada la profundidad finita de cualquier bsqueda, arrastar algo importante ms all del horizonte, donde nunca sea notado. - Se basa principalmente en el supuesto de que el oponente siempre elegir el movimiento ptimo. Supongamos que estamos perdiendo la partida y que debemos elegir entre dos movimientos, uno de los cuales es ligeramente menos malo que el otro. Si realizando el movimiento ms malo es ms probable que el oponente cometa un error, nuestra jugada se convertira en una muy buena. En situaciones similares es mejor correr el riesgo de que el oponente cometa el error. Sin embargo, en este caso el procedimiento MINIMAX no elegir el movimiento deseado por nosotros. Para tomar correctamente estas decisiones, es importante tener acceso a un modelo del estilo de juego individual del oponente, de forma que pueda estimarse la probabilidad de los diversos errores que ste pudiera cometer. Pero esto es muy difcil de proporcionar.

EJERCICIOS PROPUESTOS

120

1- Sea el problema del mundo de bloques mostrado en la figura 3.26. Suponga que se tiene definido el operador MOVER( x,y) donde x es un bloque y y puede ser un bloque o la mesa. a) Represente el espacio de estados. b) Cul es el recorrrido de la bsqueda primero en profundidad?. c) Cul es el recorrido de la bsqueda primero a lo ancho?.

Estado inicial

Estado final

Fig. 3.26. Un problema del mundo de bloques.

2- Trazar la ejecucin del procedimiento generar del enfoque guiado por datos cuando se intenta determinar si N es divisible por 2 dadas las cuatro reglas mostradas en la figura 3.9 y la B.D. inicial que contiene los hechos N es divisible por 10 y N es divisible por 12.

3- Trazar la ejecucin del procedimiento validar del enfoque guiado por objetivos cuando se intenta determinar si N es divisible por 2 dadas las cuatro reglas mostradas en la figura 3.9 y la B.D. inicial que contiene los hechos N es divisible por 10 y N es divisible por 12.

4- Supongamos que los tres primeros pasos de la ejecucin del algoritmo A * proporcionan la situacin mostrada en la figura 3.27, donde A+B significa que el valor de g* en ese nodo es A y el valor de h* es B. a) Qu nodo se expandir en el prximo paso?.

121

b) Podemos garantizar que se encontrar la mejor solucin?.

Paso 1

Paso 2

(1+4) B

C (1+3)

(1+4) B

C (1+3)

D (2+4) Paso 3

(1+4) B

C (1+3)

(2+2) E

D (2+4)

Fig. 3.27. Tres primeros pasos del algoritmo A*.

5- Supongamos que tenemos un problema que queremos resolver usando un

122

proce-dimiento heurstico de bsqueda por el mejor nodo. Necesitamos decidir si representarlo como rbol o como grafo. Supongamos que sabemos que, en promedio, cada nodo distinto se generar A veces durante el proceso de bsqueda. Sabemos tambin que si usamos un grafo nos tomar, en promedio, la misma cantidad de tiempo el comprobar un nodo para ver si ya ha sido generado, que el que toma procesar B nodos si no se realiza ninguna comprobacin. Cmo podemos decidir si usar un grafo o un rbol?.

6- Consideremos el rbol de juego mostrado en la figura 3.28. Supongamos que el jugador A es maximizante. a) Qu movimiento debera elegir? b) Qu nodos no hara falta examinar usando la poda alfa-beta?

Fig. 3.28. Arbol de juego del ejercicio 6.

7- Dos jugadores estn frente a una pila de objetos. El primer jugador divide la pila original en dos pilas que no pueden tener la misma cantidad de elementos. Cada

123

jugador alternadamente hace lo mismo. El juego contina hasta que todas la pilas tengan uno o dos objetos, pues en este punto se hace imposible continuar. El jugador que primero no pueda jugar es el perdedor. a) Construya el rbol de juego considerando que la pila inicial tiene 7 objetos. b) Si MIN es el primero en jugar, muestre cmo independientemente de lo que ste haga en el transcurso del juego, MAX siempre gana. c) Es la situacin anterior cierta para cualquier cantidad de objetos en la pila inicial? d) Defina una funcin de evaluacin esttica para este juego. e) Aplique los procedimientos MINIMAX y ALFA-BETA al juego.

8- Consideremos el sistema tipo STRIPS al que se le proporciona el conjunto de operadores siguientes: PASAR-EXAMEN Precondicin y Suprimir: IGUAL( grado,x) Aadir: DORMIR-TARDE IGUAL(grado,x-10) ESCRIBIR-ARTICULO Precondicin: IGUAL( grado,x) Suprimir: IGUAL( grado,x) DORMIR-TARDE Aadir: IGUAL(grado,x+50) Tambin se tienen los siguientes axiomas acerca de su universo: MAYOR(grado,80) CAPAZ-DE-GRADUARSE MENOR(grado,80) CAPAZ-DE-GRADUARSE

Supongamos que este sistema est intentando, dada la condicin inicial grado = 70, satisfacer la meta DORMIR-TARDE CAPAZ-DE-GRADUARSE. Cmo podramos resolverlo mediante el enfoque de planificacin usando un conjunto de metas?.

124

125

Potrebbero piacerti anche